L'Automation ActiveX est une nouvelle façon de travailler avec les commandes de dessin AutoCAD. Dans plusieurs situations, ActiveX travaille plus rapidement que les fonctions traditionnelles AutoLISP dans la manipulation des commandes de dessin AutoCAD.
ActiveX est une interface de programmation qui est utilisable par plusieurs langages et environnements, tel que le C++, Visual Basic(R), et Delphi(TM). Lorsque vous travaillez avec ActiveX dans Visual LISP, vous travaillez avec le même modèle de l'objet, les mêmes propriétés et méthodes, ce qui permet une manipulation à partir d'autres environnements de programmation.
Les objets sont les blocs d'une construction principale d'une application ActiveX. Par exemple, un dessin AutoCAD tel que les lignes, arcs, polylignes, et cercles ont longtemps été considérés comme des objets. Mais dans le schéma d'ActiveX, beaucoup d'autres éléments d'AutoCAD sont considérés comme des objets. Par exemple, tous les éléments suivants sont représentés comme des objets :
En Visual LISP, l'Automation ActiveX inclus plus de fonctions que celles fournis par les fonctions LISP tels que entget, entmod, et setvar. Comparés aux fonctions standards AutoLISP, ActiveX fonctionne plus vite, fournit un accès plus facile aux propriétés des objets, et d'une manière plus lisible. Par exemple, pour accéder au rayon d'un cercle avec les fonctions traditionnelles AutoLISP, vous devez utiliser [entget] pour obtenir une liste d'entités, et [assoc] pour trouver la propriété que vous cherchez. En outre, vous devez connaître le code DXF associé à cette propriété, on l'obtient en utilisant [assoc] :
Il y a des éléments que vous pouvez utiliser seulement avec ActiveX. Par exemple, accéder à un objet à partir d'un reacteur callback functions, vous devrez utiliser ActiveX. Voir la rubrique
L'objet Application est la racine du model objet de l'Automation ActiveX d'AutoCAD. A partir de l'objet Application, vous pouvez accéder à tous les autres objets, ainsi que les propriétés ou méthodes assignées a ces objets.
La première chose que vous avez besoin de faire pour accéder aux objets AutoCAD avec ActiveX est d'établir une connexion avec l'objet Application d'AutoCAD. Utiliser la fonction
La fonction vlax-get-acad-object retourne un pointeur sur l'objet Application d'AutoCAD. Dans l'exemple précédent, le pointeur est mémorisé dans une variable CadApplication. Cette valeur retournée existe comme un unique type de donnée Visual LISP appelé VLA object (Visual LISP ActiveX object). Lorsque vous vous référez aux objets AutoCAD avec les fonctions ActiveX, vous devez spécifier un type d'objet VLA. C'est pour cette raison, que vous ne pouvez pas utiliser entget pour accéder à un objet et ensuite se référer à cet objet comme une fonction ActiveX.
Remarque :
Bien que vous ne puissiez pas utiliser l'objet, retourné par entget, directement avec une fonction ActiveX, vous pouvez
le convertir en un objet VLA en utilisant la fonction : vlax-ename->vla-object.
Exemple :
Dessinez un cercle dans AutoCAD, ensuite Entrez ce qui suit sur la ligne de commande de la fenêtre Console de Visual
LISP (Touche F6) :
_$(setq rayon (cdr (assoc 40 (entget (car (entsel))))))
Sélectionnez le cercle, l'écran affiche (Ex):
25.5738
Pour connaître les propriétés associées a un objet Application, vous pouvez sélectionner la variable qui pointe sur l'objet (CadApplication, dans l'exemple précédent), et cliquez sur le bouton Inspecter... de la barre d'outils Affichage de Visual LISP (ou dans le menu Vue de Visual LISP, choisissez Inspecter... ou cliquez sur le bouton droit de la souris puis choisir Inspecter...):
Vous pouvez identifier beaucoup de propriétés inscrites dans la fenêtre de l'inspecteur d'objets VLA. Par exemple, "FullName" est le nom de fichier exécutable d'AutoCAD, "Version" la version d'AutoCAD , et "Caption" est le contenu de la barre de titre de la fenêtre AutoCAD. Une propriété identifiée comme un #<VLA OBJECT...> renvoie à un autre objet AutoCAD ActiveX. L'objet Application a deux propriétés similaires, "ActiveDocument" et "Preferences". Si vous regardez le diagramme du model objet d'AutoCAD, vous verrez que ces deux objets sont justes en dessous de l'objet Application dans le model hiérarchique. Pour connaître les propriétés associées à un objet, double cliquez sur la ligne de l'objet dans la fenêtre de l'Inspecteur (ou cliquez sur le bouton droit de la souris puis choisir Inspect).
En suivant la hiérarchie du model objet d'AutoCAD, la propriété ActiveDocument de l'objet Application vous mène à l'objet Document. Qui représente le dessin courant d'AutoCAD :
L'objet Document possède de nombreuses propriétés. L'accès aux objets non-graphiques (épaisseurs, groupes, et types de ligne par exemple) est fourni par les propriétés telles que Layers, Groups, et Linetypes. Pour accéder aux objets graphiques dans un dessin AutoCAD, vous aurez besoin d'accéder ou à l'espace objet du dessin (à travers la propriété ModelSpace), ou bien à l'espace papier (à travers la propriété PaperSpace). Par exemple :
A ce moment là, vous avez accès au dessin AutoCAD et vous pouvez y ajouter des objets. Par exemple, vous pouvez ajouter un cercle à l'espace objet à l'aide de la méthode