;;;Place double-line pipe break symbol automatically by selecting outside walls. ;;;(uses PBRK.DWG) ;;; ;;; ;;; (DEFUN C:PBRKD (/ clayr bname aname snang omode entla ontla pt1 pt2 ept1a ept1b ept2a ept2b inlay brkp1 brkp2 blkro a b c s k angc perpd ) (setq old_cmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (setq old_osmode (getvar "osmode")) (setvar "osmode" 0) (SETQ clayr (GETVAR "clayer") pbrkname "pbrk" pbrkname2 "pbrk2" aname (STRCAT pbrkname ".dwg") aname2 (STRCAT pbrkname2 ".dwg") ) ;_ end of SETQ (IF (AND (OR (FINDFILE aname) pbrkname) (OR (FINDFILE aname2) pbrkname2) ) ;_ end of and (WHILE (SETQ entla (NENTSEL "\nPick left outside wall of pipe ")) (IF (AND (= "LINE" (CDR (ASSOC 0 (ENTGET (CAR entla))))) (SETQ ontla (NENTSEL "\nPick right outside wall of pipe ")) (= "LINE" (CDR (ASSOC 0 (ENTGET (CAR ontla))))) (SETQ eopt1a (GETPOINT "\nPick point on left inside wall of pipe ")) ) ;_ end of AND (PROGN (SETQ pt1 (CADR entla) pt2 (CADR ontla) opt1 (CADR entlb) ept1a (CDR (ASSOC 10 (ENTGET (CAR entla)))) ept1b (CDR (ASSOC 11 (ENTGET (CAR entla)))) ept2a (CDR (ASSOC 10 (ENTGET (CAR ontla)))) ept2b (CDR (ASSOC 11 (ENTGET (CAR ontla)))) inlay (CDR (ASSOC 8 (ENTGET (CAR entla)))) eopt1b (POLAR eopt1a (ANGLE ept1a ept1b) 100) ) ;_ end of SETQ (IF (> (DISTANCE pt1 ept1a) (DISTANCE pt1 ept1b)) (SETQ brkp1 ept1b brkp2 ept1a blkro (/ (* (ANGLE ept1a ept1b) 180.00) PI) ) ;_ end of setq (SETQ brkp1 ept1a brkp2 ept1b blkro (/ (* (ANGLE ept1b ept1a) 180.00) PI) ) ;_ end of setq ) ;_ end of IF (SETQ a (DISTANCE brkp1 ept2a) b (DISTANCE ept2a ept2b) c (DISTANCE ept2b brkp1) s (/ (+ a b c) 2.0) k (SQRT (/ (* (- s a) (- s b) (- s c)) s)) angc (* (ATAN (/ k (- s c))) 2) perpd (* (SIN angc) a) ) ;_ end of SETQ (SETQ brkop1 (INTERS eopt1a eopt1b brkp1 (POLAR brkp1 (+(ANGLE brkp1 brkp2)(* PI 0.5))perpd) NIL) perpdo (- perpd (* 2.00 (DISTANCE (LIST (CAR brkop1) (CADR brkop1)) (LIST (CAR brkp1) (CADR brkp1)) ) ;_ end of DISTANCE ) ;_ end of * ) ;_ end of - ) ;_ end of SETQ (PROGN (COMMAND ".layer" "s" inlay "" ".insert" pbrkname brkp1 perpd perpd blkro ) ;_ end of COMMAND (COMMAND ".layer" "s" inlay "" ".insert" pbrkname2 brkop1 perpdo perpdo blkro ) ;_ end of COMMAND ) ;_ end of PROGN ) ;_ end of PROGN (PROMPT "\nEntities were not lines or were not both selected. " ) ;_ end of prompt ) ;_ end of IF ) ;_ end of WHILE (PROMPT (STRCAT "\nBlock " pbrkname ", " pbrkname2 " or File " aname ", " aname2 " not found! \n" ) ;_ end of STRCAT ;_ end of STRCAT ;_ end of strcat ) ;_ end of prompt ) ;_ end of IF (SETVAR "clayer" clayr) (setvar "cmdecho" old_cmdecho) (setvar "osmode" old_osmode) (COMMAND) ) ;_ end of DEFUN ;|«Visual LISP© Format Options» (72 2 40 2 T "end of " 60 9 2 0 0 T T nil T) ***Don't add text below the comment!***|;