Před tím než se budeme věnovat principům řízení (upravování) AutoCADu pomocí nástrojů automatizace, je důležité pochopit základní souvislosti v objektovém modelu AutoCADu. Znalost objektového modelu AutoCADu Vám umožní lepší orientaci v problematice ActiveX automatizaci (rozhraní ActiveX) a potažmo i v upravování AutoCADu pomocí Nástrojů automatizace (např. Visual BASIC pro Aplikace).
Prostředí rozhraní ActiveX automatizace je navrženo jako striktně objektové rozhraní. Jako základní stavební prvek je považován objekt. V ActiveX automatizaci AutoCADu je objektem každý uchopitelný (rozumějte dosažitelný) prvek reprezentující část AutoCADu. Rozhraní ActiveX AutoCADu rozlišuje následující typy objektů:
grafické objekty | - čára, výseč, text, rozměry ... |
objekty nastavení stylů | - typ čar, styl kótování ... |
objekty organizačních struktur | - vrstvy, skupiny, bloky ... |
objekty výkresového zobrazení | - pohled, viewport ... |
další objekty | - výkres, aplikace AutoCADu.. |
Všechny objekty jsou seřazeny do hierarchické struktury s kořenem v objektu Application (aplikace). Hierarchická struktura se nazývá OBJEKTOVÝ MODEL. Z objektového modelu je patrné, jak jsou objekty mezi sebou provázány. Objekt Application umožňuje například přístup k objektu Preference (Vlastnosti), který umožňuje upravovat AutoCAD. Je možné přistupovat k objektu Document (Dokument), pomocí vlastnosti ActiveDocument, který umožňuje přístup do nižší úrovně objektů. Objekt Document obsahuje všechny Collection (soubory), specifické vlastnosti a metody dokumentu. Collection je jednoduchý mechanismus pro přístup do množiny objektů (například objekt ModelSpace je soubor všech objektů - entit - v modelovém prostoru AutoCADu).
POZNÁMKA: V AutoCADu vždy existuje objekt ActiveDocument. Jedná se o inicializační výkresový prostor při startu AutoCADu nebo aktuální otevřený soubor.
Potřebujete-li použít libovolnou metodu nabízenou v objektovém modelu AutoCADu, musíte nejprve definovat cestu k této metodě. Cestu naleznete budete-li procházet objektovým modelem objekt po objektu směrem k požadované metodě. Podíváte-li se na model, první objekt - kořen objektového modelu - je objekt Application.
Při upravování AutoCADu s využitím rozhraní ActiveX se můžete setkat s výjimkou právě popsaného pravidla. Například při otevření nového projektu je poskytován specielní objekt "ThisDrawing" a ne "Application. ...". Objekt "ThisDrawing" totiž reprezentuje "Application.ActiveDocument".
Příklad bude pro jednoduchost vysvětlován pro použití objektového modelu ActiveX AutoCADu v nástroji automatizace VBA. Použití v jiných nástrojích by bylo obdobné.
Uživatel potřebuje vybrat ve své aplikaci jeden objekt z grafické obrazovky.
K výběru objektu z grafické obrazovky slouží metoda GetEntity. Z nápovědy AutoCADu zjistíme, že metoda GetEntity patří k objektu Utility. Tyto informace nám postačují, abychom zadali správnou cestu k metodě. Při zadání cesty k metodě máme dvě možnosti. Můžeme zadat cestu ve tvaru tzv. plné cesty k metodě:
Application.ActiveDocument.Utility.GetEntity Object, Point, [Prompt]
Nebo můžeme zadat cestu ve zkráceném tvaru s použitím objektu "ThisDrawing". Tvar takovéto cesty bude následující:
ThisDrawing.Utility.GetEntity Object, Point, [Prompt]
Zkrácení cesty neušetří pouze psaní kódu, ale i zrychlí aplikaci. VBA při každé kompilaci kódu kontroluje cesty. Pokud namapujeme proceduru nekorektně, VBA zastaví kompilaci a informuje o chybě. Při použití ThisDrawing zkrátíte kontrolu o dva kroky. Při použití této teorie můžeme zkrátit kontrolu ještě více - použijeme proměnnou objekt, která spojí objekty ThisDrawing a Utility:
Dim objUtility As Object Set objUtility = ThisDrawing.Utility
teď bude mít kód následující tvar:
objUtility.GetEntity Object, Point, [Prompt]
To ušetří čas, protože je kontrolován pouze objekt objUtility. Objekty ThisDrawing a Utility jsou kontrolovány pouze jednou, bez ohledu na to kolikrát je použit objekt objUtility v proceduře.