(SETQ MOT "1989 - PNEUMATIC SIGNAL LINE - V.L.HELLESVIG (VER.1.0)") (DEFUN PSTICK (PT AG AG2) (STICK PT AG AG2 0.025 0.08) (STICK PT AG AG2 -0.025 0.08) ) (DEFUN STICK (PT AG AG2 IDIS1 IDIS2) (SETQ SPT1 (POLAR PT AG IDIS1) SPT2 (POLAR SPT1 AG2 IDIS2) SPT3 (POLAR SPT1 AG2 (- 0 IDIS2)) ) (COMMAND "LINE" SPT2 SPT3 "") ) (DEFUN PLPTS (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)) (PSTICK PT2 ANG1 ANG2) (SETQ PT1 PT2) (SETQ NP (1- NP)) ) ) (DEFUN C:PNEUMSIG () (SETQ NOECHO (GETVAR "CMDECHO") BMODE (GETVAR "BLIPMODE") A (GETPOINT "PICK POINT-") PTLIST (LIST A) ) (SETVAR "CMDECHO" 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 (PSTICK PT1 ANG1 ANG2) (PLPTS 0.75) (SETQ PT1 RPT) (PLPTS -0.75) ) ) (SETQ COUNT (1+ COUNT)) ) (SETVAR "BLIPMODE" BMODE) (SETVAR "CMDECHO" NOECHO) (SETQ PT AG AG2 IDIS1 IDIS2 SPT1 SPT2 SPT3 ANG1 ANG2 B1 B2 RM1 NP A B PT1 CONT) (TERPRI) MOT )