;; | ---------------------------------------------------------------------------- ;; | PL_ArcPl2LinearPl ;; | ---------------------------------------------------------------------------- ;; | Function : Reconstructs a polyline list by replacing only all arc segments ;; | with linear segments of specified distance. ;; | Arguments: ;; | 'ename' - Entity name of polyline ;; | 'SegLen' - Linear Segment length ;; | Returns: ;; | A list of all points forming the polyline. This list is in UCS ;; | Updated : June 15, 2004 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun PL_ArcPl2LinearPl ( ename SegLen / vlist BlgLst nlist cnt len tmp param1 param2 NextPt pt Blg len1 oname ) (if #Verbose (princ "\nInside PL_ArcPl2LinearPl...") ) (setq vlist (PL_plist ename) BlgLst (PL_GetBulgeLst ename) nlist (list (car vlist)) cnt 0 len (length vlist) oname (vlax-ename->vla-object ename) ) (if #Verbose (princ ".") ) (setq tmp (strcat " of " (itoa len))) (if #Verbose (princ "\n") ) (foreach pt vlist (setq Blg (nth cnt BlgLst) cnt (1+ cnt) ) (if #Verbose (princ (strcat "\nProcessing vertices..." (itoa cnt) tmp)) ) (if (/= cnt 1) (setq nlist (cons pt nlist)) ) (if (/= cnt len) (progn (if (not (zerop Blg)) (progn (setq NextPt (nth cnt vlist) param1 (vlax-curve-getParamAtPoint oname pt) len1 (vlax-curve-getDistAtParam oname param1) len1 (+ len1 SegLen) param1 (vlax-curve-getParamAtDist oname len1) param2 (vlax-curve-getParamAtPoint oname NextPt) ) (if (not param1) (setq param1 param2) ) (while (< param1 param2) (setq pt (vlax-curve-getPointAtParam oname param1) nlist (cons pt nlist) len1 (+ len1 SegLen) param1 (vlax-curve-getParamAtDist oname len1) ) (if (not param1) (setq param1 param2) ) ) )) )) ) (princ "..done") (vlax-release-object oname) (reverse nlist) )