Vous êtes sur la page 1sur 2

P R AT I QUE

Aligner des textes


AutoLISP

A
utant AutoCAD sait très bien justifier un
(setq point_ref (getpoint "\nPoint de référence: "))
texte, autant il ne sait pas l’aligner suivant
une référence si ce n’est en utilisant la
; on récupère la coordonnée X
commande DEPLACER. Pour un texte, passe
(setq X (car point_ref))
encore, mais pour une série de textes dispersés
dans le document et devant être alignés, vous
; on récupère la valeur de la coordonnée Y
voyez tout de suite le travail !
(setq Y (cadr point_ref))

; on choisit l'option d'alignement


; H pour un déplacement vertical (alignement 
horizontal)
; V pour un déplacement horizontal (alignement 
vertical)

(initget 7 "H V")

(setq choix
Pour palier ce manque, voici une nouvelle (getkword "\nChoix de l'axe de l'ali - 
commande AutoLISP : ALIGNE_TEXTE. gnement Horizontal / Vertical: ")
)
Son fonctionnement est très simple. Après avoir
lancé la commande ALIGNE_TEXTE ; on sélectionne les textes à aligner
; la sélection ne prend que les objets Textes
1 - Vous définissez un point de référence qui corres-
pondra au point d’arrivée du texte. (princ (strcat "\nSélection des textes à aligner "
choix ": "))
2 - Vous choisissez l’axe d’alignement. H pour un (setq ent2 (ssget (list (cons 0 "TEXT"))))
alignement selon un axe horizontal ou V pour un
alignement selon un axe vertical. ; on met le compteur à 0
(setq index 0)
3 - Vous sélectionnez tous les objets textes que vous
désirez aligner selon cette référence. ; on récupère le nombre d'objets textes sélec- 
tionnés
C’est l’alignement bas gauche du texte qui est pris (setq nb_ent (sslength ent2))
comme référence de déplacement.
; on boucle selon le nombre de textes sélec- 
tionnés
; aligne des textes Horizontalement ou (repeat nb_ent
Verticalement
; on récupère la coordonnée bas gauche 
du texte
(defun c:aligne_texte () (setq XY_origine (cdr (assoc 10 (entget 
(ssname ent2 index)))))
; on sélectionne un point de référence

58 cad.magazine - N°115 - mars 2004


La commande dans un
(cond
((= choix "V") bouton
; on définit la nouvelle coordonnée  Cette commande peut être intégrée dans un bouton
bas gauche du texte d’une barre d’outils.
(setq XY_ref (list X
(cadr (cdr (assoc 10 (entget La syntaxe de la macro est :
(ssname ent2 index))))))
) ^C^C(load "aligne_texte");almigne_texte;
)
((= choix "H") Pour que ce programme puisse être chargé et lancé
il est nécessaire que le fichier ALIGNE_TEXTE.LSP
; on définit la nouvelle coordonnée bas  soit placé dans un dossier reconnu par l’environne-
gauche du texte ment AutoCAD.
(setq XY_ref (list
(car (cdr (assoc 10 (entget  Si cela n’est pas le cas, ajouter un nouveau chemin
(ssname ent2 index))))) Y)) de recherche de fichiers supports depuis la boîte
de dialogue OPTIONS, à partir de l’onglet
) Fichiers.

) ; fin de la condition

; on déplace l'objet texte


(command "deplacer" (ssname ent2 index) ""
xy_origine xy_ref)

; on incrémente le compteur
(setq index (1+ index))

); fin de la boucle repeat

(princ)
) ; fin du defun

(princ "\n=> Aligne_Texte (Aligne Texte 


Horizontalement ou Verticalement)
Les Cahiers d'AutoCAD N°13"
)

(princ)

INFORMATIQUE CAO-DAO Votre partenaire Dominique VAQUAND sarl


Développements sur AutoCAD / Formations tous niveaux sur site
Préstations de service / Vente et mise à jour AutoCAD
BP 33- 13430 Eyguieres cedex
Tél : 04 90 57 96 70 - fax - 04 90 57 96 23
Email : dominique.vaquand@free.fr / Http : //dominique.vaquand.free.fr

59 cad.magazine - N°115 -mars 2004