You are on page 1of 20

Visual Basic 1433

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

'Wczytanie punktu wstawienia kostki:


'Uytkownik wskazuje punkt wstawienia na ekranie
Dim pktWstaw As Variant
pktWstaw = ThisDrawing.Utility.GetPoint(, "Wska punkt wstawienia kostki: ")
'Obliczenie wsprzdnych rodka kostki
Dim srodek(0 To 2) As Double
srodek(0) = pktWstaw(0) + (A / 2#)
srodek(1) = pktWstaw(1) + (B / 2#)
srodek(2) = pktWstaw(2) + (H / 2#)
C
'Utworzenie kostki o nazwie boxObj
Dim boxObj As Acad3DSolid
Set boxObj = ThisDrawing.ModelSpace.AddBox(srodek, A, B, H)
1444 AutoCAD 2005

'Obliczenie wysokoci walca Hcyl.


'Przyjmujemy, e wysoko jest rwna dugoci lub szerokoci
'w zalenoci, ktra wartoc jest wiksza
Dim Hcyl As Double
Hcyl = A: If B > A Then Hcyl = B
'Nastpnie zwikszamy wysoko o 10% eby walec "troch" wystawa
'z obu stron. W ten sposb unikniemy problemu wsplnej paszczyzny
'podstawy walca i boku kostki co mogoby prowadzi do niejednoznacznoci
'przy odejmowaniu bry
Hcyl = Hcyl * 1.1
C
'Tworzenie dwch identycznych pionowych walcw
'Po utworzeniu walce zostan obrcone o 90 stopni wzgldem rodka kostki
Dim cyl1Obj As Acad3DSolid, cyl2Obj As Acad3DSolid
Set cyl1Obj = ThisDrawing.ModelSpace.AddCylinder(srodek, R, Hcyl)
Set cyl2Obj = ThisDrawing.ModelSpace.AddCylinder(srodek, R, Hcyl)
'Deklaracja kta obrotu i punktu obrotu
'O obrotu bdzie wyznaczona przez redek kostki oraz punkt obrotu
Dim pktObrotu(0 To 2) As Double, katObrotu As Double
'Kt obrotu (90 stopni) wyraony w radianach
katObrotu = 90 * 3.141592 / 180#

'O obrotu wyznacza rodek kostki i punkt, ktrego wsprzdne Y i Z s


'takie same
'jak rodka kostki, wsprzdna X = wsprzdna X punktu wstawienia
pktObrotu(0) = pktWstaw(0): pktObrotu(1) = srodek(1):
pktObrotu(2) = srodek(2)
'Obrt pierwszego walca
cyl1Obj.Rotate3D pktObrotu, srodek, katObrotu

'O obrotu wyznacza rodek kostki i punkt, ktrego wsprzdne X i Z s


'takie same
'jak rodka kostki, wsprzdna Y = wsprzdna Y punktu wstawienia
pktObrotu(0) = srodek(0): pktObrotu(1) = pktWstaw(1):
pktObrotu(2) = srodek(2)
'Obrt drugiego walca
cyl2Obj.Rotate3D pktObrotu, srodek, katObrotu
C
'Suma walcw. Wynik zapisywany jest w cyl1Obj
cyl1Obj.Boolean acUnion, cyl2Obj
CC
'Deklaracja dwch mniejszych prostopadocianw
Dim box1Obj As Acad3DSolid, box2Obj As Acad3DSolid
'rodek mniejszych prostopadocianw
Dim srodek1(0 To 2) As Double
srodek1(0) = srodek(0)
srodek1(1) = srodek(1)
srodek1(2) = srodek(2) + (H / 4#)
'Tworzenie mniejszych prostopadocianw
Set box1Obj = ThisDrawing.ModelSpace.AddBox(srodek1, Hcyl, 2#*R, H/2#)
Visual Basic 1445
Set box2Obj = ThisDrawing.ModelSpace.AddBox(srodek1, Hcyl, 2#*R, H/2#)
'Punkt obrotu maego prostopadocianu
pktObrotu(0)=srodek(0)
pktObrotu(1)=srodek(1)
pktObrotu(2)=srodek(2)+H/2#
'Obrt maego prostopadocianu
box2Obj.Rotate3D pktObrotu, srodek, katObrotu
CC
'Suma maych prostopadocianw. Wynik zapisywany jest w box1Obj
box1Obj.Boolean acUnion, box2Obj
'Odjcie sumy maych prostopadocianw od kostki
boxObj.Boolean acSubtraction, box1Obj
CC
'Odjcie sumy walcw od kostki
boxObj.Boolean acSubtraction, cyl1Obj
C
'Zmiana kierunku widzenia
Dim NewDirection(0 To 2) As Double
NewDirection(0) = -1: NewDirection(1) = -1.5: NewDirection(2) = 1
ThisDrawing.ActiveViewport.Direction = NewDirection
ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
'Dopasowanie wspczynnika skali powikszenia
ZoomAll
'Koniec dziaania
Unload Me
End Sub
C
Deklaracja zmiennych, w ktrych umiesz-
czone zostan dane geometryczne definiu-
jce kostk:
A dugo kostki (w kierunku osi X
globalnego ukadu wsprzdnych),
B szeroko kostki (w kierunku osi Y),
H wysoko kostki (w kierunku osi Z),
R promie okrgu otworu.
Po deklaracji zmiennych nastpuje przypisanie im wartoci odczytanych z pl teksto-
wych formularza. Poniewa w polach tekstowych znajduj si acuchy, w celu zamia-
ny ich na wartoci numeryczne stosujemy funkcj Val.
1446 AutoCAD 2005
C
Sprawdzenie, czy podano dodatnie wartoci dugoci, szerokoci, wysokoci kostki
oraz promienia otworu. Jeeli warunek ten nie zosta speniony, wywietlane jest okno
dialogowe z odpowiednim komunikatem (MsgBox), nastpnie kursor ustawiany jest
pomoc metody SetFocus w odpowiednim polu za, a procedura obsugi przycisku
koczy dziaanie.
Nastpnie wyznaczany jest najkrtszy bok kostki (A, B albo H) i sprawdza si, czy
podany promie otworu jest mniejszy od najkrtszego boku. Dalsza cze procedury
realizowana jest pod tym warunkiem.
Na tym koczy si sprawdzanie poprawnoci wprowadzonych danych. Czytelnicy lu-
bicy wyzwania mog zastanowi si w jaki sposb sprawdzi, czy w polach teksto-
wych wpisano wartoci numeryczne.
C
Jeeli wszystkie warunki poprawnoci danych zostay spenione, przystpujemy do
wczytanie punktu wstawienia kostki. Rozpoczynamy od schowanie formularza za po-
moc metody frmKostka.Hide.

Metoda ThisDrawing.Utility.GetPoint wywietla na ekranie zaproszenie


do wskazania punktu wstawienia kostki. Uytkownik moe wskaza na ekranie ten
punkt kursorem lub wpisa wsprzdne z klawiatury. Punkt wstawienia jest zapisany
w zmiennej pktWstaw zadeklarowanej jako Variant.
Po wczytaniu punktu wstawienia obliczane s wsprzdne rodka kostki, ktry bdzie
wykorzystany jako jeden z parametrw metody jej tworzenia. Wsprzdne rodka
zapisywane s w zmiennej srodek, ktra stanowi trzyelementow tablic. Zwr
uwag, e wsprzdna X jest przechowywana jako zerowy element tablicy srodek.
C
Deklarujemy zmienn boxObj jako Acad3DSolid, czyli bry ACIS. ThisDra-
wing.ModelSpace.AddBox tworzy prostopadocian o rodku znajdujcym si
w punkcie, ktrego wsprzdne zapisane s w tablicy srodek. Dugo prostopa-
docianu okrela zmienna A, jego szeroko zmienna B, a wysoko zmienna H.

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.

Okrelamy o obrotu pierwszego walca. O ta


wyznaczy rodek kostki i punkt, ktrego wsp-
rzdne Y i Z s takie same jak wsprzdne rod-
ka kostki, natomiast wsprzdna X jest identycz-
na ze wsprzdn X punktu wstawienia.
Metoda cyl1Obj.Rotate3D obraca walec
cyl1Obj wok osi obrotu okrelonej przez
zmienn pktObrotu i srodek.

Okrelamy o obrotu drugiego walca. O ta wy-


znaczy rodek kostki i punkt, ktrego wsprzd-
ne X i Z s takie same jak wsprzdne rodka
kostki, natomiast wsprzdna Y jest identyczna
ze wsprzdn Y punktu wstawienia.
Metoda cyl2Obj.Rotate3D obraca walec
cyl2Obj wok osi obrotu okrelonej przez
zmienn pktObrotu i srodek.
C
Wyznaczana jest suma walcw za pomoc
cyl1Obj.Boolean acUnion, cyl2Obj.
W wyniku sumowania powstaje brya zapisana
w zmiennej cyl1Obj.
CC
Do wykonania w kostce wycicia potrzebne s
jeszcze dwa prostopadociany: box1Obj
i box2Obj. rodek prostopadocianw (umie-
szczony w wysokoci ponad rodkiem kostki)
zapisujemy w zmiennej srodek1. Prostopado-
ciany tworzone s za pomoc AddBox.
Nastpnie obracamy jeden z prostopadocianw
(box2Obj) o 90 stopni.
1448 AutoCAD 2005
CC
box1Obj.Boolean acUnion tworzy sum
maych prostopadocianw. Wynik dziaania za-
pisywany jest w zmiennej box1Obj.
boxObj.Boolean acSubtraction
box1Obj odejmuje sum maych prostopado-
cianw (box1Obj) od kostki. Wynik dziaania
zapisywany jest w zmiennej boxObj.
CC
boxObj.Boolean acSubtraction
cyl1Obj odejmuje od kostki sum walcw
(cyl1Obj). Wynik dziaania zapisywany jest
w zmiennej boxObj.
W wyniku szeregu dziaa przeprowadzonych
na bryach uzyskalimy kostk tak jak pokazano
na rysunku z prawej strony.
C
Na zakoczenie zmieniamy kierunek widzenia tak, by uzyska widok przestrzenny.
Definiowany jest nowy kierunek widzenia NewDirection, zmienia si kierunek wi-
dzenia biecej rzutni, wykonywane jest powikszenie do granic lub zakresu, a pro-
gram koczy dziaanie (Unload Me).
Procedura obsugi kliknicia przycisku Anuluj
Private Sub cmdAnuluj_Click()
'Po klikniciu przycisku Anuluj
Unload Me
End Sub
Po klikniciu przycisku Anuluj program koczy dziaanie.
Modu Bryy
Sub Kos()
frmKostka.Show
End Sub
W module Bryy zdefiniowana jest procedura Kos, ktra wywietla formularz noszcy
nazw frmKostka.
Visual Basic 1449
Automatyczne wstawianie blokw
(przykad)
Wiele czynnoci edycyjnych moe zosta zautomatyzowanych dziki programowaniu
w jzyku Visual Basic (VBA). W niniejszym przykadzie zaprezentuj bardzo proste
narzdzie suce do losowego wstawiania blokw w okrelonym prostoktnym obsza-
rze rysunku.
Wczytaj rysunek KONIE.DWG. Wewntrz prostokta (symbolizujce-
go teren rekreacyjny) rozmie losowo bloki: ko i drzewo.
KONIE.DWG
Otwrz rysunek KONIE.DWG.
Wybierz z menu [Tools][Macro >][Load Project...].
W podkatalogu Vba katalogu przykadw do ksiki, wska plik LOSWSTABLOK. DVB
Kliknij przycisk Otwrz.
Na ekranie pojawi si okno informujce, e wczytywany plik zawiera makra.
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 ich, jeeli program pochodzi ze rda
niepewnego. Wirusy, ktre moesz wprowadzi do systemu t drog mog zniszczy
wszystkie zapisane na dysku dane!
Wybierz z menu [Tools][Macro >] [Macros...].
Wska plik LosWstablok i kliknij przycisk Run.
W polu Liczba blokw wpisz liczb 15.
Kliknij przycisk Rysuj.
1450 AutoCAD 2005
Wska pierwszy punkt obszaru: wska lewy dolny naronik prostokta
Wska przeciwlegy naronik: wska prawy grny naronik prostokta
Nastpnie wybierz blok drzewo z listy Wybierz blok:.
W polu Liczba blokw wpisz liczb 20.
Kliknij przycisk Rysuj.
Wska pierwszy punkt obszaru: wska lewy dolny naronik prostokta
Wska przeciwlegy naronik: wska prawy grny naronik prostokta
Kliknij przycisk OK.
W oknie dialogowym wybieramy nazw bloku i liczb wstawie
Visual Basic 1451
Bloki zostay wstawione w losowo wybranych miejscach
Jeeli przykad ten wydaje Ci si banalny, sprbuj zmodyfikowa program tak, aby blo-
ki mona byo wstawia nie tylko w prostoktnym obszarze, ale rwnie, np. w obszarze
okrelonym przez polilini lub splajn. Warto rwnie zadba o to, by bloki nie wysta-
way poza wskazany obszar. Moesz rwnie postara si, by na formularzu pojawia si
podgld bloku.
1452 AutoCAD 2005

You might also like