VLA Propriétés

Acquérir des propriétés
Attribuer des propriétés


La grosse différence est qu'en AutoLISP on travaille sur des noms d'entités (ename) et que les propriétés de ces entités sont mémorisées sous forme de codes (DXF) dans des listes alors qu'en VLISP, on travaille sur des objets (#<VLA-OBJECT...) et que les propriétés sont mémorisées "en clair" par genres.

Pour acquérir des propriétés sur des objets VLA la PREMIÈRE chose à faire est de transformer le nom d'entité (ename) en objet VLA (#<VLA-OBJECT...)


Conversion d'une entité (ename)
en VLA-OBJECT

(vlax-ename->vla-object)

Syntaxe :  ( vlax-ename->vla-object NomEntite )

Argument : un seul argument NomEntite sous forme de (ename)

Exemple : (setq ent (car (entsel "\nChoix de l'entité\n")))

Renvoie : <Nom d'entité: 7ffffb0d560> qui est bien de type (ename)

et ensuite, cette ligne de code : ( setq entvla ( vlax-ename->vla-object ent )) va injecter dans la variable "entvla" le nom de l'objet dans la forme VLISP en renvoyant : #<VLA-OBJECT IAcadLine 000000003e9f7768> qui est bien de type VLA-OBJECT


À partir de maintenant, on peut interroger
toutes les propriétés applicables à cet objet.


Acquérir une propriété

vlax-get-property

Renvoie une propriété de l'objet donné en argument

Syntaxe : (vlax-get-property ObjVla propriete)

Arguments :
ObjVla sous forme de VLA-OBJECT
propriete 
: de type Symbol ou chaîne de caractères (string) contenant le nom de la propriété à interroger.

Exemples :
Tout d'abord, définition de l'objet VLA dans une variable :
( setq entvla ( vlax-ename->vla-object (car (entsel "\nChoix de l'entité\n"))))

Obtenir le nom de calque : (vlax-get-property entvla 'layer)
Obtenir le numéro de la couleur : (vlax-get-property entvla 'color)
Obtenir la longueur de la ligne (entité ligne donnée en argument VLA-OBJECT)
(vlax-get-property entvla 'length)

Et ainsi de suite pour toutes les propriétés disponibles,
pour mémoire la fonction (vlax-dump-object ObjVla ) vous dresse une liste de toutes ces propriétés.


Affecter une propriété

vla-put-property

Affecte une propriété de l'objet donné en argument

Syntaxe : (vlax-put-property ObjVla propriété ValeurPropriété)

Arguments :
ObjVla sous forme de VLA-OBJECT
propriété : chaîne de caractères (string) ou Symbole (symbol)
ValeurPropriété : cet argument est la valeur à affecter il peut être de type :
- Nombre entier (integer)
- Nombre réel (real)
- VLA-Object
- Variant
- Safearray
- T ou nil.

Valeur renvoyée : nil en cas de succès sinon une erreur est renvoyée

Exemples :

SyntaxeValeur renvoyée
(vlax-put-property entvla 'layer "NouveauCalque")
nil si réussite
il faut que le calque existe
&nbsp;(vlax-put-property entvla 'color 10)
nil si réussite

Vous constaterez qu'il existe deux formes de syntaxe :
vlax-get, vlax-put, d'un côté
et vlax-get-property, vlax-put-property, de l'autre.

Les premières formes sont les plus anciennes et sont conservées pour des raisons de compatibilité.
Néanmoins ces formes diffèrent parfois par les types de valeur qu'elles retournent ou qu'elles requièrent comme argument ou valeur de propriété.
Le plus souvent, là où les fonctions vla-* ou vlax-get-property, vlax-put-property, utilisent des valeurs de type safearray, les fonctions vlax-get, vlax-put utilisent des listes LISP.

Exemples : après avoir créé une variable contenant un objet VLA, ces quatre syntaxes renvoient le nom du calque de cette objet (entité).

(setq ent-vla (vlax-ename->vla-object (car (entsel))))
(vla-get-layer ent-vla)
(vlax-get-property ent-vla 'layer)
(vlax-get-property ent-vla "layer")
(vlax-get ent-vla "layer")

à suivre ...

Haut de pageRetour menu Fonctions VL


04 mai 2018