VBA - obiekty AutoCADavistula.wis.pk.edu.pl/~qmq/AutoCAD_VBA/VBA-obiekty_CADa.pdf · Element...

20
1 VBA – obiekty AutoCADa

Transcript of VBA - obiekty AutoCADavistula.wis.pk.edu.pl/~qmq/AutoCAD_VBA/VBA-obiekty_CADa.pdf · Element...

1

VBA – obiekty AutoCADa

2

ObiektObiektElement 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_obiektuSet zmienna = obiekt

Zwolnienie zmiennej obiektowej:Set obiekt = Nothing

Nazewnictwo

3

Właściwość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

Nazewnictwo

4

MetodaMetodaManipulacja na obiekcie lub dokonywana przez obiekt (możemy ją rozumieć jako procedurę lub funkcję związaną z obiektem).

Wywołanie metody:obiekt.metoda(argumenty)

Nazewnictwo

KolekcjaKolekcjaZbiór obiektów powiązanych ze sobą. Często są to obiekty tego samego typu (np. warstwy rysunku w AutoCADzie, lub arkusze w Excelu).

5

Nazewnictwo

6

Obiekty (wybrane) AutoCADaAcadApplication

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.

7

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

8

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.

9

AcadLayer Reprezentuje sobą pojedynczą warstwę w rysunku.

Odwołujemy się do niej poprzez: ThisDrawing.Layers.Item(indeks)lubThisDrawing.Layers.Item(nazwa)a do aktywnejThisDrawing.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

10

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 Pktgdzie Pkt jest argumentem metody AddPoint i reprezentuje zmienną

(tablicę 0 do 2) zawierającą współrzędne punktu.

11

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)

12

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])

13

Metody SetVariable

Służy do ustawiania wartości zmiennych systemowych

Składnia:Obiekt.SetVariable NAZWA_ZM, WARTOŚĆ

Przykłady:ThisDrawing.SetVariable PDMODE, 32ThisDrawing.SetVariable PDSIZE, 5ThisDrawing.SetVariable PDSIZE, -1

14

Metody SetVariable

Służy do ustawiania wartości zmiennych systemowych

Składnia:Obiekt.SetVariable NAZWA_ZM, WARTOŚĆ

Przykłady:ThisDrawing.SetVariable PDMODE, 32ThisDrawing.SetVariable PDSIZE, 5ThisDrawing.SetVariable PDSIZE, -1

15

MsgBoxMsgBox(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

16

MsgBox

17

InputBoxInputBox(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

18

Edytor Visual Basic

19

Edytor Visual Basic

20

Uruchamianie makr

W AutoCADzie: Dostępne w oknie dialogowym 'Makro', skąd można je uruchomić Dostępne z linii poleceń-vbarun nazwa_makraKażda procedura i funkcja to osobne makro