VBA obiekty AutoCADa 1
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 2
Nazewnictwo 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ść = wyrażenie 3
Nazewnictwo 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). 4
Nazewnictwo 5
Obiekty (wybrane) AutoCADa 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. 6
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 zawartych w rysunku niżej w hierarchii: Layers zwraca kolekcję warstw w rysunku; ActiveLayer zwraca lub ustala aktywną warstwę; np. kod: ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("0") ustala jako warstwę aktywną warstwę 0 ; ModelSpace zwraca obiekt reprezentujący przestrzeń modelową rysunku; PaperSpace zwraca obiekt reprezentujący obszar papieru rysunku; Utility zwraca obiekt AcadUtility, który zawiera szereg metod komunikacji z użytkownikiem 7
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") 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. 8
AcadLayer Reprezentuje sobą pojedynczą warstwę w rysunku. Odwołujemy się do niej poprzez: ThisDrawing.Layers.Item(indeks) lub ThisDrawing.Layers.Item(nazwa) a do aktywnej 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: Name nazwa warstwy Color kolor na warstwie, Linetype typ linii warstwy, Lineweight grubość linii warstwy, Freeze czy jest zamrożona, LayerOn czy jest włączona, Lock czy jest zablokowana; przykładowe odwołanie: Nazwa=ThisDrawing.Layers.Item(2).Name 9
AcadModelSpace 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, za wyjątkiem utworzenia czy usunięcia. 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.: ThisDrawing.ModelSpace.AddPoint Pkt gdzie Pkt jest argumentem metody AddPoint i reprezentuje zmienną (tablicę 0 do 2) zawierającą współrzędne punktu. 10
Metody Add*** (wybrane) Łuk:.AddArc(CenterPoint, Radius, StartAngle, EndAngle) Okrąg:.AddCircle(CenterPoint, Radius) Elipsa:.AddEllipse(CenterPoint, MajorAxis, RadiusRatio) Linia (odcinek):.addline(startpoint, EndPoint) Punkt:.AddPoint(PointPosition) Linia (odcinek):.addline(startpoint, EndPoint) Półprosta:.AddRay(StartPoint, SecondPoint) Prosta:.AddXLine(FirstPoint, SecondPoint) Tekst:.AddText(TextString, InsertionPoint, Height) Blok tekstowy:.addmtext(insertionpoint, Width, TextString) Kreskowanie:.AddHatch(PatternType, PatternName, Associativity) 11
Metody Get*** z AcadUtility (wybrane) Łańcuch znakowy:.getstring(hasspaces[,prompt]) AdresPliku = ThisDrawing.Utility.GetString(False, Podaj ścieżkę dostępu ) Liczba całkowita:.getinteger([prompt]) Liczba zmiennoprzecinkowa:.getreal([prompt]) Punkt:.GetPoint([BasePoint][,Prompt]) Punkt przekątny:.getcorner(basepoint[,prompt]) Odległość:.GetDistance([BasePoint][,Prompt]) Kąt (wzgl. kąta bazowego):.getangle([basepoint][,prompt]) Kąt bezwzględny:.getorientation([basepoint][,prompt]) 12
Metody SetVariable Służy do ustawiania wartości zmiennych systemowych Składnia: Obiekt.SetVariable NAZWA_ZM, WARTOŚĆ Przykłady: ThisDrawing.SetVariable PDMODE, 32 ThisDrawing.SetVariable PDSIZE, 5 ThisDrawing.SetVariable PDSIZE, -1 13
Metody SetVariable Służy do ustawiania wartości zmiennych systemowych Składnia: Obiekt.SetVariable NAZWA_ZM, WARTOŚĆ Przykłady: ThisDrawing.SetVariable PDMODE, 32 ThisDrawing.SetVariable PDSIZE, 5 ThisDrawing.SetVariable PDSIZE, -1 14
MsgBox MsgBox(prompt[,buttons][,title] [,helpfile,context]) Przyciski (wartości parametru buttons: 0, 1, 2, 3, 4, 5): vbokonly, vbokcancel, vbabortretryignore, vbyesnocancel, vbyesno, vbretrycancel Ikony (wartości parametru buttons: 16, 32, 48, 64): vbcritical, vbquestion, vbexclamation, vbinformation Wybrany przycisk (wartości: 0, 256, 512, 768): vbdefaultbutton1, vbdefaultbutton2, vbdefaultbutton3, vbdefaultbutton4 Modalność: (wartości: 0, 4096) vbapplicationmodal, vbsystemmodal Zwracane wartości (kolejno 1, 2, 3, 4, 5, 6, 7): vbok, vbcancel, vbabort, vbretry, vbignore, vbyes, vbno 15
MsgBox 16
InputBox InputBox(prompt[,title][,default][,xpos] [,ypos][,helpfile,context]) prompt: komunikat w oknie. title: tytuł na pasku (jeśli nie podany, to nazwa aplikacji) default: wartość predefiniowana (jeśli nie podana, to obszar wprowadzania pusty) xpos, ypos: pozycja okna 17
Edytor Visual Basic 18
Edytor Visual Basic 19
Uruchamianie makr W AutoCADzie: Dostępne w oknie dialogowym 'Makro', skąd można je uruchomić Dostępne z linii poleceń -vbarun nazwa_makra Każda procedura i funkcja to osobne makro 20