Lire et mettre à jour des propriétés d'objets
Visual LISP contient des fonctions pour lire et mettre à jour des propriétés d'objets. Pour une
démonstration de ces fonctions, commencez par entrer les expressions suivantes dans la ligne de commande
de la console de Visual LISP :
_$ (vl-load-com)
_$ (setq Espace_Obj (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object))))
_$ (setq Ccercle (vla-addCircle Espace_Obj (vlax-3d-Point (getpoint "\nCliquez le centre du cercle: ")) 2.5))
Ensuite cliquer un point dans la fenêtre de dessin d'AutoCAD, ce sera le centre du cercle.
Lecture des propriétés des objets
Les noms des fonctions qui lisent les propriétés des objets ont comme préfixe vla-get et requièrent la
syntaxe suivante :
(vla-get-propriété objet)
Par exemple,
vla-get-center |
retourne le centre d'un cercle. Vous pouvez utiliser cette propriété pour
dessiner un second cercle concentrique au premier :
_$(vla-addCircle Espace_Obj (vla-get-center Ccercle) 1.5)
#;<VLA-OBJECT IAcadCircle 03ad0a1c;>
La fenêtre de dessin d'AutoCAD contient maintenant les objets : (Figure9_1).

Mise à jour des propriétés des objets
Les noms des fonctions qui mettent à jour les propriétés des objets ont comme préfixe vla-put et requièrent la
syntaxe suivante :
(vla-put-propriété objet Nouvelle-Valeur)
Par exemple, vla-put-center |
change les coordonnées du centre d'un cercle.
Pour changer l'axe des X du centre du cercle d'origine
Récupération du centre du cercle
_$ (setq Ccentre (vla-get-center Ccercle))
#<variant 8197 ...>
retourne un variant de type safearray (tableau). Le safearray (tableau) contient 3 doubles (les coordonnées X,Y et Z).
Sauver le centre sous forme de liste :
_$ (setq List_Centre (vlax-safearray->list (vlax-variant-value Ccentre)))
(17.8685 5.02781 0.0)
Soustraire 1 unité à l'axe X du centre du cercle :
_$ (setq nouv_X (- (car List_Centre) 1))
16.8685
Le résultat est enregistré dans la variable nouv_X.
Construction d'u nouveau point sous forme de liste pour le centre, en utilisant la nouvelle valeur pour
la coordonnée X et les valeurs d'origine pour les coordonnées Y et Z :
_$ (setq nouv_centre (list nouv_X (cadr List_Centre)(caddr List_Centre)))
(16.8685 4.52594 0.0)
La nouvelle liste est enregistrée dans la variable nouv_centre.
Utiliser vla-put-center pour mettre à jour le cercle avec le nouvel axe X :
_$ (vla-put-center Ccercle (vlax-3d-Point nouv_centre))
La fenêtre de dessin d'AutoCAD montre le résultat : (Figure9_2).
Notez que le changement d'une propriété d'un objet n'est pas immédiatement effectué sur l'objet
affiché dans le dessin AutoCAD. AutoCAD diffère le changement de la propriété afin de pouvoir
effectuer un changement sur plusieurs propriétés à la fois. Pour mettre à jour l'objet,
tapez la méthode vla-update :
_$(vla-update Ccercle)