This wil work for lines, polylines, splines, arcs, and circles.
Code:
(defun c:ll (/ ss len ssn typ llens str)
(defun llen (en)
(vla-get-length (vlax-ename->vla-object en))
)
(defun alen (en)
(vla-get-arclength (vlax-ename->vla-object en))
)
(defun get_length (ent / obj)
(setq obj (vlax-ename->vla-object ent))
(vlax-curve-getDistAtParam obj (vlax-curve-getendparam obj))
)
(and (setq ss (ssget '((0 . "*LINE,ARC,CIRCLE"))))
(repeat (setq len (sslength ss))
(setq len (1- len)
ssn (ssname ss len)
typ (cdr (assoc 0 (entget ssn)))
)
(cond
((= typ "SPLINE")
(setq llens (cons (get_length ssn) llens))
)
((wcmatch typ "*LINE") (setq llens (cons (llen ssn) llens)))
((= typ "ARC") (setq llens (cons (alen ssn) llens)))
(T (setq llens (cons (get_length ssn) llens)))
)
)
(setq str (strcat "\n"
(itoa (length llens))
" line length(s) = "
(rtos (apply '+ llens) 4)
)
)
(princ str)
(alert str)
)
(princ)
)