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)
