Visual LISP contient un ensemble étendu de fonctions afin de fournir l'accès aux objets ActiveX. Les noms des fonctions sont précédés de vla- ; par exemple, vla-addCircle, vla-get-ModelSpace, vla-getColor. Chaque fonction vla- correspond à une méthode ou propriété ActiveX.
Visual LISP contient aussi des fonctions ActiveX qui commence par vlax-. Ce sont des fonctions spéciales ActiveX qui ont été conçu spécifiquement pour être utilisées avecVisual LISP.
Il y a des fonctions vla- pour toutes les méthodes et propriétés décrites dans l'Automation ActiveX Reference. Si votre dessin contient des objets ActiveX, vous pouvez utiliser les fonctions vlax-invoke, vlax-get, et vlax-put pour accéder a leurs méthodes et propriétés.
Les fontions Visual LISP ActiveX fournissent vraiment l'accès aux méthodes ActiveX. Par exemple, regardez cette expression AutoLISP, qui ajoute un cercle au dessin :
La méthode appelée pour dessiner le cercle est
Quelquefois, comme dans le cas du Cercle, il y a un texte descriptif qui identifie la méthode dont vous avez besoin . Souvent, pourtant, vous aurez besoin de regarder dans la liste des Méthodes pour trouver celle qui correspond à l'action que vous désirez effectuer.
Une fois le nom de la méthode trouvée, ajoutez un prefixe vla- au nom de la méthode pour obtenir le nom de la fonction Visual LISP qui execute la méthode. Dans cet exemple, la fonction est vla-ajouter-cercle. Remarquez que, dans Visual LISP, le nom de la fonction n'est pas sensible (Maj/Min) : vla-addcircle est la même fonction que vla-AddCircle.
Après avoir identifié la fonction Visual LISP dont vous avez besoin, il vous reste encore à déterminer comment
l'appeler. Actuellement, il n'y a pas de référence disponible définissant la syntaxe AutoLISP pour chaque appel de fonction..
Vous avez besoin de chercher la méthode dans ActiveX and VBA Reference d'AutoCAD et y prendre la syntaxe.
Pour vous aider, vous trouverez dans la page Exercices Visual LISP du ce site, plusieurs références définissants la syntaxe des méthodes,
propirétés et fonctions Visual LISP.
Par exemple, dans la page reference pour l'objet Cercle, cliquez sur l'hyperlien AddCircle afin de visualiser la définition de cette méthode :
Les définitions de la syntaxe dans ActiveX and VBA Reference s'appliquent au langage Visual Basic. Pour AddCircle la syntaxe est définie comme :
En Visual LISP, toutes les fois qu'un objet AutoCAD est retourné par une fonction ActiveX, il est mémorisé comme une donnée du type objet VLA.
L'objet indiqué avant le nom de la méthode (object.AddCircle) est toujours le premier argument dans l'appel d'une fonction vla. C'est l'objet que vous visualisez ou modifiez. Par exemple, vous ajoutez un cercle dans l'espace objet de dessin :
(vla-addCircle Espace_Obj...)Dans cet exemple, Espace_Obj se réfère à l'objet ModelSpace (voir
Reste à déchiffrer les deux paramètres Center et Radius dans la définition de
la methode. Center est un Variant (Tableau de 3 doubles) de type données, et Radius est un Double.
Center : une coordonée 3D SCG qui précise le centre du cercle.
Radius : Le rayon du cercle. Doit être un nombre positif.
ActiveX and VBA Reference explique la façon d'utiliser ces paramètres, mais les types de données indiqués pour ces paramètres sont des types de données du Visual Basic. Vous avez besoin de les convertir en types de données Visual LISP. La table suivante explique comment faire :
Visual Basic | Visual LISP |
---|---|
Byte | Integer (entier) |
Boolean | :vlax-true et :vlax-false |
Integer | Integer (entier) |
Long | Integer (entier) |
Single | Integer (entier), real (réel) |
Double | Integer (entier), real (réel) |
Object | vla-object |
String | String (chaîne de caractères) |
Variant | variant |
Array | Safe-array (tableau) |
Quand vous utilisez les fonctions ActiveX dans Visual LISP, vous devez toujours fournir des arguments qui sont du type de donnée définit dans les définitions des méthodes ActiveX.