La rutina, tal como está, no suma correctamente. Lo que hace es sumar la longitud del primer objeto seleccionado tantas veces como objetos se han seleccionado. Para que funcione bien tiene ser.
Code:
(defun c:sll () (sum-long-lin) (princ))
(defun sum-long-lin (/ ss c i sl e vlae l)
(vl-load-com)
(setq ss (ssget '((0 . "LINE,ARC,LWPOLYLINE,POLYLINE")))
c (sslength ss)
i 0
sl 0
)
(repeat c
(setq e (ssname ss i)
vlae (vlax-ename->vla-object e)
l (vlax-get vlae 'length)
sl (+ l sl)
i (+ i 1)
)
)
(princ "\nsuma total de longitudes: ")
(princ sl)
)
Le faltaba i (+ i 1)
Tampoco funciona si se selecciona un arco