Comment créer des tabulations dans un MText ?

Bonjour à la communauté.
Je cherche depuis longtemps à créer un texte multilignes (MText) avec des tabulations, le tout en Lisp (ou AutoLisp).
J’ai passé des heures sur Perplexity, et le résultat le plus souvent reçu est :

(defun C:MTABS-VLA (/ doc ms p mt tabs)
  (vl-load-com)
  (setq doc (vla-get-ActiveDocument (vlax-get-Acad-object))
        ms  (vla-get-ModelSpace doc)
        p   (vlax-3d-point (getpoint "\nPoint d'insertion : "))
  )
  ;; Création MText simple
  (setq mt (vla-AddMText ms p 100 "Col1\tCol2\tCol3\\P10\t20\t30"))

  ;; Exemple d’accès tabulations (pseudo-code, noms à vérifier dans ta version)
  (setq tabs (vla-GetTabStops mt))               ; collection de tab stops
  ;; Ajout d’un tab stop à 15.0, aligné à gauche
  (vla-Add tabs 15.0 acLeft)                     ; Left tab
  ;; Ajout d’un tab stop décimal à 40.0
  (vla-Add tabs 40.0 acDecimal)                  ; Decimal tab

  (princ)
)

Et voici le résultat :


Il n’y a aucune tabulation définies. J’ai la douloureuse sensation que vla-GetTabStops ne fonctionne pas.
J’aimerais obtenir ça :

Avec trois tabulations « gauche » à 2, 4 et 6 et une tabulation décimale à 30 (par exemple).
Je cherche depuis plusieurs jours, mais rien de probant.
Bien à toi, la communauté.
Denis…

1 Like

Salut, l’intelligence artificielle est un domaine en perpétuelle évolution, ça change tout le temps. Donc je te conseille pour le moment de plutôt utiliser Gemini 3 Pro plutôt que Perplexity, qui est un petit peu dépassé en termes de génération de code.

J’ai envoyé le prompt suivant à Gemini 3 Pro:

Pourrais-tu m’écrire un programme AutoLISP pour AutoCAD® qui crée un objet texte multiple, dans l’espace objet d’AutoCAD®. Ce texte multiple devra avoir des tabulations comme ceci. Avec trois tabulations « gauche » à 2, 4 et 6 et une tabulation décimale à 30

Il m’a sorti un programme AutoLISP avec une petite erreur d’échappement des caractères avec la barre oblique, c’est une erreur classique avec l’intelligence artificielle, je lui ai dit qu’il y avait une erreur il m’a corrigé le code et il m’a sorti le code suivant qui fonctionne parfaitement voir le résultat en copie d’écran ci dessous:

Ca m’a pris moins de trois minutes :smiley:

(defun c:MTextTabCorrect (/ acadObj doc modelSpace pt insPt tabChar textString mtextObj)
  (vl-load-com)

  (setq acadObj (vlax-get-acad-object))
  (setq doc (vla-get-ActiveDocument acadObj))
  (setq modelSpace (vla-get-ModelSpace doc))

  (setq pt (getpoint "\nSélectionnez le point d'insertion : "))
  
  (if pt
    (progn
      (setq insPt (vlax-3d-point pt))

      ;; --- LA CORRECTION EST ICI ---
      ;; On définit une variable pour le vrai caractère de tabulation (Code ASCII 9)
      (setq tabChar (chr 9))

      ;; On construit la chaîne en assemblant les morceaux.
      ;; "{\\pt2,4,6,d30;" -> Définit les tabulations (notez le double \\ pour que le LISP envoie un simple \)
      ;; tabChar -> Insère la vraie tabulation invisible
      (setq textString (strcat 
                         "{\\pt2,4,6,d30;" 
                         "Pos2" tabChar 
                         "Pos4" tabChar 
                         "Pos6" tabChar 
                         "123.45}"
                       ))

      ;; Création de l'objet
      (setq mtextObj (vla-AddMText modelSpace insPt 0.0 textString))
      
      ;; Hauteur du texte
      (vla-put-Height mtextObj 2.5)
      
      ;; Force la mise à jour de l'affichage
      (vla-Update mtextObj)
      
      (princ "\nMText créé avec de VRAIES tabulations.")
    )
    (princ "\nAnnulé.")
  )
  (princ)
)

Un super merci Patrick ! ! !
C’est exactement ce que je cherchais ! ! !
Mais j’ai copié ton prompt dans Gemini 3 Pro et j’ai eu plusieurs pages en réponse, dont un format RTF.
Je vais approfondir ce Gemini.
Encore merci !
Denis…

1 Like

En complément, j’expliquais ci-dessus comment générer une petite routine AutoLISP avec l’intelligence artificielle Google Gemini 3 Pro. J’en profite pour signaler et vous montrer une démonstration de mon assistant expert AutoCAD basé sur l’intelligence artificielle qui est disponible soit à tout le monde en plan gratuit avec des limitations, soit à mes abonnés Patreon payant sans limitation. Et voici donc ci-dessous un exemple de ce que cet assistant peut générer comme routine Lisp avec le plan payant:

Mas isso é bom para você (Patrick) no vídeo ?

Salut ben dans la vidéo ce que j’ai fait me convient très bien le programme a été généré sans erreur immédiatement, il est un peu différent de celui que j’avais généré la première fois avec Gemini mais ça c’est le propre de l’intelligence artificielle, ça ne donne jamais le même résultat.

Ce sujet a été automatiquement fermé après 3 jours. Aucune réponse n’est permise dorénavant.