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)