- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Choose lines with layer 11. Choose lines with layer 12, if distance <0.1 will change to layer 15 and points at both sides will draw a line with layer 44. Thank you for your help!
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:AD()
(setq ss1 (ssget "_:L" '((0 . "LINE") (8 . "11")))) ;;
(setq ss2 (ssget "_:L" '((0 . "LINE") (8 . "12")))) ;;
(if (or (not ss1) (not ss2))
(progn
()
(return)
)
)
(setq distThreshold 0.1)
(setq i 0)
(repeat (sslength ss1)
(setq line1 (ssname ss1 i))
(setq entityType (cdr (assoc 0 (entget line1))))
(cond
((= entityType "LINE")
(setq pt1a (cdr (assoc 10 (entget line1))))
(setq pt1b (cdr (assoc 11 (entget line1))))
))
(setq j 0)
(repeat (sslength ss2)
(setq line2 (ssname ss2 j))
(setq entityType2 (cdr (assoc 0 (entget line2))))
(cond
((= entityType2 "LINE")
(setq pt2a (cdr (assoc 10 (entget line2))))
(setq pt2b (cdr (assoc 11 (entget line2))))
))
(if (and pt1a pt1b pt2a pt2b)
(progn
(setq mid1 (list (/ (+ (car pt1a) (car pt1b)) 2) (/ (+ (cadr pt1a) (cadr pt1b)) 2)))
(setq mid2 (list (/ (+ (car pt2a) (car pt2b)) 2) (/ (+ (cadr pt2a) (cadr pt2b)) 2)))
(setq dist (distance mid1 mid2))
(setq dist1 (distance pt1a pt2a))
(setq dist2 (distance pt1b pt2b))
(if (< dist distThreshold)
(progn
;;;;;;;
(if (or (> dist1 distThreshold) (> dist2 distThreshold))
(progn
(entmake (list (cons 0 "LINE") (cons 10 pt1a) (cons 11 pt2a) (cons 8 "44")))
(entmake (list (cons 0 "LINE") (cons 10 pt1b) (cons 11 pt2b) (cons 8 "44")))
)
)
))))
(setq j (1+ j))
)
(setq i (1+ i))
)
(princ)
)
Solved! Go to Solution.
Link copied