Perplexity AutoLISP te donne des pistes:
Bonjour,
Pour créer et remplir un tableau dans AutoCAD® uniquement avec AutoLISP, sans passer par Excel, il faut utiliser les fonctions Visual LISP qui manipulent les objets TABLE AutoCAD® via ActiveX. Cela permet non seulement de créer le tableau avec vos données, mais aussi de le mettre en forme (polices, alignements, tailles de colonnes, en-têtes, etc.).
Voici les étapes clés à suivre :
Création du tableau
- Utiliser la méthode
AddTable
via l’objetModelSpace
de l’application ActiveX (Visual LISP). - Définir la position du tableau en spécifiant un point d’insertion.
- Spécifier le nombre de lignes et colonnes nécessaires selon vos données.
- Initialiser la taille des cellules, colonnes, et options comme bordures.
Remplissage des données
- Pour chaque cellule, utiliser la méthode
SetText
pour insérer la valeur désirée. - Les données déjà disponibles dans votre programme AutoLISP peuvent être parcourues en boucles et insérées dans chaque cellule.
- Vous pouvez aussi manipuler les propriétés de texte (gras, italique, alignement) cellule par cellule ou par plage.
Mise en forme du tableau
- Modifier la largeur des colonnes avec la méthode
SetColumnWidth
. - Modifier la hauteur des lignes (plus rare, on laisse souvent fixe).
- Appliquer des styles d’alignement (gauche, centre, droite) avec une propriété telle que
Alignment
. - Définir des fonds de cellule, couleurs de texte, polices via leurs propriétés.
- Ajouter ou enlever les bordures du tableau ou des cellules (edges).
Exemple simplifié de création et remplissage (Visual LISP et ActiveX)
(defun c:CreateTable ( / acadApp doc mSpace tbl row col textPts)
(setq acadApp (vlax-get-acad-object)) ; obtenir AutoCAD application
(setq doc (vla-get-ActiveDocument acadApp)) ; document actif
(setq mSpace (vla-get-ModelSpace doc)) ; ModelSpace
(setq textPts (vlax-3d-point 0 0 0)) ; point d’insertion
;; Créer un tableau de 5 lignes, 3 colonnes, cell size 3x5
(setq tbl (vla-AddTable mSpace textPts 5 3 3.0 5.0))
;; Remplir les cellules
(setq row 0)
(while (< row 5)
(setq col 0)
(while (< col 3)
(vla-SetText tbl row col (strcat "Cell " (itoa row) "," (itoa col)))
(setq col (1+ col))
)
(setq row (1+ row))
)
;; Mettre en forme (alignement centre sur la 1ère ligne d'en-tête)
(vla-SetAlignment tbl 0 acMiddleCenter) ; pour la ligne 0 (en-tête), ou par cellule
;; Modifier la largeur des colonnes
(vla-SetColumnWidth tbl 0 20) ; première colonne largeur 20
(princ "\nTableau créé avec succès.")
(princ)
)
Conseils pour votre développement AutoLISP
- AutoCAD® n’a pas de fonctions AutoLISP natives simplifiées pour gérer les tableaux, l’ActiveX est donc la meilleure méthode.
- Le module Visual LISP supporte pleinement ces fonctions via
vlax-
etvla-
. - Bien définir la taille de cellule et format avant de remplir pour éviter recalculs lourds.
- Organiser les données dans des listes ou tableaux AutoLISP et les parcourir avec
foreach
oumapcar
pour alimenter le tableau. - Tester la mise en forme au fur et à mesure avec de petits prototypes.
Si besoin, il est possible de fournir des codes plus avancés ou détaillés pour des cas spécifiques comme fusion de cellules, ajout d’en-tête, styles complexes, etc.