Hi,
With your drawing, this code will correct the polylines. To be adapted if used in another drawing (ssget filter)
(vl-load-com)
(defun c:Correct3DPL ( / ss AcDoc Space nb n ename obj l_pt lay new_obj)
(setq ss (ssget "_X" '((0 . "POLYLINE") (67 . 0) (8 . "CTL_PNT") (66 . 1) (70 . 9))))
(cond
(ss
(setq
AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
Space
(if (= 1 (getvar "CVPORT"))
(vla-get-PaperSpace AcDoc)
(vla-get-ModelSpace AcDoc)
)
nb 0
)
(repeat (setq n (sslength ss))
(setq
ename (ssname ss (setq n (1- n)))
obj (vlax-ename->vla-object ename)
l_pt (vlax-get obj 'Coordinates)
lay (vlax-get obj 'Layer)
)
(cond
((eq (length l_pt) 12)
(vla-delete obj)
(setq new_obj (vlax-invoke Space 'Add3dPoly (cdddr l_pt)))
(vla-put-Closed new_obj :vlax-true)
(vla-put-Layer new_obj lay)
(setq nb (1+ nb))
)
)
)
(princ (strcat "\n" (itoa nb) " polylines corrected."))
)
)
(prin1)
)