(DEFUN c:plints () (SETQ plss (SSGET "x" '((0 . "LWPOLYLINE")))) (SETQ plsslen (SSLENGTH plss)) (SETQ plstep 0) (SETQ proxint 5) (SETQ pllst NIL) (SETQ proxint (ureal 1 "" "Enter max separation " proxint)) (PRINC (STRCAT "\nProcessing " (ITOA plsslen) " LWPOLYLINEs")) (PRINC) (WHILE (< plstep plsslen) (SETQ newplent NIL) (IF (AND (> plstep 0) (EQ (REM plstep 10) 0)) (PROGN (PRINC ".") (PRINC)) ) ;_ end of IF (SETQ curplent (ENTGET (SSNAME plss plstep))) (SETQ plptlst NIL) (FOREACH n curplent (IF (EQ (CAR n) 10) (PROGN (SETQ plptlst (APPEND plptlst (LIST (CDR n))))) ) ;_ end of if ;;; (princ "\n") ;;; (princ n) ;;; (princ) ) ;_ end of foreach (SETQ pllst (APPEND pllst (LIST plptlst))) (SETQ plstep (1+ plstep)) ) ;_ end of WHILE (SETQ cnt 0 bglst nil seglst nil ) ;_ end of setq (MAPCAR '(LAMBDA (x) (PROGN (WHILE (< cnt (- (LENGTH x) 2)) (SETQ seglst (APPEND seglst (LIST (LIST (NTH cnt x) (NTH (1+ cnt) x))))) (SETQ cnt (1+ cnt)) ) ;_ end of while (SETQ cnt 0) (SETQ bglst (APPEND bglst (LIST seglst)) seglst nil ) ;_ end of setq (PRINC) ) ;_ end of progn ) ;_ end of lambda pllst ) ;_ end of mapcar (SETQ intlst nil cnt 0 ) ;_ end of setq (PRINC "\nFinding intersections. ") (PRINC) (MAPCAR '(LAMBDA (y) (FOREACH n y (WHILE (< cnt (LENGTH bglst)) (IF (NOT (EQ (NTH cnt bglst) y)) (FOREACH o (NTH cnt bglst) (IF (SETQ inty (INTERS (POLAR (CAR n) (ANGLE (CADR n) (CAR n)) proxint) (POLAR (CADR n) (ANGLE (CAR n) (CADR n)) proxint) (CAR o) (CADR o) T ) ;_ end of INTERS ) ;_ end of SETQ (SETQ intlst (APPEND intlst (LIST inty))) ) ;_ end of if ) ;_ end of foreach ) ;_ end of if (SETQ cnt (1+ cnt)) ) ;_ end of while (SETQ cnt 0) ) ;_ end of foreach ) ;_ end of lambda bglst ) ;_ end of mapcar (PRINC "...DONE!\nBreaking LWPOLYLINEs at intersection points. ") (c:plxbrk) (PRINC "...DONE! ") (PRINC) ) ;_ end of defun (defun c:plxbrk () (foreach n intlst (setq brkpt n) (setq brkss (ssget "cp" (list (polar brkpt 0 10) (polar brkpt (* PI 0.5) 10) (polar brkpt PI 10) (polar brkpt (* PI 1.5) 10) ) '((0 . "LWPOLYLINE")) ) ) (setq brksslen (sslength brkss)) (setq brkstep 0) (while (< brkstep brksslen) (setq lwplename (ssname brkss brkstep)) (command ".break" lwplename brkpt "@") (setq brkstep (1+ brkstep)) ) ) (princ) ) ;_ end of defun ;|«Visual LISP© Format Options» (120 2 15 2 T "end of " 100 9 2 0 nil nil nil T T) ;*** DO NOT add text below the comment! ***|;