Comment faire un tableau (sans Excel) ?

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.