0 Members and 1 Guest are viewing this topic.
(defun getlength (ent / objPoly len) (if (wcmatch (strcase (cdr (assoc 0 (entget (car ent))))) "*LINE,ARC") (setq objPoly (vlax-ename->vla-object (car ent)) len (vlax-curve-getdistAtParam objPoly (vlax-curve-getEndParam objPoly)) ) ) )(defun c:length ( / ent) (if (setq ent (entsel "\nSelect object to obtain length for: ")) (if (setq len (getlength ent)) (princ (strcat "\nObject length is: " (rtos len))) (princ "\nObject doesn't have a length.") ) (princ "\nNothing selected, exiting...") ) (princ) )
(defun c:PLLEN (/ a ar cl cn i l la le obj ss) (cond ((setq ss (entsel "\nPick any object on the required layer: ")) (setq la (cdr (assoc 8 (entget (car ss))))) (mapcar 'set '(ar le cn i)'((0 0)(0 0) 0 0)) (cond ((setq ss (ssget "X" (list '(0 . "*POLYLINE") (cons 8 la) '(-4 . "<") '(70 . 8))) ) (repeat (sslength ss) (setq obj (vlax-ename->vla-object (ssname ss i)) a (vlax-curve-getArea obj) l (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)) cl (vlax-curve-isClosed obj) ar (mapcar '+ ar (if cl (list a 0)(list 0 a))) le (mapcar '+ le (if cl (list l 0)(list 0 l))) cn (+ cn (if cl 1 0)) i (1+ i) ) ) (mapcar 'princ (list "\nTotal length: " (apply '+ le) " (closed: " (car le) ")\nTotal area: " (apply '+ ar) " (closed: " (car ar) ")\n" (sslength ss) " plines on layer " la " (closed: " cn ")") ) ) ((princ "\nNone found")) ) ) ) (princ))