(SETQ MOT "1989 - SOFTWARE SIGNAL LINE - V.L.HELLESVIG (VER.1.0)") (DEFUN PSTIC (PT AG AG2) (STIC PT AG AG2 0.0 0.0) ) (DEFUN STIC (PT AG AG2 IDIS1 IDIS2) (SETQ SPT1 (POLAR PT AG IDIS1) SPT2 SPT1 SPT3 0.046875 ) (COMMAND "CIRCLE" SPT2 SPT3) (SETQ B1 (POLAR SPT2 ANG1 -0.1)) (SETQ B2 (POLAR SPT2 ANG1 0.1)) (COMMAND "BREAK" SPT2 "F" B1 B2) ) (DEFUN PLTS (DS) (SETQ RM1 (REM (/ (DISTANCE A B) 2) (ABS DS))) (IF (< RM1 (* 0.4 (ABS DS))) (SETQ NP (1- (FIX (/ (/ (DISTANCE A B) 2) 0.75)))) (SETQ NP (FIX (/ (/ (DISTANCE A B) 2) 0.75))) ) (WHILE (> NP 0) (SETQ PT2 (POLAR PT1 ANG1 DS)) (PSTIC PT2 ANG1 ANG2) (SETQ PT1 PT2) (SETQ NP (1- NP)) ) ) (DEFUN C:SOFTSIG () (SETQ NOECHO (GETVAR "CMDECHO") BMODE (GETVAR "BLIPMODE") PMODE (GETVAR "PICKBOX") A (GETPOINT "PICK POINT-") PTLIST (LIST A) ) (SETVAR "CMDECHO" 0) (SETVAR "PICKBOX" 0) (WHILE (/= A NIL) (SETQ A (GETPOINT "PICK NEXT POINT-") PTLIST (CONS A PTLIST) ) ) (SETQ PTLIST (REVERSE PTLIST) PTLEN (- (LENGTH PTLIST) 2) COUNT 0 ) (WHILE (/= COUNT PTLEN) (SETQ A (NTH COUNT PTLIST) B (NTH (1+ COUNT) PTLIST) ) (COMMAND "LINE" A B "") (SETQ ANG1 (ANGLE A B) PT1 (POLAR A ANG1 (/ (DISTANCE A B) 2)) RPT PT1 ) (COND ((< ANG1 (/ PI 4)) (SETQ ANG2 (+ ANG1 (/ PI 4))) ) ((AND (> ANG1 (/ PI 4)) (< ANG1 (/ (* 3 PI) 4))) (SETQ ANG2 (- ANG1 (/ PI 4))) ) ((AND (> ANG1 (/ (* PI 3) 4)) (< ANG1 (/ (* PI 5) 4))) (SETQ ANG2 (+ ANG1 (/ PI 4))) ) ((AND (> ANG1 (/ (* PI 5) 4)) (< ANG1 (/ (* PI 7) 4))) (SETQ ANG2 (- ANG1 (/ PI 4))) ) ((> ANG1 (/ (* PI 7) 4)) (SETQ ANG2 (+ ANG1 (/ PI 4))) ) ) (SETVAR "BLIPMODE" 0) (IF (>= (DISTANCE A B) 0.28125) (PROGN (PSTIC PT1 ANG1 ANG2) (PLTS 0.75) (SETQ PT1 RPT) (PLTS -0.75) ) ) (SETQ COUNT (1+ COUNT)) ) (SETVAR "BLIPMODE" BMODE) (SETVAR "CMDECHO" NOECHO) (SETVAR "PICKBOX" PMODE) (SETQ PT AG AG2 IDIS1 IDIS2 SPT1 SPT2 SPT3 ANG1 ANG2 B1 B2 RM1 NP A B PT1 CONT) (TERPRI) MOT )