Aller au contenu

aligner texte sur polyligne


Messages recommandés

Posté(e)

bonjour,

 

quelqu'un connaitrait il une commande ou un lisp permettant d'aligner un texte sur une polyligne donnée ?

 

Merci d'avance pour vos réponses.

Posté(e)

Salut,

 

Je ne sais pas si j'ai bien compris la demande, le texte (ou mtexte) est mis parallèle à la tangente à la polyligne au point le plus proche du point d'insertion du texte.

 

(defun c:align-txt (/ text pline pt ang)
 (vl-load-com)
 (if (and (setq text (car (entsel "\nSélectionnez un texte: ")))
   (wcmatch (cdr (assoc 0 (entget text))) "*TEXT")
   (setq pline (car (entsel "\nSélectionnez une polyligne: ")))
   (= (cdr (assoc 0 (entget pline))) "LWPOLYLINE")
     )
   (progn
     (vla-StartUndoMark
(vla-get-ActiveDocument (vlax-get-acad-object))
     )
     (foreach n '(text pline)
(set n (vlax-ename->vla-object (eval n)))
     )
     (setq pt	(vlax-curve-getClosestPointTo
	  pline
	  (vlax-get text 'InsertionPoint)
	)
    ang	(angle pt
	       (mapcar '+
		       pt
		       (vlax-curve-getFirstDeriv
			 pline
			 (vlax-curve-getParamAtPoint pline pt)
		       )
	       )
	)
     )
     (if (= (vla-get-ObjectName text) "AcDbMText")
(setq ang (- ang (angle '(0 0 0) (getvar "UCSXDIR"))))
     )
     (vla-put-Rotation text ang)
     (vla-EndUndoMark
(vla-get-ActiveDocument (vlax-get-acad-object))
     )
   )
 )
 (princ)
) 

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

Posté(e)

Un grand merci à tous les deux.

 

Dans un premier temps, le lisp de Gille répond tout à fait à mon besoin, dans un deuxième le lisp de bonuscad est aussi terrible, notamment celui sur les blocs. :)

Posté(e)

argh,

 

kallain, impossible de charger le lisp de Bonuscad sur l'alignement des blocks, pourrais tu m'aiguiller ?

l'alias permettant de lancer le lisp c'est bien : ainerr ?

 

Merci d'avance

Posté(e)

Bon ben désolé, qui cherche trouve comme on dit ...

 

j'ai trouver les alias pour faire fonctionner les deux lisp :

 

align_text

align_insert

 

C'est tout bonnement génial

 

 

Merci pour tout

Posté(e)

l'alias permettant de lancer le lisp c'est bien : ainerr ?

 

Non c'est Align_insert

 

Voir plus bas dans le code (defun c:Align_insert ...) c: indique que ce qui suit est comme un nom de commande et peut être entré directement à la ligne de commande

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é