Sorry there was little mistake when there were no lwpolyline objects... I've corrected this... In addition to this here is my new lines23dpoly based on same algorithm :
(defun c:l3dpl ( / CHOICE1 CHOICE2 ENENT ENPT ENPTT ENT K NXTENTEN NXTENTST OSM PTLST SEPT SEPTN SEPTS SS SSS STENT STPT )
(vl-cmdf "_.UCS" "w")
(setq osm (getvar 'osmode))
(setvar 'osmode 0)
(prompt "\nSelect all connected lines")
(setq ss (ssget '((0 . "LINE")) ))
(setq sss (ssadd))
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(ssadd ent sss)
)
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq stpt (cdr (assoc 10 (entget ent))))
(setq enpt (cdr (assoc 11 (entget ent))))
(setq septs (cons stpt septs))
(setq septs (cons enpt septs))
)
(setq sept septs)
(defun chkduppt (pt lst / chk)
(foreach ptt lst
(if (equal pt ptt 1e-6) (setq chk (cons T chk)))
)
chk
)
(foreach pt septs
(if (eq (length (chkduppt pt septs)) 2) (setq septn (cons pt septn)))
)
(foreach pt septn
(setq sept (vl-remove pt sept))
)
(if (eq sept nil) (setq sept (acet-list-remove-duplicates septs 1e-6)))
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq stpt (cdr (assoc 10 (entget ent))))
(if (equal stpt (car sept) 1e-6) (setq stent ent))
)
(if (eq stent nil)
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq enpt (cdr (assoc 11 (entget ent))))
(if (equal enpt (car sept) 1e-6) (setq enent ent))
)
)
(if stent
(progn
(setq ptlst (cons (cdr (assoc 10 (entget stent))) ptlst))
(setq ptlst (cons (cdr (assoc 11 (entget stent))) ptlst))
(setq enpt (cdr (assoc 11 (entget stent))))
(ssdel stent ss)
)
(progn
(setq ptlst (cons (cdr (assoc 11 (entget enent))) ptlst))
(setq ptlst (cons (cdr (assoc 10 (entget enent))) ptlst))
(setq enpt (cdr (assoc 10 (entget enent))))
(ssdel enent ss)
)
)
(while (/= (sslength ss) 0)
(setq nxtentst nil)
(setq nxtenten nil)
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq stpt (cdr (assoc 10 (entget ent))))
(if (equal enpt stpt 1e-6) (setq nxtentst ent))
)
(if nxtentst nil
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq enptt (cdr (assoc 11 (entget ent))))
(if (equal enpt enptt 1e-6) (setq nxtenten ent))
)
)
(if nxtentst
(progn
(setq ptlst (cons (cdr (assoc 10 (entget nxtentst))) ptlst))
(setq ptlst (cons (cdr (assoc 11 (entget nxtentst))) ptlst))
(setq enpt (cdr (assoc 11 (entget nxtentst))))
(ssdel nxtentst ss)
)
(progn
(setq ptlst (cons (cdr (assoc 11 (entget nxtenten))) ptlst))
(setq ptlst (cons (cdr (assoc 10 (entget nxtenten))) ptlst))
(setq enpt (cdr (assoc 10 (entget nxtenten))))
(ssdel nxtenten ss)
)
)
)
(setq ptlst (acet-list-remove-duplicates ptlst 1e-6))
(initget 1 "Open Close")
(setq choice1 (getkword "\nIs 3dpolyline opened or closed (Open/Close) : "))
(if (eq choice1 "Open")
(progn
(command "_.3dpoly")
(foreach pt ptlst
(command pt)
)
(command "")
)
(progn
(command "_.3dpoly")
(foreach pt ptlst
(command pt)
)
(command "c")
)
)
(initget 1 "Keep Delete")
(setq choice2 (getkword "\nDo you want to keep lines, or do you want me to delete them (Keep/Delete) : "))
(if (eq choice2 "Delete")
(command "erase" sss "")
)
(vl-cmdf "_.UCS" "p")
(setvar 'osmode osm)
(princ)
)
Sincerely, M.R.