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ć.