Aller au contenu

Récupération point d\'insertion d\'un texte en lisp


Messages recommandés

Posté(e)

Bonsoir à tous

 

Dans Autocad j’aimerais savoir si c'est possible en sélectionnant un texte d'en récupérer son point d'insertion et donc tracer une ligne depuis ce point, (et ceci en lisp).

 

Merci pour votre aide :)

A+

 

Posté(e)

Salut et bienvenue,

 

Le point d'insertion d'un texte (ou mtexte) est contenu dans le code de groupe 10 de la liste de données DXF de l'entité, la liste retournée par la fonction entget.

 

Exemple :

 

(if (and
     (setq ent (car (entsel))) ; Sélection d'une entité
     (wcmatch (cdr (assoc 0 (entget ent))) "*TEXT") ; Type d'entité : TEXT ou MTEXT
   )
 (setq ins_pt (cdr (assoc 10 (entget ent)))) ; Point d'insertion
) 

 

[Edité le 17/9/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut Gile

 

J'ai essaié ce code en ajoutant la commande Ligne et en utilisant le "ins_pt" comme point d'insertion

mais ça ne marche pas. why ????? :)

 

Merci

A+

Posté(e)

Salut,

 

Pourrais tu préciser ce que tu entends par "ça ne marche pas" ou ce que tu veux faire avec ta ligne (souligner, surligner ?).

 

Le point retourné par le code est le point d'insertion d'un texte multiligne (en haut à gauche) ou le premier point d'alignement d'un texte simple (en bas à gauche), celui qui se "grippe" quand on sélectionne le texte.

 

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut gile

 

Ton code fonctionne très bien, j'avais mal écrit la partie que j'ai ajouté.

Par contre lorsque je sélectionne un texte le point d'insertion reste toujours à gauche même si le texte a un point d'insertion centre, c'est possible de corriger cela ?

 

Encore merci pour ton aide

A+

Posté(e)

Salut,

 

les entités texte et mtexte ayant des différences marquées à ce niveau, pourrait tu me dire si c'est avec les uns, les autres ou les deux que tu veux travailler.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Tu dois utilser des textes simples, sinon tu n'aurais pas ce soucis de point d'insertion, j'ai répondu un peu vite, ci dessus.

 

Dz toutes façons voilà un petit LISP qui fonctionne avec les deux types de texte, le point tient compte de la justification et est retourné en coordonnées du SCU courant pour la fonction (command ...)

 

(defun c:test (/ ent e_lst ins_pt)
 (while
   (not
     (and
(setq ent (car (entsel)))
(wcmatch (cdr (assoc 0 (setq e_lst (entget ent)))) "*TEXT")
     )
   )
 )
 (if (= (cdr (assoc 0 e_lst)) "TEXT")
   (if	(and (zerop (cdr (assoc 72 e_lst)))
     (zerop (cdr (assoc 73 e_lst)))
)
     (setq ins_pt (trans (cdr (assoc 10 e_lst)) ent 1))
     (setq ins_pt (trans (cdr (assoc 11 e_lst)) ent 1))
   )
   (setq ins_pt (trans (cdr (assoc 10 e_lst)) 0 1))
 )
 (command "_line" "_non" ins_pt pause "")
 (princ)
) 

 

[Edité le 20/9/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité