Professional Documents
Culture Documents
Visual Basic
AutoCAD mona rwnie programowa za pomoc jzyka Visual Basic for Applica-
tions (w skrcie VBA). Za pomoc VBA mona tworzy w peni profesjonalne aplika-
cje oraz proste programy (zwane rwnie makrami) usprawniajce wykonanie zoo-
nych i powtarzalnych operacji.
Programowanie w Visual Basicu to programowanie sterowane zdarzeniowo. Jzyk ten
automatycznie ledzi zdarzenia majce miejsce w systemie (np. kliknicie, podwjne
kliknicie) i poszukuje procedur obsugi zdarze, ktre nastpiy. Wikszo zdarze
jest generowana przez uytkownika za porednictwem myszki i klawiatury.
Korzystanie z gotowych programw VBA
Nie musisz by zawodowym programist, aby
korzysta z gotowych programw napisanych
w Visual Basicu. Na pycie CD doczonej do ni-
niejszej ksiki, w katalogu z rysunkami przyka-
dowymi, znajduje si program o nazwie KOS.DVB
sucy do rysowania bry ACIS w ksztacie pro-
stopadocianu z wyciciami (jak na rysunku z pra-
wej strony).
Narysuj kostk.
Aby wczyta program napisany w Visual Basicu, wybierz z menu [Tools] [Macro >]
[Load Project]. Wska plik KOS.DVB i kliknij przycisk Otwrz.
Na ekranie pojawi si okno informujce, e wczytywany plik zawiera makra.
1434 AutoCAD 2005
Ostrzeenie przed makrami
Kliknij przycisk Enable Macros, aby odblokowa makra. Jeeli tego nie zrobisz, pro-
gram nie bdzie dziaa.
Programy VBA mog zawiera wirusy i dlatego przed ich wczytaniem pojawia si
powysze ostrzeenie. Odblokuj makra tylko wtedy, gdy masz pewno, e program
pochodzi z zaufanego rda. Nie odblokowuj makr, jeeli program pochodzi ze r-
da niepewnego. Wirusy, ktre moesz wprowadzi do systemu t drog mog znisz-
czy wszystkie dane zapisane na dysku!
Wybierz z menu [Tools][Macro >][Macros...]
Wybr programu przeznaczonego do uruchomienia
Wska makro BRYY.KOS i kliknij przycisk Run.
Na ekranie pojawi si okno dialogowe, w ktrym naley wpisa wymiary kostki:
Adugo, Bszeroko, Hwysoko, Rpromie otworu.
Visual Basic 1435
Wpisz wymiary kostki jak na powyszym rysunku.
Po ich wpisaniu kliknij przycisk Rysuj.
Wska punkt wstawienia kostki: wska punkt na ekranie
Kostka zostaa utworzona. Narysuj kilka innych kostek o rnych wymiarach.
Dwie kostki o rnych wymiarach narysowane za pomoc programu KOS.DVB
Jeeli jeste zainteresowany sposobem dziaaniu programu do rysowania kostki, zaj-
rzyj na koniec rozdziau. Znajdziesz tam kod programu wraz z komentarzem.
Edytor VBA VBAIDE
Edytor VBA uruchamiamy za pomoc menu lub poprzez nacinicie na klawiaturze
kombinacji klawiszy ALT-F11.
[Tools][Macro >][Visual Basic Editor]
1436 AutoCAD 2005
Edytor VBA
W skad rodowiska zintegrowanego VBA wchodzi midzy innymi edytor jzyka Visual
Basic, eksplorator projektu, okno kodowe, okno waciwoci, okno moduw i klas, itd.
Pierwszy program
Napiszmy w Visual Basicu bardzo prosty program
sucy do rysowania okrgu. Na ekranie wywie-
tlone zostanie okno dialogowe, w ktrym widocz-
ne bd dwa przyciski: Rysuj i OK. Wida b-
dzie rwnie pole tekstowe promie okrgu. Po
klikniciu przycisku Rysuj uytkownik zostanie
poproszony o wskazanie rodka okrgu. Okno
dialogowe, ktre utworzymy w niniejszym przy-
kadzie, pokazane jest na rysunku z prawej strony.
Jeeli nie chcesz si pogubi zaraz na pocztku przygody z jzykiem Visual Basic, wy-
konaj bardzo dokadnie ponisze czynnoci.
Visual Basic 1437
1. Uruchom AutoCAD-a i rozpocznij edycj nowego rysunku. Nacinij na klawiaturze
kombinacj klawiszy Alt-F11. Uruchomiony zostanie edytor Visual Basica.
2. Nie przejmujc si panujcym na ekranie natokiem elementw wybierz z menu [Ins-
ert][UserForm]. Na ekranie pojawi si pusty formularz. Nacinij przycisk Re-
store Window, aby zmniejszy obszar ekranu zajmowany przez formularz.
Po wstawieniu pustego formularza
Odszukaj dwa bardzo wane okna: Properties
i Toolbox. Przybornik przeznaczony jest do umie-
szczania na formularzu kontrolek, czyli przyciskw,
pl tekstowych, przyciskw opcji, itd. W oknie
waciwoci moemy zmieni waciwoci formula-
rza i kontrolek, ktre zostay na nim umieszczone.
3. Umie na formularzu pierwszy przycisk. W tym celu odszukaj w przyborniku symbol
przycisku CommandButton i przecignij go do formularza. Jeeli przybornik nie jest
widoczny na ekranie, wybierz z menu [View][Toolbox].
1438 AutoCAD 2005
4. Zmie nazw przycisku. Po wstawieniu do formularza kada kontrolka ma jak do-
myln nazw i teoretycznie mona jej nie zmienia. Jednake w Visual Basicu przy-
jty zosta pewien logiczny schemat nazywania kontrolek, tak by nazwa mwia co na
jej temat. Dziki temu w kodzie programu mona atwo zorientowa si z jakim
obiektem mamy do czynienia. Nazwy przyciskw zaczynaj si zwykle od cmd, po
ktrym wystpuje dalsza cz nazwy przycisku. Aby zmieni nazw przycisku, sko-
rzystamy z okna waciwoci. Odszukaj je na ekranie. Jeeli nie jest widoczne, kliknij
ikon Properties Window.
5. Kliknij wstawiony przycisk tak, by go zaznaczy.
Zmie w oknie waciwoci Name jego nazw
na cmdOK.
Nastpnie zmie napis na przycisku na OK
(waciwo Caption).
Po poprawnym wykonaniu powyszych czynnoci na
formularzu powinien by widoczny przycisk z napi-
sem OK, ktrego nazw jest cmdOK.
6. W analogiczny sposb umie na formularzu
drugi przycisk o nazwie cmdRysuj.
7. Nastpnie umie na formularzu pole tekstowe
(TextBox oznaczone w przyborniku ab|); na-
daj mu nazw txtR. Nazwy pl tekstowych po-
siadaj zwykle przedrostek txt. W wyniku tych
operacji powiniene uzyska formularz taki jak
pokazany na rysunku obok.
8. Nacinij na klawiaturze klawisz F5 w celu uruchomienia programu i wywietlenia
formularza na ekranie AutoCAD-a. Po obejrzeniu formularza nacinij przycisk zam-
knicia okna .
9. Po narysowaniu formularza przystpujemy do oprogramowania przyciskw. Visual
Basic automatycznie wykrywa kliknicie przycisku, tak wic nasze zadanie ogranicza
si do oprogramowania procedury obsugi tego zdarzenia, czyli do okrelenia, co po-
winno nastpi, gdy uytkownik kliknie przyciski OK i Rysuj.
10. Rozpoczniemy od przycisku OK. Kliknij ten przycisk tak, by
zosta zaznaczony (jak na rysunku z prawej strony).
Visual Basic 1439
11. Nastpnie kliknij go dwa razy. Na ekranie
pojawi si nowe okno suce do wpro-
wadzania kodu programu. Kursor zosta au-
tomatycznie umieszczony w obrbie pro-
cedury cmdOK_Click. Nazwa wskazuje,
e jest to procedura obsugi kliknicia
przycisku cmdOK. Procedura ta zostanie
wykonana, gdy uytkownik kliknie przy-
cisk OK.
12. W oknie kodu wpisz Unload Me. Ta in-
strukcja nakazuje usunicie formularza z pa-
mici i zakoczenie dziaania programu.
13. Sprawd jak dziaa napisana procedura ob-
sugi przycisku OK. W tym celu kliknij
przycisk Uruchom (Run) lub nacinij na klawiaturze klawisz F5.
14. Zamknij okno klikajc przycisk OK.
15. Przyszed czas na oprogramowanie przycisku Rysuj.
Kliknij ten przycisk tak, by go zaznaczy.
16. Kliknij zaznaczony przycisk dwa razy. W oknie kodu wpisz poniszy program obsugi
kliknicia tego przycisku.
Tworzymy procedur obsugi przycisku
1440 AutoCAD 2005
17. Wyprbuj dziaanie. Uruchom program, wpisz w polu tekstowym promie okrgu
i kliknij przycisk Rysuj. Zostaniesz poproszony o wskazanie rodka okrgu. Wska go
kursorem. Narysuj kilka okrgw o rnych promieniach.
18. Zakocz dziaanie programu klikajc przycisk OK.
Poniej zamieszczono kod programu wraz z komentarzem.
Private Sub cmdRysuj_Click()
'Deklaracja zmiennych:
'Srodek - rodek okrgu (typ zmiennej nie jest okrelony)
Dim Srodek As Variant
'Promien - promie okrgu (liczba podwjnej precyzji)
Dim Promien As Double
'objOkrag - okrg (obiekt AutoCAD-a)
Dim objOkrag As AcadCircle
'Schowanie formularza
Me.Hide
'Wczytanie rodka okrgu.
Srodek = ThisDrawing.Utility.GetPoint(, "Wska rodek: ")
'Odczytanie promienia z pola tekstowego formularza o nazwie txtR
'Funkcja Val zamienia acuch na liczb
Promien = Val(txtR)
'Rysowanie okrgu
Set objOkrag = ThisDrawing.ModelSpace.AddCircle _
(Srodek, Promien)
'Wywietlenie okrgu na ekranie
objOkrag.Update
'Wywietlenie formularza na ekranie
Me.Show
End Sub
Kilka ciekawych przykadw
Poniej przedstawiono przykadowe proste programy napisane w Visual Basicu. Wszy-
stkie zostay opatrzone komentarzami uatwiajcymi zrozumienie ich dziaania. Analiza
programw przykadowych i samodzielne prby tworzenia na ich podstawie wasnych s
znakomit metod opanowania podstaw VBA. Przykady zamieszczone zostay w pod-
katalogu o nazwie VBA, ktry znajduje si w katalogu z przykadami.
Visual Basic 1441
Przykad RYSUJLUK.DVB pokazuje metody wczytywania punktu,
odlegoci i kta oraz tworzenia podstawowych obiektw AutoCAD-
a na przykadzie uku.
RYSUJLUK.DVB
Przykad POLILINIA.DVB pokazuje metody wczytywania punktw
i odlegoci, odczyt danych z pola tekstowego i przycisku opcji
formularza oraz tworzenie zamknitej polilinii z segmentem uko-
wym.
POLILINIA.DVB
PktWstaw
0,1 2,3
4,5 6,7
W przykadzie OKRKOLOR.DVB utworzymy dwukolumnow list
rozwijan zawierajc nazwy kolorw standardowych i ich oz-
naczenia numeryczne. Po wybraniu koloru uytkownik bdzie ryso-
wa okrgi w tym kolorze.
OKRKOLOR.DVB
Przykad WARRYS.DVB utworzymy list rozwijan, z ktrej mona
wybra warstw. Na s wywietlone wszystkie warstwy zdefiniowa-
ne w rysunku. Przykad ten pokazuje atwy sposb tworzenia pro-
stych list rozwijanych (duo atwiejszy ni zaprezentowany w po-
przednim przykadzie).
WARRYS.DVB
Program ZBWSKAZ.DVB umoliwia zmian koloru wskazanych na
ekranie obiektw na czerwony.
ZBWSKAZ.DVB
Program LBLOKOW.DVB Umieszcza na formularzu list nazw
wszystkich blokw zdefiniowanych w rysunku.
LBLOKOW.DVB
Program MENU.DVB pokazuje definiowanie wasnego menu z pozio-
mu Visual Basica.
MENU.DVB
1442 AutoCAD 2005
Program KOS.DVB
W tym podrozdziale znajdziesz omwienie
programu przeznaczonego do rysowania wy-
citej kostki o nazwie KOS.DVB. Przeanalizuj
dokadnie ten program zastosowano w nim
wiele dziaa na bryach.
Program KOS.DVB skada si z nastpuj-
cych elementw:
formularz frmKostka,
procedura obsugi kliknicia przycisku Rysuj,
procedura obsugi kliknicia przycisku Anuluj,
modu Bryy.
Formularz frmKostka
Formularz ten zawiera cztery pola tekstowe (txtA, txtB, txtH, txtR), cztery etykiety
(A, B, C, R) i dwa przyciski (cmdRysuj, cmdAnuluj).
Nazwy kontrolek znajdujcych si na formularzu frmKostka
Procedura obsugi kliknicia przycisku Rysuj
Private Sub cmdRysuj_Click()
C
' A - dugo kostki (o X), B - szeroko kostki (o Y)
' H - wysoko kostki (o Z), R promie otworu
Dim A As Double, B As Double, H As Double, R As Double
'Odczyt wartoci z pl tekstowych formatki
A = Val(txtA)
B = Val(txtB)
H = Val(txtH)
R = Val(txtR)
Visual Basic 1443
C
' Sprawdzenie czy podana dugo kostki A jest wiksza od zera
If A <= 0 Then
MsgBox "Dugo kostki musi by wiksza od zera!"
txtA.SetFocus
Exit Sub
End If
' Sprawdzenie czy podana szeroko kostki B jest wiksza od zera
If B <= 0 Then
MsgBox "Szerko kostki musi by wiksza od zera!"
txtB.SetFocus
Exit Sub
End If
' Sprawdzenie czy podana wysoko kostki H jest wiksza od zera
If H <= 0 Then
MsgBox "Wysoko kostki musi by wiksza od zera!"
txtH.SetFocus
Exit Sub
End If
' Sprawdzenie czy podany promie otworu jest wikszy od zera
If R <= 0 Then
MsgBox "Promie otworu musi by wikszy od zera!"
txtR.SetFocus
Exit Sub
End If
'Wyznaczenie najkrtszego boku kostki: A, B albo H
Dim NajkrotszyBok As Double
NajkrotszyBok = A: If B < A Then NajkrotszyBok = B
If H < NajkrotszyBok Then NajkrotszyBok = H
'Sprawdzenie czy promie otworu jest wikszy od poowy najkrtszego boku
If R >= (NajkrotszyBok / 2#) Then
MsgBox "Za duy promie okrgu!"
txtR.SetFocus
Exit Sub
End If
C
'Schowanie formatki
frmKostka.Hide
W celu dokonania wycicia w kostce, narysujemy dwa walce, a nastpnie dwa mae
prostopadociany i odejmiemy je od kostki. Rozpoczynamy od wyznaczenia wysoko-
ci walcw Hcyl. Wysoko walca powinna by nieco wiksza od dugoci najdu-
szego boku kostki. Przypisujemy zmiennej Hcyl warto A albo B (w zalenoci od
tego, ktra warto jest wiksza). Nastpnie zwikszamy wysoko (mnoymy przez
wspczynnik 1.1) tak eby walec nieco wystawa z obu stron. W ten sposb unik-
niemy problemu wsplnej paszczyzny podstawy walca i boku kostki, co mogoby pro-
wadzi do pojawienia si niejednoznacznoci przy odejmowaniu bry.
Visual Basic 1447
C
W wyniku dwukrotnego wywoania metody
AddCylinder tworzone s dwa identyczne
walce: cyl1Obj i cyl2Obj. rodek tych wal-
cw znajduje si rodku kostki (srodek), wyso-
ko okrela zmienna Hcyl , a promie R.
Walce zostan obrcone o 90 stopni. Kt obrotu
(wyraony w radianach) zapisujemy w zmiennej
katObrotu.