Charabia ? |
Automatisation ActiveX, Automation ActiveX, Composant ActiveX, Document ActiveX, OCX ActiveX, Serveur OLE, Automation OLE ... La terminologie varie suivant les versions, les applications ou les traductions ! Si la plupart des termes sont synonymes, il y aurait des subtilités... Pour simplifier, on parlera ici de composant ActiveX. |
Composants ActiveX |
Les composants ActiveX définissent des objets et permettent de créer des bibliothèques personnalisées qui sont liées dynamiquement à un programme pendant son exécution. ActiveX pour AutoCAD sert d'interface entre AutoCAD et l'application client (VBA, VB...) Il ne peut fonctionner que si acad.exe est lancé. Les composants sont inscrits dans la base de registres de Windows et sont donc connus du système d'exploitation lui-même. La registration (ou enregistrement ?) des composants ActiveX est faite automatiquement lors de la création du composant. Pour les programmes que vous distribuez à des tiers, la registration du serveur est effectuée par la procédure d'installation. La compilation du source fournira 2 types de composants :
|
Cherchons des POO |
P.O.O = Programmation orientée objet. Les Objets d'AutoCAD Les objets graphiques (lignes, arcs...) mais aussi les calques, les styles, les vues, les dessins... Chaque objet est relié à son objet parent. L'objet racine est l'application AutoCAD. acad.tlb Les propriétés et méthodes des objets AutoCAD sont décrites dans une bibliothèque de types. Pour y accéder, cochez la case Bibliothèque d'objets AutoCAD dans la boîte Références du menu Outils de VBA. Méthode : Fonction effectuant une action sur un objet. Exemple : BaCercle.Update - Update est une méthode agissant sur l'objet BaCercle Propriété : Information (attribut) sur l'état d'un objet. Exemple : BaCercle.Color = acRed - Color est une propriété de l'objet BaCercle Classe : Pour créer un objet il faut définir une classe pour cet objet, puis créer une référence vers cet objet (Voir paragraphe suivant) . Exemple : "AutoCAD.Application" est la classe des objets AutoCAD |
Des LIAISONS (non dangereuses) |
Pour créer une référence à un objet racine tel que AutoCAD.Application ou Excel.Application :
|
Création STANDARD d'une référence |
Pour créer une référence à partir de VB, VBA pour Excel, Delphi, etc, utilisez le code suivant : Dim BaCadObj as Object Dim ObjDessin as Object On Error Resume Next Set BaCadObj = GetObject(, "AutoCAD.Application") If Err Then Err.Clear Set BaCadObj = CreateObject("AutoCAD.Application") If Err Then MsgBox Err.Description Exit Sub End If End If Set ObjDessin = BaCadObj.ActiveDocumentLigne 1 : Déclaration de l'objet racine Application. Ligne 2 : Déclaration de l'objet Dessin en cours de l'application. Ligne 3 : Si erreur, continuer à la ligne suivante. Ligne 4 : Si AutoCAD tourne déjà, créer la référence. Ligne 5 : Si erreur, c'est à dire si AutoCAD n'était pas lancé. Ligne 6 : Effacer le contenu de l'objet Err. Ligne 7 : Créer une instance d'AutoCAD. Ligne 8 : Si nouvelle erreur, c.à d. qu'AutoCAD n'a pu être lancé. Ligne 9 : Afficher le message d'erreur. Pour lancer Excel à partir de VBA, de VB, etc, utiliser le même code en remplaçant "AutoCAD.Application" par "Excel.Application". |
Création d'une référence à partir de VBA pour AutoCAD |
A partir de VBA pour AutoCAD, il n'est pas nécessaire d'utiliser le code du paragraphe précédent. En effet, à l'ouverture de VBA, il y a obligatoirement une instance AutoCAD et l'objet ThisDrawing est créé automatiquement. ThisDrawing correspond à l'objet ObjDessin du paragraphe précédent, c.à d. à l'objet dessin_en_cours_de_l'application_AutoCAD. Si vous désirez une nouvelle instance d'AutoCAD, utilisez CreateObject. Par contre utisez le code du paragraphe précédent si par exemple vous voulez lancer une application Excel, Access, etc, à partir de VBA pour AutoCAD. |
© 1998-2000 FASOFT - Roger Rosec Tous droits réservés. |