Obiekty AutoCADa w VBA

Transkrypt

Obiekty AutoCADa w VBA
Uwagi ogólne
W tej części omówię podstawowe elementy programowania obiektowego w języku VBA w AutoCADzie. Podam
niezbędne nam (do wykonania ćwiczenia) obiekty, ich właściwości i ich metody potrzebne do współpracy z
AutoCADem.
Nazewnictwo
Obiekt
Element aplikacji kontrolowany przez VBA za pomocą jego właściwości i metod służących do manipulacji
właściwościami i obiektami.
Przypisanie obiektu do zmiennej:
Dim zmienna As typ_obiektu
Set zmienna = obiekt
Zwolnienie zmiennej obiektowej:
Set obiekt = Nothing
Właściwość
Cecha obiektu (możemy ją rozumieć jako zmienną związaną z obiektem).
Odwołanie do właściwości obiektu:
Obiekt.Właściwość
Przypisanie zmiennej wartości właściwości:
Zmienna = Obiekt.Właściwość
Przypisanie właściwości wartości:
Obiekt.Właściwość = Wartość
Metoda
Manipulacja na obiekcie lub dokonywana przez obiekt (możemy ją rozumieć jako procedurę lub funkcję związaną z
obiektem).
Wywołanie metody:
Obiekt.Metoda(argumenty)
Kolekcja
Zbiór obiektów powiązanych ze sobą. Często są to obiekty tego samego typu (np. warstwy rysunku w AutoCADzie, lub
arkusze w Excelu).
Obiekty (niektóre) w AutoCADzie
AcadApplication
Obiekt ten reprezentuje AutoCADa jako takiego. Odwołujemy się do niego poprzez ThisDrawing.Application.
Jego właściwości tyczą się głównie właściwości głównego okna aplikacji.
AcadDocument
Obiekt ten reprezentuje rysunek AutoCADa. Do aktywnego dokumentu odwołujemy się poprzez ThisDrawing.
Metody -- Jego metody dotyczą głównie operacji na dokumentach AutoCADa (otwieranie, zamykanie, tworzenie
nowego, itd.).
Właściwości – przez nie mamy głównie dostęp do obiektów niżej w hierarchii, zawartych w rysunku.
Layers – zwraca kolekcję warstw w rysunku.
ActiveLayer – zwraca lub ustala aktywną warstwę. Np. poniższy kod:
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("0")
ustala jako warstwę aktywną warstwę „0”.
ModelSpace – zwraca obiekt reprezentujący przestrzeń modelową rysunku. O niej niżej.
PaperSpace – zwraca obiekt reprezentujący obszar papieru rysunku.
Utility – .zwraca obiekt AcadUtility, który zawiera szereg metod komunikacji z użytkownikiem. O tym niżej.
AcadLayers
Kolekcja obiektów typu AcadLayer. Odwołujemy się do niej poprzez:
ThisDrawing.Layers
Metody – Zawiera wszystkie metody AcadObject i dwie własne:
Add – dodaje do kolekcji nową warstwę; jej parametrem jest nazwa tworzonej warstwy jako łańcuch znakowy, np.:
ThisDrawing.Layers.Add("Węzły")
dodaje warstwę o nazwie „Węzły” do kolekcji.
Item – zwraca element kolekcji (warstwę); jej parametrem może być numer warstwy lub nazwa warstwy, np.:
ThisDrawing.Layers.Item("Węzły")
ThisDrawing.Layers.Item(2)
Właściwości – Zawiera wszystkie właściwości AcadObject oraz wspólną Application i Count, która zwraca
liczbę warstw w rysunku.
AcadLayer
Reprezentuje sobą pojedynczą warstwę w rysunku. Odwołujemy się do niej poprzez:
ThisDrawing.Layers.Item(indeks)
a do aktywnej przez:
ThisDrawing.ActiveLayer
Metody – Zawiera wszystkie metody AcadObject, za wyjątkiem tego, że warstwa „0” nie może być usunięta.
Właściwości – Zawiera wszystkie właściwości AcadObject oraz własne, z których najważniejsze to:
Color – kolor na warstwie, Freeze – czy jest zamrożona, LayerOn – czy jest włączona, Linetype – typ linii warstwy,
Lineweight – grubość linii warstwy, Lock – czy jest zablokowana, Name – nazwa warstwy. Przykładowe odwołanie:
Nazwa=ThisDrawing.Layers.Item(2).Name
AcadModeSpace
Jest to kolekcja, która reprezentuje sobą wszystkie obiekty w przestrzeni modelu rysunku. Ma strukturę identyczną do
obiektu AcadBlock i posiada dokładnie te same metody i właściwości. Nie może jedynie być ani utworzona, ani
usunięta. Odwołujemy się do niej poprzez:
ThisDrawing.ModelSpace
Metody i Właściwości takie jak w AcadBlock.
Dodawanie obiektów do tej kolekcji polega na wywołaniu odpowiedniej dla typu dodawanego obiektu metody
Add***, np. dodanie punktu:
ThisDrawing.ModelSpace.AddPoint Pkt
gdzie Pkt jest argumentem metody AddPoint i reprezentuje zmienną (tablicę 0 do 2) zawierającą współrzędne
punktu.
AcadPaperSpace
Bardzo podobnie jak AcadModelSpace. Odwołujemy się do niej poprzez:
ThisDrawing.PaperSpace
Poniżej wymieniam dla porządku (bez szczegółowego opisu) podstawowe obiekty, które najczęściej dodajemy do
rysunku (jest ich oczywiście o wiele więcej).
AcadPoint
Reprezentuje punkt.
AcadLine
Reprezentuje odcinek.
AcadCircle
Reprezentuje okrąg.
AcadHatch
Reprezentuje kreskowanie.
Wyżej wymienione 5 obiektów zawierają właściwości specyficzne dla swej struktury, a także właściwości AcadObject.
Jeśli chodzi o metody, to również posiadają wszystkie metody AcadObject, niektóre z nich jeszcze dodatkowo
metodę Offset, a te o bogatszej strukturze (np. AcadHatch) dużo więcej.
Metody Add*** z AcadBlock (tylko dwie nam potrzebne)
AddPoint
Tworzy obiekt typu AcadPoint. Argumentem tej metody jest Point typu Variant.
Składnia dla wstawiania w przestrzeni modelowej:
ThisDrawing.ModelSpace.AddPoint Pkt
AddLine
Tworzy obiekt typu AcadLine. Argumentami tej metody są StartPoint i EndPoint typu Variant.
Składnia dla wstawiania w przestrzeni modelowej:
ThisDrawing.ModelSpace.AddLine Pkt1, Pkt2
Metody Get*** z AcadUtility (tylko kilka)
GetString
Zwraca wartość typu String. Argumentem tej metody jest HasSspaces typu Boolean., który określa, czy łańcuch
znakowy może mieć spacje, oraz opcjonalny Prompt typu String, tekst komunikatu.
Składnia:
AdresPliku = ThisDrawing.Utility.GetString(False,”Podaj ścieżkę dostępu”)
GetInteger
Zwraca wartość typu Integer. Argumentem tej metody jest opcjonalny Prompt typu String, tekst komunikatu.
Składnia:
Liczba = ThisDrawing.Utility.GetInteger(”Podaj numer węzła”)
GetReal
Zwraca wartość typu Real. Argumentem tej metody jest opcjonalny Prompt typu String, tekst komunikatu.
Składnia:
x = ThisDrawing.Utility.GetReal(”Podaj współrzędną x”)
To powinno wystarczyć.