La très classique routine AutoLISP de cumul des longueurs des objets qui en ont une

Certes, c’est un grand classique et vous trouverez de multiples routines sur le web qui font cela. Voici celle de Dessein-Tech.

[!Note]
Cette routine a été créée avec l’assistant AutoCAD expert IA de Dessein-Tech.

Elle utilise les fonctions de la famille vlax-curve (Visual LISP), ce qui est la méthode la plus robuste pour obtenir la longueur précise de n’importe quel objet curviligne (Lignes, Polylignes, Arcs, Cercles, Splines, Ellipses), quelle que soit sa géométrie.

TotalLong.lsp (1,7 Ko)

(defun c:TotalLong (/ ss i ent obj len total)
  (vl-load-com) ; Chargement des extensions Visual LISP
  (setq total 0.0)

  (prompt "\nSélectionnez les objets (Lignes, Polylignes, Arcs, Cercles, Splines...) : ")
  
  ;; Filtre de sélection pour ne retenir que les objets pouvant avoir une longueur
  (if (setq ss (ssget '((0 . "LINE,LWPOLYLINE,POLYLINE,ARC,CIRCLE,ELLIPSE,SPLINE"))))
    (progn
      (setq i 0)
      (repeat (sslength ss)
        (setq ent (ssname ss i))
        (setq obj (vlax-ename->vla-object ent))
        
        ;; Calcul universel de la longueur via les fonctions courbes
        ;; On mesure la distance au paramètre de fin de l'objet
        (setq len (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)))
        
        (setq total (+ total len))
        (setq i (1+ i))
      )
      
      ;; Affichage du résultat
      (princ (strcat "\n--------------------------------------------------"))
      (princ (strcat "\nNombre d'objets traités : " (itoa (sslength ss))))
      (princ (strcat "\nLONGUEUR TOTALE : " (rtos total 2 2))) ;; 2 décimales
      (princ (strcat "\n--------------------------------------------------"))
      (alert (strcat "Longueur Totale : " (rtos total 2 2)))
    )
    (princ "\nAucun objet valide sélectionné.")
  )
  (princ)
)