Comment faire un tableau (sans Excel) ?

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 :

'------------------------------------------
'|      Récapitulatif des surfaces        |
'------------------------------------------
'| Niveau : rez-de-chaussée               |
'------------------------------------------
'| Habitables :                   |   52m²|
'------------------------------------------
'|    Cuisine                     |   10m²|
'|    Entrée                      |   10m²|
'|         (hsp<1.80m)            |    2m²|
'|    Salle à manger              |   30m²|
'------------------------------------------
'| Non habitables :               |    5m²|
'|    Cave                        |    5m²|
'------------------------------------------
'| Niveau : 1er                           |
'------------------------------------------
'Etc...

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.

Bien à toi, la communauté.

Denis…

1 « J'aime »

Bonjour Denis,

J’ai bien peur que l’utilisation du Visual Lisp soit nécessaire.
(ce n’est vraiment pas évident avec le code DXF)

vla-AddTable pour créer le tableau

Les méthodes et propriétés pour le modifier.

N’hésite pas à cliquer dessus, il y a des exemples en VBA et Visual Lisp qui te montrent tout.

Vas-y , lance toi, cela vaut le coup.

1 « J'aime »

Je ne peux pas utiliser un tableau Excel, car certains clients ont LibreOffice, et je crains qu’il ne pourront pas modifier les tableaux.

Bonjour @DenisH,

On peut ouvrir des fichiers Excel, avec Libre Office, et les modifier.

1 « J'aime »

Bonjour Fraiddd et merci pour ta réponse.

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 ! :grinning_face_with_smiling_eyes:

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…

Encore merci.

Denis…

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’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.

1 « J'aime »