Comment créer un fichier Excel avec la liste des centres de gravité d'une sélection de solides

Bonjour, récemment a été posée une question sur les forums AutoCAD Autodesk de génération d’une petite routine Lisp extrêmement simple qui consiste à sélectionner des 3DSOLID puis à exporter leur centre de gravité dans un fichier Excel.

C’est typiquement la chose qui prend environ une minute à générer avec l’assistant AutoCAD expert IA de Dessein-Tech.

(defun c:EXPORTSOLID (/ ss i ename vla-obj centroid file path)
  (vl-load-com)
  (princ "\nSélectionnez les solides 3D à exporter...")
  
  ;; 1. Sélection filtrée sur les objets 3DSOLID
  (if (setq ss (ssget '((0 . "3DSOLID"))))
    (progn
      ;; 2. Demande de l'emplacement du fichier
      (setq path (getfiled "Enregistrer l'export Excel" "Export_Centres_Gravite.csv" "csv" 1))
      (if path
        (progn
          (setq file (open path "w"))
          ;; En-tête du fichier CSV (Séparateur ;)
          (write-line "Nom;Centre X;Centre Y;Centre Z" file)
          
          (setq i 0)
          (repeat (sslength ss)
            (setq ename (ssname ss i))
            (setq vla-obj (vlax-ename->vla-object ename))
            
            ;; 3. Extraction du centre de gravité (Centroid)
            (setq centroid (vlax-safearray->list (vlax-variant-value (vla-get-centroid vla-obj))))
            
            ;; 4. Écriture de la ligne avec conversion du point en virgule pour Excel FR
            (write-line 
              (strcat 
                "Solide_" (itoa (1+ i)) ";"
                (vl-string-translate "." "," (rtos (car centroid) 2 4)) ";"
                (vl-string-translate "." "," (rtos (cadr centroid) 2 4)) ";"
                (vl-string-translate "." "," (rtos (caddr centroid) 2 4))
              )
              file
            )
            (setq i (1+ i))
          )
          (close file)
          (princ (strcat "\nSuccès : " (itoa i) " solides exportés vers " path))
        )
        (princ "\nOpération annulée : aucun fichier créé.")
      )
    )
    (princ "\nErreur : Aucun objet 3DSOLID n'a été sélectionné.")
  )
  (princ)
)

EXPORTSOLID.lsp (1,7 Ko)