parallel lines into a single line
CADForums.net Forum Index CADForums.net
Discussion of AutoCAD and other CAD software.
 
 FAQFAQ   MemberlistMemberlist     RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 
Google
 
Web cadforums.net
parallel lines into a single line

 
Post new topic   Reply to topic    CADForums.net Forum Index -> Customization
Author Message
Guest






Posted: Sat May 28, 2005 12:10 am    Post subject: parallel lines into a single line Reply with quote

Found a script that will do the above but deletes the parallel lines.
I have tried to make it run without deleting the lines but nothing
has worked.
Any help is appreciated.

(defun avg2 (a b)
(/ (+ a b) 2.0))

;;singln - Replaces parallel lines with a single line.
(defun c:singln ( / ss e1 e2 ei ei2 p1 p2 p3 p4)
(and
(princ "\nSelect 2 parallel lines: ")
(setq ss (ssget (list (cons 0 "line"))))
(setq e1 (ssname ss 0))
(setq e2 (ssname ss 1))
(setq ei (entget e1))
(setq ei2 (entget e2))
(setq p1 (cdr(assoc 10 ei)))
(setq p2 (cdr(assoc 11 ei)))
(setq p3 (cdr(assoc 10 ei2)))
(setq p4 (cdr(assoc 11 ei2)))
(or
(< (distance p1 p3)(distance p1 p4))
(setq pt p3 p3 p4 p4 pt))
(entmod
(list
(cons -1 e1)
(cons 10 (mapcar 'avg2 p1 p3))
(cons 11 (mapcar 'avg2 p2 p4))))
(entdel e2))
(princ))

Back to top
Guest






Posted: Tue May 31, 2005 3:56 pm    Post subject: Re: parallel lines into a single line Reply with quote

Using the ENTMAKE function in place of the ENTMOD/ENTDEL functions will
place a third line between your parallel lines. Simply comment out the
lines from (entmod... to ...entdel e2)) and insert the (entmake
function. You'll have to gather more information from the original
selection set (e1 or e2) to have available the minimum values to create
the new entity. Consult the AutoLISP Reference in ACAD help for the
required information to create the entity.

Actually, this routine doesn't require the lines to be parallel. It
will place a LINE entity from the midpoint between the start point to
the midpoint between the end point of your two selections regardless of
length or angle.

jalw@excite.com wrote:
Quote:
Found a script that will do the above but deletes the parallel lines.
I have tried to make it run without deleting the lines but nothing
has worked.
Any help is appreciated.

(defun avg2 (a b)
(/ (+ a b) 2.0))

;;singln - Replaces parallel lines with a single line.
(defun c:singln ( / ss e1 e2 ei ei2 p1 p2 p3 p4)
(and
(princ "\nSelect 2 parallel lines: ")
(setq ss (ssget (list (cons 0 "line"))))
(setq e1 (ssname ss 0))
(setq e2 (ssname ss 1))
(setq ei (entget e1))
(setq ei2 (entget e2))
(setq p1 (cdr(assoc 10 ei)))
(setq p2 (cdr(assoc 11 ei)))
(setq p3 (cdr(assoc 10 ei2)))
(setq p4 (cdr(assoc 11 ei2)))
(or
(< (distance p1 p3)(distance p1 p4))
(setq pt p3 p3 p4 p4 pt))
(entmod
(list
(cons -1 e1)
(cons 10 (mapcar 'avg2 p1 p3))
(cons 11 (mapcar 'avg2 p2 p4))))
(entdel e2))
(princ))
Back to top
 
Post new topic   Reply to topic    CADForums.net Forum Index -> Customization All times are GMT
Page 1 of 1

 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum




Windows Server DSP VoIP Electronics New Topics
Powered by phpBB