Message 1 of 5
Overlap With Trimming Lines
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
So i am currently using the code below and it creates a new line between overlapping lines but i also need to trim the over lapping lines too can someone help me modify it
Example:
Line one starts from 0 to 5
Line two starts from 3 to 8
Make line one 0 to 3
Makes new line 3 to 5
Make line two 5 to 8
(defun c:overlap ( / _line _online a e i l s ent ss1)
(defun _line ( a b )
(entmake (list '(0 . "LINE") (cons 10 a) (cons 11 b)))
)
(defun _online ( p a b )
(equal (+ (distance p a) (distance p b)) (distance a b) 1e-1)
)
(if (setq s (ssget "_A" '((0 . "LINE"))))
(progn
(repeat (setq i (sslength s))
(setq e (entget (ssname s (setq i (1- i))))
l (cons (list (cdr (assoc 10 e)) (cdr (assoc 11 e))) l)
)
)
(while (setq a (car l))
(foreach b (setq l (cdr l))
(princ l)
(cond
( (or
(and
(equal (car a) (car b) 1e-1)
(equal (cadr a) (cadr b) 1e-1)
)
(and
(equal (car a) (cadr b) 1e-1)
(equal (cadr a) (car b) 1e-1)
)
)
(apply '_line a)
)
( (and
(_online (car a) (car b) (cadr b))
(_online (car b) (car a) (cadr a))
(not (equal (car a) (car b) 1e-1))
)
(_line (car a) (car b))
)
( (and
(_online (car a) (car b) (cadr b))
(_online (cadr b) (car a) (cadr a))
(not (equal (car a) (cadr b) 1e-1))
)
(_line (car a) (cadr b))
)
( (and
(_online (cadr a) (car b) (cadr b))
(_online (car b) (car a) (cadr a))
(not (equal (cadr a) (car b) 1e-1))
)
(_line (cadr a) (car b))
)
( (and
(_online (cadr a) (car b) (cadr b))
(_online (cadr b) (car a) (cadr a))
(not (equal (cadr a) (cadr b) 1e-1))
)
(_line (cadr a) (cadr b))
)
)
)
)
)
)
(princ)
)