VLA Propriétés

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


Si en AutoLISP on travaille sur des noms d'entités (ename), en VLISP on travaille sur des objets (#<VLA-OBJECT...)

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)

(setq entvla (vlax-ename->vla-object ent))

Renvoie : #<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.

 


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

(vlax-vla-object->ename)

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

Argument : un seul argument ObjVla sous forme de VLA-OBJECT

Exemple : (je reprends l'exemple de la fonction précédente

(setq noment (vlax-vla-object->ename entvla))

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


Acquérir une propriété

vla-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.

Valeur renvoyée : la valeur de la propriété demandée .

Exemples :

Définition de l'objet VLA dans une variable :

(setq entvla (vlax-ename->vla-object (car (entsel "\nChoix de l'entité\n"))))

 

Syntaxe Valeur renvoyée
(vlax-get-property entvla 'layer)
nom de calque
 (vlax-get-property entvla 'color)
 numéro de la couleur
  (vlax-get-property entvla 'length)
 Longueur de la ligne
 (vlax-get-property entvla 'StartPoint)
 point de départ

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 :

Syntaxe Valeur renvoyée
(vlax-put-property entvla 'layer "NouveauCalque")
nil si réussite
il faut que le calque existe
 (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))))
1
2
3
4
(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 page Retour menu Fonctions VL

 


 


04 mai 2018