Bonjour à la communauté.
J’aimerais faire un tableau récapitulatif des surfaces des différentes pièces pour des maisons individuelles ou appartements, mais je ne trouve pas grand chose de « lisible » sur la toile et Perplexity reste évasif.
Toutes les valeurs sont déjà dans des listes, il ne me reste plus qu’à structurer et « remplir » ce tableau.
Voici un « petit exemple » de ce que j’aimerais faire :
Bien entendu, je n’attend pas qu’on fasse le code à ma place, juste des commandes type, comme la fusion de colonne, les alignements, couleurs, polices (gras, italique…) les épaisseurs de lignes du tableau, quelques conseils ou quelques tutos (en fr Siouplé) voir même des extraits de code déjà fait, que j’adapterais pour mes besoins..
J’ai déjà quelques lisp à mon actif, mais je ne connais absolument rien aux tableaux.
Je ne peux pas utiliser un tableau Excel, car certains clients ont LibreOffice, et je crains qu’il ne pourront pas modifier les tableaux.
J’avais essayé aussi en faisant un texte multiligne et bien formaté, qui aurait pu très bien suffir, mais je pense qu’un tableau serait disons plus esthétique, mais ce n’est qu’une question de goût.
Effectivement, j’ai écris Lisp, mais je ne suis pas contre le VLisp, c’est vrai qu’avec uniquement du code DXF, c’est du capillo-tractage !
J’avais déjà regardé l’aide AutoCAD®, qui comme depuis des années reste très simpliste.
D’après ce que j’ai compris sur cette page, il faut créer un tableau complet et ensuite le modifier ?
Fisionner des colonnes, des lignes, des polices (gras, italique…) épaisseur des lignes…
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’objet ModelSpace 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- et vla-.
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 ou mapcar 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.