You are on page 1of 33

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

AutoCAD 2002 i 2004.


Tworzenie makr w VBA
Autor: Jeffrey E. Clark
Tumaczenie: Jacek Marzec
ISBN: 83-7197-861-8
Tytu oryginau: VBA for AutoCAD 2002
Writing AutoCAD Macros
Format: B5, stron: 672
AutoCAD 2002 jest nie tylko najpopularniejszym na wiecie narzdziem do
projektowania i krelenia: to take potna, programowalna platforma suca do
automatyzacji zoonych zada projektowych integrujca dane projektowe z firmowymi
systemami informatycznymi i pozwalajca rozwiza wiele problemw technicznych
i biznesowych. Kluczem do tych moliwoci jest jzyk Visual Basic for Applications.
Z kolei klucz do programowania za pomoc tego jzyka trzymasz wanie w swoich
rkach, jest nim ksika AutoCAD 2002. Tworzenie makr w VBA
Jej autorowi, jak nikomu innemu, udao si powiza kluczowe narzdzia AutoCAD-a
z moliwociami jzyka VBA. Ukazujc wspdziaanie AutoCAD-a i VBA w warunkach
rzeczywistej pracy pomagaj czytelnikowi tworzy praktyczne aplikacje.
W kolejnych etapach czytelnik:
Przejmie kontrol nad AutoCAD-em: opanuje podstawy automatyzacji, COM
oraz programowanie zorientowane obiektowo
Zacznie swobodnie porusza si po interaktywnym rodowisku projektowania
VBA dla AutoCAD-a
Wniknie w budow pliku DXF, aby lepiej zrozumie struktur bazy danych
rysunku AutoCAD-a
Opanuje model obiektu AutoCAD-a: dokumenty, interfejs uytkownika, zarzdzanie
plikami, zbiory, obiekty i inne elementy
Zautomatyzuje obiekty graficzne 2D i 3D, zewntrzne odniesienia, elementy, bryy,
wymiary oraz zdarzenia
Zastosuje jzyk VBA do sterowania obszarem papieru, rzutniami oraz wydrukiem
Poszerzy moliwoci AutoCAD-a o komunikacj z innymi aplikacjami
Pogbisz swoje umiejtnoci ledzc powstawanie kompletnej aplikacji, integrujcej
rysunek AutoCAD-a z baz danych Microsoft Access za pomoc technologii DAO
(Data Access Objects) Microsoftu. Ksika AutoCAD 2002. Tworzenie makr w VBA
zawiera rwnie zwize opisy zmiennych systemowych i wyliczeniowych AutoCAD-a,
dziedziczenia obiektw oraz elementw graficznych. Jeli jeste gotw okiezna ca
moc zawart w AutoCAD-zie 2002, jest to ksika ktrej szukae!

Spis treci
Przedmowa............................................................................................13

Cz I

rodowisko VBA AutoCAD-a................................................ 21

Rozdzia 1. Przejcie kontroli nad AutoCAD-em ........................................................23


Komponenty i technologia Automation....................................................................................24
Podstawy.............................................................................................................................24
Spojrzenie oglne ...............................................................................................................27
Szczegy............................................................................................................................28
Tworzenie rysunku za pomoc Visual Basica..............................................................................31
Ustawianie dostpnych odniesie.......................................................................................32
Tworzenie procedury ..........................................................................................................32
Wicej na temat komponentw.................................................................................................33
Dziedziczenie w AutoCAD-zie ..........................................................................................33
Tablice metod, waciwoci i zdarze.......................................................................................35
Podsumowanie ..........................................................................................................................37

Rozdzia 2. rodowisko VBA ....................................................................................39


Tworzenie i edycja makr...........................................................................................................39
Okna projektowania............................................................................................................40
Okna usuwania bdw.......................................................................................................42
Zarzdzanie makrami i ich wykonywanie ................................................................................47
Menader VBA...................................................................................................................47
Okno dialogowe Open VBA Project ..................................................................................48
Okno dialogowe Macros.....................................................................................................49
Wiersz polece AutoCAD-a .....................................................................................................50
Podsumowanie ..........................................................................................................................51

Rozdzia 3. DXF: Klucz do struktury rysunku ............................................................53


Format DXF ..............................................................................................................................53
Sekcje Objects i Classes .....................................................................................................55
Stae kody grup ...................................................................................................................55
Zmienne kody grup.............................................................................................................56
Znaczniki podkategorii .......................................................................................................57
Ogldanie rysunku za pomoc VBA.........................................................................................58
Procedura GetSubclass odczytuje plik DWG .....................................................................58
Procedura DXFsearch odczytuje plik DXF ........................................................................61
AutoLISP a VBA ......................................................................................................................65
Zalety VBA.........................................................................................................................66
Program narzdziowy VBA................................................................................................67
Podsumowanie ..........................................................................................................................67

AutoCAD 2002 i 2004. Tworzenie makr w VBA

Rozdzia 4. Elementy modelu obiektu.......................................................................69


Interfejsy Automation ...............................................................................................................69
Obiekt Application....................................................................................................................70
Zbir Documents.......................................................................................................................71
Zbiory ModelSpace i PaperSpace.......................................................................................71
Zbiory tabelaryczne ............................................................................................................72
Zbiory obiektowe................................................................................................................73
Obiekt Document i jego elementy ............................................................................................74
Obiekt Preferences ....................................................................................................................78
Menu i paski narzdzi uytkownika..........................................................................................79
Zbir MenuBar ...................................................................................................................79
Zbir MenuGroups .............................................................................................................80
Podsumowanie ..........................................................................................................................81

Cz II

Zastosowanie modelu obiektu AutoCAD-a ........................... 83

Rozdzia 5. Dokumenty i interfejs uytkownika .........................................................85


Metody i waciwoci................................................................................................................87
Zarzdzanie plikami..................................................................................................................88
Tworzenie pliku rysunkowego ...........................................................................................88
Otwieranie, zapisywanie i zamykanie rysunku ..................................................................89
Metoda WBlock..................................................................................................................93
Eksportowanie i importowanie plikw...............................................................................93
Inne narzdzia zarzdzania plikami....................................................................................94
Interfejs uytkownika................................................................................................................95
Okna....................................................................................................................................95
Zoom...................................................................................................................................99
Widoki zdefiniowane przez uytkownika ........................................................................100
Rzutnie..............................................................................................................................102
Hipercza ...............................................................................................................................109
Zmienne wyliczeniowe AutoCAD-a.......................................................................................110
Tablice metod, waciwoci i zdarze.....................................................................................111
Podsumowanie ........................................................................................................................111

Rozdzia 6. Zbiory i obiekty ...................................................................................121


Obiekt Application..................................................................................................................121
Metody..............................................................................................................................121
Waciwoci......................................................................................................................121
Obiekt Document ....................................................................................................................123
Metody..............................................................................................................................123
Waciwoci......................................................................................................................125
Zbiory ...............................................................................................................................130
Zarzdzanie zbiorami..............................................................................................................131
Metody..............................................................................................................................131
Waciwoci......................................................................................................................134
Zbiory tabelaryczne.................................................................................................................136
Zbir Layers......................................................................................................................136
Zbir LayerStateManager.................................................................................................138
Zbir Linetypes.................................................................................................................140
Zbir RegisteredApplications...........................................................................................141
Zbir TextStyles ...............................................................................................................141
Lokalne ukady wsprzdnych ........................................................................................143
Tablice metod, waciwoci i zdarze.....................................................................................145
Podsumowanie ........................................................................................................................145

Spis treci

Rozdzia 7. Obiekty Utility .....................................................................................153


Zbiory wskaza, filtry i grupy.................................................................................................154
Zbiory wskaza.................................................................................................................154
Filtry .................................................................................................................................159
Grupy ................................................................................................................................160
Obiekt Utility ..........................................................................................................................161
Pobieranie danych.............................................................................................................162
Konwersja danych ............................................................................................................169
Dostp do Internetu...........................................................................................................174
Sowniki i obiekt XRecord......................................................................................................177
Tablice metod, waciwoci i zdarze.....................................................................................179
Podsumowanie ........................................................................................................................179

Rozdzia 8. Bloki i zewntrzne odnoniki..................................................................183


Bloki........................................................................................................................................184
Korzystanie z blokw .......................................................................................................185
Dostp do odnonikw blokw ........................................................................................188
Atrybuty i odniesienia do atrybutw.......................................................................................189
Waciwoci......................................................................................................................190
Blok zawierajcy dane......................................................................................................191
Obiekt MInsertBlock...............................................................................................................195
Waciwoci......................................................................................................................195
Obiekt Database ......................................................................................................................197
Metoda CopyObjects ........................................................................................................197
Waciwoci obiektu Database .........................................................................................199
Zewntrzne odnoniki .............................................................................................................200
Metody..............................................................................................................................200
Redefinicja zewntrznych odnonikw ............................................................................202
Arkusze ...................................................................................................................................205
Tablice metod, waciwoci i zdarze.....................................................................................205
Podsumowanie ........................................................................................................................205

Rozdzia 9. Elementy.............................................................................................213
Wsplne metody i waciwoci...............................................................................................213
Definicje ...........................................................................................................................214
3DFace ....................................................................................................................................214
Metody..............................................................................................................................214
Waciwo .......................................................................................................................215
3DPoly ....................................................................................................................................217
Metoda ..............................................................................................................................217
Waciwoci......................................................................................................................217
Arc...........................................................................................................................................218
Waciwoci......................................................................................................................219
Circle.......................................................................................................................................221
Waciwoci......................................................................................................................221
Ellipse......................................................................................................................................223
Waciwoci......................................................................................................................223
Hatch .......................................................................................................................................225
Metody..............................................................................................................................225
Waciwoci......................................................................................................................226
LightWeightPolyline...............................................................................................................228
Metody..............................................................................................................................228
Waciwoci......................................................................................................................229

AutoCAD 2002 i 2004. Tworzenie makr w VBA


Line .........................................................................................................................................231
Waciwoci......................................................................................................................231
MLine......................................................................................................................................232
Waciwoci......................................................................................................................232
MText......................................................................................................................................235
Waciwoci......................................................................................................................236
Point ........................................................................................................................................238
PolyfaceMesh..........................................................................................................................239
Waciwoci......................................................................................................................240
PolygonMesh (3DMesh) .........................................................................................................243
Metoda ..............................................................................................................................243
Waciwoci......................................................................................................................243
Polyline ...................................................................................................................................248
Metody..............................................................................................................................248
Waciwoci......................................................................................................................248
Raster ......................................................................................................................................250
Metoda ..............................................................................................................................251
Waciwoci......................................................................................................................251
Ray ..........................................................................................................................................253
Waciwoci......................................................................................................................253
Region .....................................................................................................................................255
Metoda ..............................................................................................................................256
Waciwoci......................................................................................................................256
Shape.......................................................................................................................................258
Metoda ..............................................................................................................................258
Waciwoci......................................................................................................................258
Solid ........................................................................................................................................260
Spline ......................................................................................................................................261
Metody..............................................................................................................................262
Waciwoci......................................................................................................................263
Text .........................................................................................................................................265
Waciwoci......................................................................................................................265
Trace........................................................................................................................................268
XLine ......................................................................................................................................270
Waciwoci......................................................................................................................271
Metody, waciwoci i zdarzenia zwizane z elementami graficznymi..................................271
Podsumowanie ........................................................................................................................272

Rozdzia 10. Bryy ...................................................................................................279


Box ..........................................................................................................................................280
Cone ........................................................................................................................................281
Cylinder...................................................................................................................................283
EllipticalCone..........................................................................................................................284
EllipticalCylinder ....................................................................................................................284
ExtrudedSolid..........................................................................................................................285
ExtrudedSolidAlongPath ........................................................................................................287
RevolvedSolid.........................................................................................................................289
Sphere......................................................................................................................................291
Torus .......................................................................................................................................292
Wedge .....................................................................................................................................293
Metody edycji bry ..................................................................................................................294
Waciwoci masowe ..............................................................................................................298
Podsumowanie ........................................................................................................................301

Spis treci

Rozdzia 11. Wymiary ..............................................................................................303


Pojcia.....................................................................................................................................303
Menader stylw wymiarowania......................................................................................304
Zmienne wymiarowania, style i nadpisywanie.................................................................306
Asocjatywno..................................................................................................................306
Rodzaje wymiarw .................................................................................................................307
Dim3PointAngular............................................................................................................307
DimAligned ......................................................................................................................309
DimAngular ......................................................................................................................310
DimDiametric ...................................................................................................................312
DimOrdinate .....................................................................................................................313
DimRadial.........................................................................................................................315
DimRotated.......................................................................................................................316
Linia odniesienia...............................................................................................................317
Tolerancja .........................................................................................................................320
Waciwoci wymiarowania ...................................................................................................322
Linie i strzaki ...................................................................................................................323
Tekst .................................................................................................................................326
Dopasowanie.....................................................................................................................326
Jednostki podstawowe ......................................................................................................327
Jednostki dodatkowe.........................................................................................................328
Tolerancje .........................................................................................................................329
Inne waciwoci wymiarowe...........................................................................................330
Zmienne wymiarowe niezwizane z waciwociami ......................................................332
Tablice metod, waciwoci i zdarze.....................................................................................333
Podsumowanie ........................................................................................................................338

Rozdzia 12. Edycja.................................................................................................339


Metody zwizane z edycj ......................................................................................................339
Array .................................................................................................................................340
Copy..................................................................................................................................342
Explode .............................................................................................................................343
GetBoundingBox ..............................................................................................................344
IntersectWith.....................................................................................................................345
Mirror................................................................................................................................346
Move .................................................................................................................................348
Offset ................................................................................................................................348
Rotate................................................................................................................................349
ScaleEntity........................................................................................................................350
TransformBy.....................................................................................................................351
Undo .................................................................................................................................353
Waciwoci informacyjne......................................................................................................354
Dostp do wiersza polece......................................................................................................359
Inne metody, waciwoci i procedury zwizane z edycj......................................................360
Podsumowanie ........................................................................................................................361

Rozdzia 13. AutoCAD i zdarzenia ............................................................................363


Zdarzenia obiektu Application................................................................................................363
Zdarzenia poziomu aplikacji.............................................................................................365
Zdarzenia obiektu Document ..................................................................................................366
Procedury zdarze obiektu AcadDocument .....................................................................367
Zdarzenia poziomu dokumentu ........................................................................................368
Zdarzenia obiektu Object ........................................................................................................369
Ograniczenia obsugi zdarze .................................................................................................371
Podsumowanie ........................................................................................................................372

AutoCAD 2002 i 2004. Tworzenie makr w VBA

Rozdzia 14. Formularze i kontrolki ..........................................................................373


Zdarzenia dotyczce polece ..................................................................................................376
Zdarzenia dotyczce formularzy.............................................................................................378
Kolejno zaznaczania ............................................................................................................379
Narzdzie Relative ..................................................................................................................380
Modu Relative .................................................................................................................381
Formularz frmRelative......................................................................................................386
Metody i waciwoci kontrolek .............................................................................................392
Podsumowanie ........................................................................................................................392

Rozdzia 15. Obszar papieru i plotowanie .................................................................397


Interfejs plotowania.................................................................................................................397
Tabele stylw plotowania .................................................................................................397
Ustawienia plotera ............................................................................................................397
Arkusze obszaru papieru...................................................................................................398
Ustawienia systemowe......................................................................................................398
Obiekty PlotConfiguration oraz Layout..................................................................................399
Ustawienia wydruku .........................................................................................................399
Arkusze .............................................................................................................................402
Wsplne metody i waciwoci ........................................................................................402
Rzutnie obszaru papieru..........................................................................................................410
Metody..............................................................................................................................412
Waciwoci......................................................................................................................413
Obiekt Plot ..............................................................................................................................414
Metody..............................................................................................................................414
Waciwoci......................................................................................................................415
Projekt BatchPlot ....................................................................................................................415
Modu FrmPlotFiles..........................................................................................................416
Modu BatchPlot...............................................................................................................424
Metody i waciwoci drukowania..........................................................................................428
Podsumowanie ........................................................................................................................434

Rozdzia 16. Ustawienia ..........................................................................................435


Style programowania ..............................................................................................................436
Pliki .........................................................................................................................................436
Metody..............................................................................................................................436
Waciwoci......................................................................................................................437
Ekran .......................................................................................................................................438
Wydajno wywietlania ..................................................................................................439
Rozdzielczo wywietlania .............................................................................................440
Elementy arkusza..............................................................................................................440
Elementy okna ..................................................................................................................441
Otwieranie i zapisywanie plikw............................................................................................443
Zewntrzne odnoniki.......................................................................................................443
rodki ochrony pliku ........................................................................................................444
Otwieranie i zapisywanie plikw......................................................................................444
Aplikacje ObjectARX.......................................................................................................445
Wydruk....................................................................................................................................445
Standardowe ustawienia wydruku dla nowych rysunkw................................................445
Standardowe zachowanie stylw wydruku dla nowych rysunkw ..................................446
Oglne ustawienia wydruku .............................................................................................447
System.....................................................................................................................................447
Opcje poczenia baz danych............................................................................................448
Opcje oglne.....................................................................................................................448

Spis treci

Parametry uytkownika...........................................................................................................449
AutoCAD DesignCenter...................................................................................................450
Hipercze .........................................................................................................................450
Ustawienia szerokoci linii ...............................................................................................451
Waciwoci sortowania obiektw ...................................................................................451
Priorytet przy wprowadzaniu wsprzdnych ..................................................................452
Standardowe zachowanie Windows .................................................................................452
Pomoce rysunkowe .................................................................................................................453
AutoSnap ..........................................................................................................................453
AutoTrack .........................................................................................................................454
Wybr......................................................................................................................................455
Uchwyty............................................................................................................................455
Tryby wyboru oraz wskanik zbioru wskaza .................................................................456
Profile......................................................................................................................................456
Metody..............................................................................................................................457
Metody i waciwoci zwizane z ustawieniami.....................................................................458
Podsumowanie ........................................................................................................................458

Rozdzia 17. Menu ..................................................................................................463


Menu uytkownika i paski narzdziowe.................................................................................464
Spojrzenie na struktur menu ...........................................................................................465
Metody..............................................................................................................................467
Waciwoci......................................................................................................................470
Menu rozwijane.......................................................................................................................472
Paski narzdzi .........................................................................................................................474
Zapisywanie modyfikacji........................................................................................................477
Tablice metod i waciwoci ...................................................................................................477
Podsumowanie ........................................................................................................................477

Cz III Komunikacja z innymi aplikacjami i Internetem.................. 481


Rozdzia 18. Rozszerzalno ....................................................................................483
Dane dodatkowe......................................................................................................................483
Metody..............................................................................................................................484
Wykorzystanie polilinii i danych dodatkowych ...............................................................488
Interfejs VBA..........................................................................................................................499
Metody..............................................................................................................................499
Waciwoci......................................................................................................................500
Zdalne uruchamianie VBA ...............................................................................................501
Status braku dokumentw.......................................................................................................502
Aplikacje ARX........................................................................................................................502
Metody..............................................................................................................................502
Podsumowanie ........................................................................................................................503

Rozdzia 19. Projekt przestrzeni biurowej .................................................................505


Baza danych Microsoft Access ...............................................................................................505
Tabele, klucze oraz ograniczenia integralnoci ................................................................506
Tworzenie okna dialogowego uytkownika .....................................................................507
Tworzenie zapyta w tle okna dialogowego ....................................................................509
Interfejs AutoCAD Access.................................................................................................513
Procedura cbo_Group_Change.........................................................................................516
Procedura lstDepartment_AfterUpdate ............................................................................518
Procedura lstProgDetail_Click .........................................................................................520
Przydzia powierzchni ......................................................................................................520
Podsumowanie ........................................................................................................................524

10

AutoCAD 2002 i 2004. Tworzenie makr w VBA

Rozdzia 20. Model obiektu DWF .............................................................................525


Drawing Web Format..............................................................................................................525
Struktura pliku ..................................................................................................................526
Kody operacji....................................................................................................................527
Wsprzdne logiczne.......................................................................................................528
Aplikacja odczytujca Excela .................................................................................................528
Modu XLocate.................................................................................................................529
Formularz XLdwf .............................................................................................................530
Opis obiektu Whip!.................................................................................................................538
Metody i waciwoci oglne ...........................................................................................538
Inne zbiory i obiekty.........................................................................................................546
Wbudowane zdarzenia aplikacji Whip!............................................................................547
Metody i waciwoci Whip! ..................................................................................................548
Podsumowanie ........................................................................................................................551

Dodatki ...........................................................................................553
Dodatek A Zmienne systemowe AutoCAD-a 2002 .................................................555
Dodatek B Zmienne systemowe AutoCAD-a 2004 .................................................583
Dodatek C Wielkoci wyliczeniowe (enum)............................................................613
Dodatek D Dziedziczenie w obiektach ...................................................................621
Dodatek E

Program narzdziowy formatowania pliku DXF ......................................625


Skorowidz ...........................................................................................643

Rozdzia 12.

Edycja
W rozdziale tym przyjrzymy si kilku wbudowanym w VBA funkcjom AutoCAD-a
zwizanym z edycj. Odejdziemy tu od naszej wczeniejszej praktyki pisania samowystarczalnych przykadw, czyli tworzenia pewnego elementu i nastpnie zmieniania go
w pewien sposb w tej samej procedurze. Aby zastosowa omawiane metody edycji, tak
jak robi si to zazwyczaj, utworzymy obiekty za pomoc procedur bazujcych na listingach z wczeniejszych rozdziaw, a nastpnie zastosujemy metody zbioru ,
by wskaza elementy i zmodyfikowa je.
Uyjemy szeciu tego typu procedur:

,

,

,

,


oraz . (Nazwy tych procedur zaznaczylimy w listingach tego rozdziau kursyw).
Procedury

,

, oraz

 zostay uproszczone dla celw tego rozdziau, a ich kod umiecilimy na kocu tego rozdziau. Dodajmy jeszcze, e kody tych
listingw, jak rwnie wszystkich innych zawartych w tej ksice, mona cign ze
strony internetowej wydawnictwa Prentice Hall pod adresem www.phptr.com.
W zwizku z tym, e czsto stosujemy zbiory wskaza, a w listingach zazwyczaj uywamy nazwy , zbir wskaza o okrelonej nazwie jest wymazywany na kocu
kadego listingu. Jeli z jakiego powodu dana procedura nie zadziaa poprawnie, naley
wwczas rcznie wymaza zbir , ktremu nadano okrelon nazw; w przeciwnym razie jeli sprbujemy uy ponownie tej samej nazwy, AutoCAD wygeneruje
komunikat o bdzie. W tym celu mona zastosowa podprogram   z rozdziau 7. (patrz listing 7.6). (Jak wspomnielimy w rozdziale 7., mona te ewentualnie
oprni zbir wskaza i ponownie uy go za pomoc metody ).

Metody zwizane z edycj


Najczciej uywane polecenia AutoCAD-a zwizane z edycj, takie jak , ,

, , , , ,  oraz !
, maj swoje odpowiedniki w metodach VBA. Polecenia 
i " nie posiadaj bezporednich odpowiednikw, poniewa funkcje te wykonuje si przez zmian wektorw definiujcych modyfikowane
elementy. Istniej rwnie trzy metody edycyjne, nieposiadajce odpowiednikw w interfejsie uytkownika. S to: #$
%, &' oraz ". Jak bdziemy
mogli si przekona, ostatnia z nich posiada wyjtkowo due moliwoci.

340

Cz II

Zastosowanie modelu obiektu AutoCAD-a

Array
Metoda  ma dwie opcje:  (tablica biegunowa) i %$ (tablica prostoktna), podobnie jak odpowiadajce jej polecenie AutoCAD-a. Opcja biegunowa suy
do kopiowania wybranych obiektw okrelon ilo razy, rozmieszczajc je jednoczenie
na okrgu wok podanego punktu rodkowego. Natomiast tablica prostoktna tworzy
ukad skopiowanych elementw uoonych w rzdy i kolumny o okrelonej odlegoci
od obiektu oryginalnego, ktry definiuje jeden z naronikw tablicy.
Metoda   podczas kopiowania automatycznie obraca kady z obiektw, orientujc go tak, e jego o symetrii przechodzi przez punkt rodkowy tablicy. Pod tym wzgldem metoda ta rni si od odpowiadajcej jej komendy AutoCAD-a, ktra umoliwia
wybr midzy obrotem obiektu a kopiowaniem bez obrotu.
ArrayPolar (metoda oglna (39)). $($ jako tablica ( zmiennych )*
=)*+   (,$"))* jako &% [> 1, tylko wprowadzanie], %. jako $) [tylko wprowadzanie],   jako ( [tylko wprowadzanie]).
Kt naley poda w radianach; wartoci ujemne wskazuj na obrt w kierunku przeciwnym do ruchu wskazwek zegara, natomiast zero powoduje bd.
Listing 12.1 rozpoczyna si od wywoania procedury

 sucej do utworzenia


obiektu, ktry bdziemy potem edytowa. Moemy tutaj zastosowa dowolny element
AutoCAD-a lub grup wskazanych elementw. Natomiast zbir wskaza 
tworzony jest za pomoc metody narzdziowej .
Listing 12.1. Tworzenie biegunowej tablicy obiektw



 

 
  
 
 !
" 
 
#  $
% 
 
 &
" '()
#  $ '*#  ( '*#  % $+
 ,
 -
"
, !
  
  ." .# 
/ 
0


 
!    
,

Nastpnie deklarujemy i nadajemy wartoci kilku obiektom, ktre maj zosta skopiowane do tablicy, jak rwnie okrelamy kt dopenienia (w radianach) oraz wsprzdne
punktu rodkowego. Deklarujemy rwnie nowy obiekt

, ktry jest kojarzony

Rozdzia 12.

Edycja

341

dynamicznie, poniewa musi on by w stanie przechowa dowolny rodzaj obiektu dodanego do zbioru wskaza. Po zadeklarowaniu zmiennej typu (, sucej do przechowywania nowo utworzonych obiektw, wykorzystujemy ptl ./+++,, aby do
kadego obiektu zastosowa metod  . Na koniec za pomoc metody 0" 
wykonujemy zmian wielkoci wywietlanego obszaru, aby pokaza ca tablic.
ArrayRectangular (metoda oglna (39)). $($ jako tablica ( = )*+  %$ (,$")  jako &% [> 1, tylko wprowadzanie], ,$")$"
jako &% [> 1, tylko wprowadzanie], ,$") jako &% [tylko wprowadzanie],   jako $) [tylko wprowadzanie], $" jako
$) [tylko wprowadzanie],  jako $) [tylko wprowadzanie]).
Oryginalny obiekt, z ktrego tworzona jest tablica, zajmuje w niej lewy dolny naronik;
natomiast ujemne parametry dotyczce kolumn i rzdw oznaczaj, e tablica budowana
jest w d i na lewo.
Metoda  %$ dziaa we wszystkich trzech osiach. Uytkownik podaje liczb
rzdw, kolumn i poziomw (dla osi Z) cznie z odstpami omidzy nimi. Natomiast
znak uyty przy wprowadzaniu kadego z odstpw oznacza kierunek w osiach X, Y i Z.
Ustawienia w listingu 12.2 s bardzo podobne do tych z listingu 12.1. Natomiast do utworzenia obiektu testowego moemy uy zarwno procedury

, jak te wskaza


obiekty z dowolnego rysunku. Najpierw deklarujemy wymagane zmienne i nadajemy wartoci ilociom elementw oraz odlegociom midzy rzdami, kolumnami i poziomami.
Potem przeprowadzamy iteracj zbioru wskaza za pomoc metody  %$,
aby utworzy nowy obiekt.
Listing 12.2. Tworzenie prostoktnej tablicy obiektw
1 

 

 
  
 
1
2

#
2

232

1

 
#

 
23
 
1
4*1
'
#
4*#
'
23'*23%
 ,
 -
"
, !
  1  1
.#
.23.1
.#
.23
/ 
0


 
!    
,

342

Cz II

Zastosowanie modelu obiektu AutoCAD-a

Copy
Aby za pomoc metody  przenie nowo utworzony obiekt w inne miejsce, naley
zastosowa j wraz z metod , nazwa  wprowadza tu w bd. Oprcz utworzenia
zbioru wskaza obiektw, ktre chcemy skopiowa, w ustawieniach naley doda take
dwa punkty suce jako wektor przemieszczenia. Funkcj t speniaj dwa pierwsze
paragrafy listingu 12.3.
Copy (metoda oglna (39)). $($ jako )* = )*+. (Obiekt skopiowany zostaje w tym samym miejscu).
Procedura ta umoliwia wybranie dowolnej liczby obiektw rysunkowych. W operacji
kopiowania wykorzystujemy ptl .+++,, suc do iteracji zbioru wskaza, aby
skopiowa, przesun i zmieni kolor nowych obiektw. Aby zrealizowa te czynnoci,
musimy najpierw zadeklarowa zmienn ptli () oraz nada rozmiary tablicy (
()*), bazujc na waciwoci $ nalecej do obiektu . W ten sposb
korzystamy z tej waciwoci dwukrotnie, ale nie musimy deklarowa dwch zmiennych:
jednej do zliczania elementw oraz obiektu 
 dla skadnikw zbioru wskaza.
Z kolei w listingu dotyczcym metody 
 (patrz listing 12.4) do wykonania podobnej
czynnoci uywamy alternatywnej konstrukcji ./+++,. Zastosowanie tej skadni
jest szybsze pod wieloma wzgldami.
Listing 12.3. Prosta operacja kopiowania
#
5
 

 
  
 
 ( $
% 
 
 % $
% 
 
 ( $ $* ( ( $* ( % $
 % $ '* % ( )* % % $
67
/0
 8
59:
!
1 $
#
;( -
"
$
#
;(
  !  #
5
  6
3 (. %
  #

<
/
 
!    
,

CopyObjects (metoda obiektu ,  


). $($ jako tablica (
zmiennych typu )* = )*+)*. ()* jako tablica ( zmiennych
typu )* [tylko wprowadzanie],  jako pojedynczy obiekt ( [opcjonalnie,
tylko wprowadzanie], &  jako tablica ( zmiennych typu &  [opcjonalnie,
tylko wprowadzanie]).

Rozdzia 12.

Edycja

343

Metoda )* powiela kilka obiektw nalecych do tego samego dokumentu lub
do rnych dokumentw, uywajc w tym przypadku opcjonalnego parametru .
Jeli nie podano tego parametru, wwczas nowe obiekty tworzone s w tym samym dokumencie co obiekt rdowy. Tablic )* tworzymy przy uyciu podstawowych
obiektw, ktre maj zosta skopiowane, natomiast wszelkie drugorzdne obiekty, podlege lub zwizane z podstawowymi, rwnie zostan skopiowane.
Metod )* przedstawilimy ju w rozdziale 8. przy okazji omawiania obiektu
), a jej zastosowanie mona byo zobaczy w listingu 8.10. Natomiast informacje
dotyczce procesu kopiowania i przenoszenia zwracane s w tablicy obiektw & ,
jeli byy one zawarte w odwoaniu do metody )*. Obiekt &  posiada kilka
waciwoci.
IsCloned. )*+&
jako  ($ = obiekt rdowy zosta sklonowany,
. = obiekt rdowy nie zosta sklonowany, tylko do odczytu).
IsOwnerXlated. )*+&1
jako  ($ = obiekt bdcy wacicielem
zosta przeniesiony z jednej bazy danych do innej, . = obiekt bdcy wacicielem
istnieje ju w nowym rysunku i nie zosta skopiowany, tylko do odczytu).
IsPrimary. )*+& " jako  ($ = obiekt rdowy jest skadnikiem
podstawowego zbioru obiektw, . = pochodny obiekt rdowy jest wasnoci podstawowego zbioru obiektw, tylko do odczytu).
Key. )*+2 jako % (tylko do odczytu) zwraca identyfikator obiektu rdowego.
Value. )*+($ jako % (tylko do odczytu) zwraca identyfikator nowego, skopiowanego obiektu.

Explode
Metoda 
 rozbija zoony obiekt na jego elementarne skadniki. W przeciwiestwie
do odpowiadajcego jej polecenia AutoCAD-a, metoda ta nie rozbija wymiarw, multilinii
oraz wikszoci obiektw 3D. Jeli zastosujemy j do obiektw, ktrych nie dotyczy,
system wygeneruje komunikat o bdzie )*/
3/$///
"
(obiekt nie obsuguje tej wasnoci lub metody). Obiekty obsugujce metod

 zostay wymienione poniej. Naley take pamita o wyranym wymazaniu rozbitego obiektu, ktry pozostaje po utworzeniu nowego zbioru jego elementw skadowych.
Explode. $($ jako tablica ( zmiennych typu )* =)*+

,4 obiektu(w), ktry ma zosta rozbity. Dostp do pojedynczych elementw zawartych w blokach moliwy jest za pomoc metody &", nie jest zatem konieczne rozbijanie bloku w celu jego edycji. Metoda 
 obsugiwana jest przez obiekty: ,
5 , %'% , &5, %,  oraz %.
Listing 12.4 rozpoczyna si od utworzenia obiektu testowego  oraz proby
o wybranie zbioru wskaza. Jeli chcemy, moemy wybra rwnie kilka obiektw.
Natomiast drugi paragraf tej procedury przeprowadza faktyczne rozbicie. Deklarujemy
rwnie kilka zmiennych, cznie z $, ktra dostosowana jest do liczby elementw
w zbiorze wskaza (waciwo $ zwraca liczb o jeden wiksz od $, poniewa
numeracja rozpoczyna si od zera).

344

Cz II

Zastosowanie modelu obiektu AutoCAD-a

Ptla ./+++,, zawarta w tej procedurze, przeprowadza iteracj zbioru wskaza.


Potrzebna jest nam take dodatkowa zmienna (), aby ledzi pozycj tablicy )*.
Naley jednak wspomnie, e w tym przypadku bardziej efektywna byaby tradycyjna
ptla .+++,. Kolejn czynnoci jest usunicie wszystkich obiektw ze zbioru wskaza po tym, jak zostay rozbite.
Trzeci paragraf tego listingu przeprowadza po prostu iteracj elementw zbioru wskaza
oraz zestaww rozbitych obiektw, zmieniajc ich kolor na zielony, a nastpnie przywracajc domylny kolor warstwy po to, abymy mogli zobaczy je na ekranie. (Aby przetestowa t metod, nie wskaemy zapewne duej iloci obiektw).
Listing 12.4. Rozbicie kilku obiektw
,/5



 

 
  
 
 ,
!
 !
#
!
#
#
=(
1,/5 $
#
 -
"
, !
,/5   ,/5

  
>(
/ 
"
$
#

67
/,  ??27
?27
 ,/5  ?@7
?A
@7
 ,/5 
"
 27
 ,/5  
@7
 ,/5 
,/5  #

<
,/5  @5
67
/1
9
8? ?*?A
,/5   
,/5  #

72
,/5  @5
/
/
 
!    
,

GetBoundingBox
Metoda ta nie ma odpowiednika wrd polece AutoCAD-a. Jednak wszystkie elementy
posiadaj pewn ramk ograniczajc, ktr wykorzystywalimy, na przykad opisujc
geometri bry w rozdziale 10. W listingu przedstawionym w tym rozdziale wykorzystujemy procedur , ktra tworzy zoony obiekt przez poczenie dwch bry. Procedura z listingu 12.5 przeznaczona jest do przetwarzania jednoczenie tylko jednego
obiektu. Jeli wic wskaemy wiksz liczb obiektw, przetworzony zostanie tylko
pierwszy z nich.

Rozdzia 12.

Edycja

345

GetBoundingBox (metoda oglna (39)). $($ jako )* =)*+#$


%.   jako ( (tylko odczyt),   jako ( (tylko odczyt).
W listingu 12.5 deklarujemy dwie zmienne (/ obsugujce doln i grn granic
ramki ograniczajcej. Parametry te zwracane s przez metod #$
% jako trjelementowa tablica zmiennych $) oraz wywietlane na ekranie za pomoc okna dialogowego. Natomiast w kocowym paragrafie stosujemy metod

, aby w tych


miejscach umieci widoczne punkty. W ten wanie sposb wykonywalimy rysunki
w rozdziale 10.
Listing 12.5. Ustalenie punktw obszaru ograniczajcego
<7
7
/
 
 

 
  
 
6-
6/-
! $ <7
7
/6.6/
67
/ 8B C
99*?6 $ ?.?6 ( ?.?A
6 % ?  ?6/ $ ?.?6/ ( ?.?6/ % ? 8 




6
 5
 6/

6
 5
 6
-  6,.')
 
!    
,

IntersectWith
Jest to druga metoda zwizana z edycj, ktra nie posiada odpowiednika wrd polece
AutoCAD-a. Zwraca ona punkty, w ktrych przecinaj si dane obiekty. Zadaniem procedury z listingu 12.6 jest podanie punktw przecicia tylko dwch pierwszych wskazanych obiektw.
IntersectWith. $($ jako tablica ( zmiennych typu $) =)*+&' (&)* [dowolny obiekt rysunkowy, tylko wprowadzanie], 
 jako &% [tylko wprowadzanie, enum 
]). Metoda ta suy do
podania punktw, w ktrych przecinaj si wskazane obiekty rysunkowe (wszystkie z wyjtkiem ( i %). Natomiast parametr 
 okrela, ktry z przecinajcych si elementw ma zosta przeduony do miejsca ich teoretycznego przecicia. Obowizujce wartoci wielkoci wyliczeniowej 
 s nastpujce:
(0) 
,,
(1) 
,
(3) 
,
(4) 
.

346

Cz II

Zastosowanie modelu obiektu AutoCAD-a

Procedura z listingu 12.6 tworzy lini przecinajc w dwch punktach elips, a nastpnie
wywietla kursor wyboru. Na pocztku deklarujemy tablic (, przeznaczon do
przechowywania punktw przecicia (& ), ktra zapeniana jest za pomoc pierwszego zbioru wskaza. Ptla w drugim paragrafie procedury wywietla na ekranie punkty
przecicia, ktre przypisywane s do kolejnych trjpunktowych grup tablicy & .
Listing 12.6. Znajdowanie punktw przecicia
!D


0


 

 
  
 
! -
! ! $ !D ! ( .,/

!
 !
6
"
27
 !  
@7
 !  5'
67
/ 859:E? ?F *?!   ?.?!  >A
( ?.?!  >%
67
/6.. 98G!D
  >(
/
 
!    
,

Mirror
Dwie metody VBA zwizane z lustrzanym odbiciem odzwierciedlaj odpowiadajce im
polecenia interfejsu uytkownika w wersji 2D i 3D. Kada z nich moe by zastosowana
do dowolnego elementu AutoCAD-a.
Mirror (metoda oglna (39)). $($ jako odbity element typu )* = )*+ ( 6 jako ( [tylko odczyt], 7 jako ( [tylko odczyt]. Metoda ta
suy do lustrzanego odbijania paskich obiektw wzgldem wskazanej osi. Zmienna systemowa & 1 steruje odbijaniem tekstu (0 = tekst pozostaje czytelny, . = tekst
odbity dosownie).
W listingu 12.7 wykorzystalimy obiekty  i  do zaprezentowania lustrzanego odbicia wzgldem linii zdefiniowanej za pomoc dwch punktw. Po wykonaniu tej
czynnoci kolor odbitego obiektu zostaje zmieniony na czerwony. Procedura z omawianego listingu pozwala na wybranie wielu elementw. Naley take doda, e zarwno
w przypadku wersji 2D, jak i 3D, jeli chcemy wymaza oryginalny obiekt, musimy osobno
zastosowa metod .
Listing 12.7. Lustrzane odbicie w paszczynie X-Y
6



Rozdzia 12.

Edycja

347


0


 

 
  
 
 ( $
% 
 
 % $
% 
 
 ( $ $* ( ( )%4* ( % $
 % $ )* % ( )%4* % % $
67
/ 99H89I
 ,
 -
"
, !
  6
 (. %
 #

1
/ 
0


 
!    
,

Mirror3D (metoda oglna (39)). $($ jako odbity element typu )* =)*+ ( 6 jako ( [tylko odczyt], 7 jako ( [tylko odczyt],
 jako ( [tylko odczyt]). Metoda suy do lustrzanego odbijania bry wzgldem wskazanej paszczyzny.
Procedura przedstawiona w listingu 12.8 pozwala na lustrzane odbicie jedynie pierwszego wskazanego elementu. W naszym przypadku elementem tym jest obiekt ,
odbijany symetrycznie wzgldem paszczyzny zdefiniowanej za pomoc trzech punktw. Po wykonaniu operacji odbicia dodatkowo zmieniany jest kolor nowego elementu.
Listing 12.8. Lustrzane odbicie w przestrzeni trjwymiarowej
6
'
 
 

 
  
 
 ( $
% 
 
 % $
% 
 
 ' $
% 
 
 ( $ %$* ( ( $* ( % $
 % $ %$* % ( %$* % % $
 ' $ %$* ' ( %$* ' % %$
6 '

6 ! $ 6
' (. %. '
6 #

)4
0


 
!    
,

348

Cz II

Zastosowanie modelu obiektu AutoCAD-a

Move
Metod  zastosowalimy ju wczeniej w poczeniu z metod  (listing 12.3).
Natomiast listing 12.9 przedstawia operacj przesunicia zbioru wskaza o okrelon
odlego X.
Move (metoda oglna (39)). )*8/ 6 jako ( (tylko wprowadzanie),
7 jako ( (tylko wprowadzanie).
W rozdziale 14. utworzymy narzdzie do przeksztacania wybranych obiektw wzgldem
punktu pocztkowego lub bazowego, na przykadzie ktrego omwimy kilka odmian
kopiowania i przesuwania obiektw o rne odlegoci oraz pod okrelonym ktem.
Listing 12.9. Przesunicie kilku obiektw
6
3
 

 
  
 
 ( $
% 
 
 % $
% 
 
!
!
@ <! 
 
 G
JKL*
 ( $ $* ( ( $* ( % $
 % $ * % ( $* % % $
"
$
#
=(
!  6
3 (. %
/
 
!    
,

Offset
Metoda  tworzy rwnolege krzywe i linie oraz wsprodkowe okrgi i elipsy.
Jej zastosowanie jest ograniczone do wymienionych przed chwil obiektw. Jeli zastosujemy j do obiektw, ktrych ona nie dotyczy, system wygeneruje komunikat o bdzie
)*/
3/$////"
(obiekt nie obsuguje tej waciwoci lub metody).
Offset. $($ jako tablica ( zmiennych typu )* 9/ )*+
(  jako $) [tylko wprowadzanie]). Metoda ta tworzy nowy obiekt odsunity
o okrelon odlego (dodatni lub ujemn, ale nie zerow) od istniejcego obiektu.
Metod t mona stosowa wycznie z obiektami, takimi jak: , , , ,
%'% , ,  oraz 1.
W listingu 12.10 tworzymy, a nastpnie wskazujemy pojedyncz elips, ktra zostaje powielona przez odsunicie od oryginalnego obiektu o odlego jednej jednostki wymiarowej.

Rozdzia 12.

Edycja

349

Listing 12.10. Odsunicie obiektu


BB

 

 
  
 
67
/I9H89I
 -
 ! $ BB (+
 $ #

1
0


 
!    
,

Rotate
Metody obrotu w 2D i 3D mona zastosowa do dowolnego obiektu rysunkowego cznie
z odnonikami atrybutw.
Rotate (metoda oglna (39)). )*+    jako ( [tylko wprowadzanie],  % jako $) (kt w radianach, tylko wprowadzanie). Metoda ta
suy do obrotu obiektu wok okrelonego punktu w dwch wymiarach.
Procedura z listingu 12.11 pozwala na jednoczesne wskazanie kilku obiektw. Definiuje
ona take punkt bazowy ( ) oraz kt obrotu wynoszcy w tym przypadku 45 stopni
(wyraony w radianach).
Listing 12.11. Obrt w paszczynie X-Y
1

 

 
  
 
#  $
% 
 
1 -
#  $ %*#  ( (*#  % $
1 $MN4'ON(
!
"
$
#
;(
!  1
# .1 
/
 
!    
,

Rotate3D (metoda oglna (39)). )*+  6 jako ( [tylko wprowadzanie], 7 jako ( [tylko wprowadzanie],  % jako $) (kt w radianach, tylko wprowadzanie). Metoda ta suy do obrotu bryy wok okrelonej linii.

350

Cz II

Zastosowanie modelu obiektu AutoCAD-a

Procedura z listingu 12.12 przystosowana jest do obsugi tylko pierwszego wskazanego


obiektu, ale obydwie metody zwizane z obrotem mona stosowa do wielu elementw,
jeli w podprogramie umiecimy odpowiedni ptl przetwarzajc wszystkie skadniki
zbioru wskaza. W omawianym listingu umoliwilimy wprowadzanie kta obrotu w stopniach, ktre s nastpnie konwertowane na radiany.
Listing 12.12. Obrt w przestrzeni trjwymiarowej
1
'
 
 

 
  
 
 ( $
% 
 
 % $
% 
 
1

 
 ( $ $* ( ( %* ( % $
 ( $ $* ( ( =%* ( % $
1
O$
1
1
P'()(4O%Q(N$
! $ 1
' (. %.1

0


 
!    
,

ScaleEntity
Podobnie jak odpowiadajce jej polecenie , metoda  powiksza lub pomniejsza wszelkie elementy AutoCAD-a o podany wspczynnik. Skalowanie odbywa
si rwnomiernie we wszystkich trzech osiach.
ScaleEntity. )*+   jako ( (tylko wprowadzanie), . jako $) (tylko wprowadzanie). Metoda ta przeprowadza skalowanie rwnomiernie we wszystkich trzech osiach.
W procedurze z listingu 12.13 zastosowalimy metod , aby automatycznie wskaza wszystkie widoczne obiekty na rysunku testowym. Wszystkie zaznaczone elementy
zostaj pomniejszone o dwie trzecie przy uyciu punktu pocztkowego rysunku jako
punktu bazowego skalowania.
Listing 12.13. Skalowanie w przestrzeni trjwymiarowej
 ,
 

 
  
  

7  $
% 
 
"

 
7  $ $*7  ( $*7  % $
"
$''''

Rozdzia 12.

Edycja

351

!
"
$
#
=(
!   ,7 ."

/
 
!    
,

TransformBy
" jest ostatni z trzech metod edycyjnych, ktre nie posiadaj odpowiednikw wrd polece AutoCAD-a. Umoliwia ona dokonywanie zmian geometrycznych,
ktre maj fundamentalne znaczenie dla kadej grafiki komputerowej. Nie bdziemy
zagbia si w teori matematyczn transformacji macierzy 3D, ale naley pozna chociaby podstawow notacj, aby korzysta z metody ", ktra posiada bardzo
rozbudowane moliwoci.

TransformBy (metoda oglna (39)). )*+" " jako


( (tablica 44 zmiennych $)). Metoda ta umoliwia jednoczenie przesunicie,
obrt oraz skalowanie obiektu za pomoc tablicy przeksztace o wymiarach 44. Jeli
metoda ta zostanie niewaciwie sformuowana, AutoCAD zwraca komunikat o bdzie,
a w niektrych przypadkach moe to spowodowa oglny bd modelowania, ktry
uniemoliwia dalsze dziaanie programu.
Jak moglimy zaobserwowa przy okazji omawiania metody , przesunicie realizowane jest po prostu przez okrelenie starego i nowego pooenia obiektu za pomoc
punktw w ukadzie wsprzdnych AutoCAD-a. Nastpnie odejmujemy od siebie wsprzdne tych punktw, uzyskujc wektor przesunicia, ktry ma zastosowanie do dowolnego punktu obiektu przesuwanego rwnolegle z jednego punktu do drugiego.
Natomiast operacje obrotu i skalowania nie s ju tak proste, poniewa kady punkt
obiektu musi zosta przemieszczony w odmienny sposb w stosunku do punktu odniesienia. W przypadku skalowania kady punkt obiektu odsuwany jest wzdu osi zaczepionej
w punkcie odniesienia. Reprezentacja obrotu moe mie podobn form, zrealizowana
za pomoc sinusa i cosinusa wymaganego kta. Obydwie te funkcje mona poczy,
mnoc kady z punktw definicji obiektu przez tablic o wymiarach 22, definiujc
funkcj transformacji.
Istnieje moliwo zoenia (konsolidacji) operacji przesunicia, skalowania i obrotu
w dwch wymiarach w tablicy o wymiarach 33. Reprezentacj t mona rozszerzy rwnie na trzy wymiary, jeli zastosujemy tablic 44. Oglna tablica metody "
AutoCAD-a przedstawiona zostaa w listingu 12.14a. Parametr oznacza tam kryteria
obrotu, zdefiniowane za pomoc sinusa i cosinusa. Natomiast  i  odnosz si odpowiednio
do skalowania i przesunicia. Wyraone s one jako wspczynniki skalowania w pierwszym przypadku oraz jako odlego w drugim. Wszystkie one s liczbami rzeczywistymi (typ $)).
W listingach 12.14b, c i d przedstawiono odpowiednio obrt wok osi X, Y i Z przy uyciu
funkcji sinus i cosinus. Obrt wok kadej osi naley skonfigurowa za pomoc osobnej
tablicy. Podobnie w przypadku skalowania, gdzie wykorzystywane s pozycje matryc
R00, R11 i R22 (patrz listing 12.14a), ktrego nie mona poczy z obrotem. AutoCAD

352

Cz II

Zastosowanie modelu obiektu AutoCAD-a

wymaga rwnie, aby wspczynniki skalowania miay jednakow warto we wszystkich trzech kierunkach. Istnieje natomiast moliwo poczenia przesunicia z obrotem
lub skalowaniem, poniewa wykorzystuje ono inne pozycje tablicy.
Listing 12.14. Tablice transformacji (44)
R1$$Q1$(1$%$R
R1($1((Q1(%Q(R
R1($1%(1%%Q%R
R$$$(R
0*R#
 1 ; 1 $$R
R 1 #
 1 $$R
R$$($R
R$$$(R
L*R($$$R
R$#
 1 = 1 $R
R$ 1 #
 1 $R
R$$$(R
S*R#
 1 $ 1 $R
R$($$R
R= 1 $#
 1 $R
R$$$(R

Procedura pokazana w listingu 12.15 przedstawia dwie funkcje przeksztace tablicowych. Zaczynamy od utworzenia w nowym rysunku obiektu . Nastpnie deklarujemy dwuwymiarow tablic () jako zmienn matrycy 44 oraz zbir wskaza i obiekt
oglny. Obiekt  (z rozdziau 10.) wskazywany jest automatycznie za pomoc opcji
  nalecej do metody . Ten pojedynczy element przypisywany
jest zmiennej obiektu oglnego (ktra moe przechowywa dowolny rodzaj elementu
i jest wizana dynamicznie), tak e konieczne jest tylko jednokrotne oszacowanie +&":;<.
Nastpnie tworzymy zmienne potrzebne do samego przeksztacenia, czyli kt obrotu ( )
oraz punkt odniesienia (). Kt naley poda w stopniach, ktre s potem zamieniane na
radiany, wymagane przez metod ".
W listingu tym wykonujemy dwa przeksztacenia, z ktrych kade poprzedzone jest wywietleniem okna dialogowego pokazujcego uywane parametry. Najpierw obracamy
obiekt o kt 60 stopni (w kierunku zgodnym z ruchem wskazwek zegara) bez skadnikw translacji. Nastpnie zmieniamy skal obiektu na mniejsz o poow, jednoczenie
przemieszczajc go o 5 jednostek we wszystkich trzech osiach. Natomiast na koniec
wymazujemy zbir wskaza.
Mona take cign z Internetu drug aplikacj zwizan z metod " dotyczc tego rozdziau, ktra obraca obiekt o niewielkie kty, jednoczenie stopniowo zmniejszajc wywietlany widok za pomoc polecenia 0". Tworzy to interesujcy efekt animacji,
ktry daje blisze pojcie o zasadzie dziaania polecenia ) AutoCAD-a, a uzyskujemy to przez zawarcie kilku funkcji transformacji w ptli .+++,.

Rozdzia 12.

Edycja

353

Listing 12.15. Przeksztacenie macierzowe


B
7
 
6 $
'.$
' 
 
 

  
 
  
  

 ! $
1
 
 $
% 
 
 $ $* ( $
1=&$
11P'()(4O%Q(N$
67
/HK?1?H
8HG
0? $ ?.? ( ?.? %
6 $.$ #
 1 *6 $.( = 1
6 $.% $*6 $.'  $
6 (.$  1 *6 (.( #
 1
6 (.% $*6 (.'  (
6 %.$ $*6 %.( $
6 %.% (*6 %.'  %
6 '.$ $*6 '.( $
6 '.% $*6 '.' (
 B
7 6
 @5
67
/8  4;4.=4.=4
6 $.$ $4*6 $.( $
6 $.% $*6 $.' =4
6 (.$ $*6 (.( $4
6 (.% $*6 (.' =4
6 %.$ $*6 %.( $
6 %.% $4*6 %.' =4
6 '.$ $*6 '.( $
6 '.% $*6 '.' (
 B
7 6
 
!    
,

Undo
Polecenie !
 AutoCAD-a posiada kilka opcji sucych do sterowania rezultatem jej
dziaania, ktre polega na cofniciu wykonanego poprzednio polecenia. Opcje te wykorzystywane s do pogrupowania czynnoci w sekwencje, ktre mona cofn jako cao.
Natomiast metoda !
 VBA obsuguje dwie z tych opcji, umoliwiajc okrelenie pocztku i koca sekwencji wykonanych czynnoci.
EndUndoMark (metoda obiektu ). )*+
!
5 ustawia rodowisko
AutoCAD-a w ten sposb, e czynnoci wykonane midzy !
5 a t metod
traktowane s jako oddzielna grupa (patrz listing !
5).

354

Cz II

Zastosowanie modelu obiektu AutoCAD-a

StartUndoMark (metoda obiektu ). )*+!


5 ustawia rodowisko AutoCAD-a w ten sposb, e czynnoci wykonane midzy t metod a 
!
5
traktowane s jako oddzielna grupa. W ten sposb zdefiniowane zostaj oddzielne znaczniki !
 dla kadej tego typu czynnoci tak, e pniej mona je cofn raczej indywidualnie, a nie jako grup.
Procedura w listingu 12.16 tworzy rzd okrgw odsunitych od siebie o 3 jednostki miary,
z ktrych kady posiada zdefiniowany znacznik cofnicia. Moemy teraz wprowadzi
polecenie !
 lub ! i w ten sposb cofniemy po jednym okrgu za kadym razem. Jeli
natomiast nie wywoamy metody !
5, wwczas polecenie !
 AutoCAD-a
spowoduje cofnicie od razu caego rzdu okrgw.
Listing 12.16. Znaczniki cofania polece
@
68
 # 
 $
% 
 
1
 
 $ $* ( $* % $
1(
!
"
$
M
@
68
 6
 5#  .1
 $  $ >'
,@
68
/
0


,

Waciwoci informacyjne
Waciwoci AutoCAD-a zwizane z edycj posiadaj dostp typu odczyt i zapis, dziki
czemu s bardzo pomocne w aktywnym wykonywaniu funkcji edycyjnych oraz przy
zapytaniach. Na przykad waciwoci 
 i 
 mona wykorzysta do
programowego wykonania tych samych czynnoci, ktre realizuj polecenia 
i ".
Aby fizycznie zmieni cechy charakterystyczne elementw rysunkowych, mona zastosowa rwnie waciwoci & ,  oraz 5.
Waciwo  umoliwia okrelenie powierzchni ograniczonej za pomoc kilku elementw AutoCAD-a. Waciwo t wykorzystujemy obszernie w projekcie przestrzeni
biurowej w rozdziale 19.
Area. Podaje obszar ograniczony obiektami. Typ: $) (odczyt i zapis). Waciwo
ta dotyczy wycznie obiektw, takich jak: , , , %'% ,
, % oraz .
Procedura w listingu 12.17 tworzy uproszczon polilini (obiekt %'% ),
a nastpnie wywietla za pomoc standardowego okna dialogowego powierzchni ograniczon przez ten obiekt. Natomiast jeli podejmiemy prb zastosowania tej waciwoci

Rozdzia 12.

Edycja

355

(jak rwnie waciwoci omwionych poniej) w stosunku do elementw, ktre jej nie
obsuguj, AutoCAD wygeneruje komunikat o bdzie.
Listing 12.17. Obliczanie powierzchni

 2D
 
 $
M 
 
 $ $* ( $* % $* ' ($
 ) ($* 4 ($* & ($* M $
 6
 52D
 
 #

0


67
/95
 *? 
,

Coordinate. Podaje wsprzdn pojedynczego wierzchoka danego obiektu. Typ: (


(odczyt i zapis). Waciwo ta dotyczy wycznie obiektw, takich jak: , 
,
%'% , , , , 
oraz .
Waciwo 
 umoliwia okrelenie lub zmian pojedynczego wierzchoka
nalecego do obiektw wymienionych powyej. W listingu 12.18 wykorzystalimy
uproszczon polilini z listingu 12.17.
Listing 12.18. Zmiana jednej wsprzdnej
#


 

 
  
  

#

-
#

! $ #

 %
67
/'=*?#

 $ ?.?#

 (
#

 $ )*#

 ( )
! $ #

 % #


! $ @5
67
/'= *?#

 $ ?.?#

 (
 
!    
,

Deklarujemy zmienn ( (


) i w tym przypadku nadajemy jej wartoci trzeciego wierzchoka polilinii (wsprzdna X-Y okrelona za pomoc punktw :=< i :><
z listingu 12.17). Wiemy, e jest to punkt 
:7<, pamitajc, e numeracja rozpoczyna si od zera. Natomiast elementy tablicy 
 (; i 6) zwracaj wsprzdne tego
punktu, wywietlane nastpnie w oknie komunikatw. Nastpnie nadajemy nowe wartoci wsprzdnym X i Y, wykorzystujc do zmiany pooenia wierzchoka waciwo

 w trybie zapisu. Czynno t zamyka metoda !
, po ktrej usuwamy zbir
wskaza.
Coordinates. Podaje wsprzdne wszystkich wierzchokw danego obiektu. Typ: tablica
( zmiennych $) (odczyt i zapis). Waciwo ta dotyczy wycznie obiektw,

356

Cz II

Zastosowanie modelu obiektu AutoCAD-a

takich jak: ., , 


, %'% , , , ,
%, , 
oraz .
Waciwo bdca zwielokrotnieniem waciwoci 
 jest do niej bardzo podobna
(ale potencjalnie bardziej zagmatwana). Umoliwia ona dostp do wszystkich wierzchokw wybranego obiektu. Po raz kolejny wykonamy tu operacj na polilinii z listingu 12.17.
Waciwo 
 wykorzystana w listingu 12.19 przypisuje wszystkie wierzchoki
do tablicy typu ( o nazwie 
. Wsprzdne X zawarte s w nieparzystych
elementach tej tablicy, natomiast wsprzdne Y w parzystych. Jeli chcemy wic
zmieni drugi i czwarty wierzchoek, stosujemy skadniki tablicy przedstawione w omawianej procedurze. Na tym etapie pierwotna polilinia, ktra w listingu 12.17 miaa pocztkowo ksztat kwadratu (porwnaj), ma ksztat grotu strzay skierowanej w kierunku
lewego dolnego naronika ekranu.
W midzyczasie naley wspomnie take o odlegoci, ktr, jeli byaby ona waciwoci
VBA, naleaoby w tym momencie wymieni, trzymajc si porzdku alfabetycznego.
Odlegoci mona okrela za pomoc metody # , ktra jest jedn z metod
obiektu narzdziowego, omwionych w rozdziale 7. (listing 7.12).
Listing 12.19. Zmiana kilku wsprzdnych
#


 

 
  
  

#

-
#

! $ #


67
/85
? @7
 #

 >( Q%?9


G8H?3#?%=*A
?#

 % ?.?#

 ' ?)=*?#

 & ?.?#

 M
#

 % 4*#

 ' O


#

 & O*#

 M 4
! $ #

#


1
67
/%= *?#

 % ?.?#

 ' ?)= *?A


#

 & ?.?#

 M
 
!    
,

InsertionPoint (waciwo oglna (9)). Podaje punkt, w ktrym dany obiekt wstawiany
jest do rysunku. Typ: tablica ( zmiennych $) (odczyt i zapis). Jest to wsprzdna 3D dotyczca obiektw, takich jak: )$, )$ , 5 ,  , &5, , ,  oraz .
Listing 12.20 zmienia punkt wstawienia obiektu . Obiekt ten wskazywany jest za
pomoc metody   ; nastpnie jego punkt wstawienia przypisujemy do zmiennej typu ( i wywietlamy jego wsprzdne na ekranie. Zmienna ta jest potem
redefiniowana, a jej nowe wartoci zwrcone zostaj do wskazanego elementu, ktry na
koniec zostaje uaktualniony.

Rozdzia 12.

Edycja

357

Listing 12.20. Zmiana punktu wstawienia


!


 
1
 

 
  
 $
% 
 
 $ '* ( '* % $
 

1-
1! $ !


67
/ 8*?1 $ ?.?1 ( ?.?1 %
1 $ 4*1 ( M*1 % $
! $ !

1
! $ @5
1
67
/
58*?1 $ ?.?1 ( ?.?1 %
 
!    
,

Normal (waciwo oglna (28)). Podaje trjwymiarowy wektor normalny osi Z obiektu
graficznego (trjelementowa tablica zmiennych $)). Typ: ( (odczyt i zapis).
Waciwo ta podaje wektor, ktry okrela kierunek normalny i ktry moe by dodany
do wybranego punktu, aby otrzyma inny punkt. Naley pamita, e nie jest to wsprzdna podajca umiejscowienie w przestrzeni.
Waciwo ," okrela o Z obiektu we wsprzdnych ukadu WCS. Waciwoci
tej mona uy jako parametru ,", gdy przeprowadzamy konwersj wsprzdnych
za pomoc metody 
 (patrz listing 7.27).
W listingu 12.21 zmieniamy waciwo ," elementu , utworzonego za pomoc
procedury

 z rozdziau 9. Potem wskazujemy ten obiekt, a nastpnie deklarujemy zmienn , typu ( oraz nadajemy jej warto za pomoc waciwoci ,"
obiektu +&":6<. Jest to zbir wskaza, w ktrym znajduj si dwa elementy;
pierwszym z nich jest zewntrzna ptla (&":;<), ktra okrela granice kreskowania.
My natomiast bdziemy edytowa element &":6<, ktrym jest samo kreskowanie.
W kolejnym etapie po wywietleniu wartoci wektora ," za pomoc okna dialogowego nadajemy mu now warto, ktra przypisywana jest do elementu. Na koniec uaktualniamy ten obiekt i wywietlamy na ekranie nowe wsprzdne wektora.
Listing 12.21. Zmiana wektora normalnego



1
 

 
  
  

-
! ( 

67
/D8

 *? $ ?.? ( ?.? %

358

Cz II

Zastosowanie modelu obiektu AutoCAD-a

 $ (* ( (* % =(


! ( 
 
! ( @5
0


67
/
8

 *? $ ?.? ( ?.? %
 
!    
,

Rotation (waciwo oglna (16)). Podaje kt obrotu obiektu w stosunku do osi X


globalnego ukadu wsprzdnych (WCS). Typ: $) (odczyt i zapis). Dodatnie kty
mierzone s w kierunku zgodnym z ruchem wskazwek zegara, patrzc w kierunku
ujemnych wartoci osi Z.
Listing 12.22. Zmiana kta obrotu
1


 
1
 

 
  
 $
% 
 
 $ '* ( '* % $
 

67
/TC

*?! $ 1


1

 
1
'$
1
1
P'()(4O%Q(N$
! $ 1

1

! $ @5
67
/TC


9*?! $ 1


 
!    
,

Waciwo  zwraca lub przypisuje kt obrotu wikszoci obiektw graficznych


AutoCAD-a. Jednostkami s w tym przypadku radiany.
Procedura przedstawiona w listingu 12.22 wykorzystuje metod    do wskazania linii tekstu. Naley pamita, e w tym przypadku przed wybraniem obiektu trzeba
koniecznie zregenerowa rysunek. W przeciwnym razie bowiem metoda nie bdzie dziaa
poprawnie.
Okno komunikatw wywietla aktualny kt obrotu, po czym nadajemy mu now warto,
podan w stopniach, ktra jest niezwocznie zamieniana na radiany. Nastpnie za pomoc
waciwoci  w trybie zapisu now warto kta przypisujemy do wskazanego
elementu i ponownie wywietlamy j na ekranie.
Ostatni waciwoci z tej grupy jest 5, ktra suy do okrelenia lub wprowadzenia wymiaru Z elementu dwuwymiarowego.
Thickness. Waciwo ta okrela odlego, na jak wycignity zostaje obiekt 2D
ponad lub poniej poziomu jego wzniesienia. Typ: $) (odczyt i zapis). Grubo ta
wykorzystywana jest do nadania trzeciego wymiaru obiektowi 2D. Waciwo obsu-

Rozdzia 12.

Edycja

359

giwana jest tylko przez obiekty: , )$, )$ , , %'% , , , , , 
,  oraz .
W listingu 12.23 wskazujemy najpierw wszystkie elementy znajdujce si na rysunku,
po czym za pomoc ptli .+++, zwikszamy o 5 jednostek grubo tych obiektw,
ktre obsuguj waciwo 5. W procedurze tej umiecilimy cakiem rozbudowany mechanizm wychwytywania bdw, sucy do rozpoznania obiektw nieposiadajcych waciwoci 5 przez zmian ich koloru na czerwony. Natomiast okna
dialogowe wywietlaj status kadego elementu przed jego edycj i po niej.
Listing 12.23. Zmiana gruboci obiektu
8
 

 
  
  

!
8-
,
<

,
U 
"
$
#
;(
8!  8
67
/, ??<
JK*?!  8
!  88>4
!  @5
67
/, ??
<
JK*?!  8
/
#
VA- !1'(4'$
 
!    
,/
,
U *
!  #

1
!  @5
67
/, ??5

J
>(
1/
,

Dostp do wiersza polece


Metoda 
""
pozwala w jzyku VBA dla AutoCAD-a na tworzenie skryptw,
umoliwiajc emulacj wiersza polece aplikacji z poziomu VBA. Polecenia wykonywane
t drog dziaaj zwykle wolniej ni odpowiadajce im funkcje VBA, chocia metoda ta
moe by w pewnych okolicznociach przydatna. Z tego wanie powodu firma Autodesk
zaleca, aby w przypadku istnienia odpowiednika wrd innych metod VBA nie stosowa

""
.
SendCommand (metoda obiektu ). )*+
""
(""
jako %
[tylko wprowadzanie]).

360

Cz II

Zastosowanie modelu obiektu AutoCAD-a

Metoda 
""
emuluje wykonywanie serii czynnoci z poziomu wiersza polece
AutoCAD-a. Jej acuch musi zawiera wszystkie argumenty plecenia dokadnie w takiej
kolejnoci, w jakiej s one wymagane cznie z odstpami lub znakiem ASCII 13, tam
gdzie wymagany jest tzw. powrt karetki. (Wyraenie ) jest sta VBA odpowiadajc
znakowi powrotu karetki).
Listing 12.24. Wysyanie polece
#

#
,L(.(.$()4
 8H85B.>3#
#

H
J
>3#
#
5
8C)4
5>3#>3#
#
06D=(.=(%$.%$
#
VA- !1'(4)4
,

Skadnia metody 


""
jest bardzo cile okrelona i wymaga, aby wszystkie argumenty wywoywanego polecenia podawane byy dokadnie w takiej kolejnoci, w jakiej
spodziewane jest to w AutoCAD-zie. W listingu 12.24 pokazano zastosowanie tej metody do utworzenia kilku wierszy tekstu, w ktrym konieczne jest uycie znaku :6 <
w celu rozrnienia midzy kocem wiersza a odstpami w tekcie. Natomiast za pomoc
polecenia !
 mona przywrci pocztkowy kt wywietlania tekstu.

Inne metody, waciwoci


i procedury zwizane z edycj
W modelu obiektu AutoCAD-a istnieje jeszcze wiele innych komponentw zwizanych
z edycj obiektw oraz obsug procesu edycji. Poniej przedstawilimy zestawienie
najwaniejszych z nich, wraz z podaniem rozdziau, w ktrym zostay omwione.
Linie konstrukcyjne. 1 oraz  omwiono w rozdziale 9.
Pobieranie danych. W rozdziale 7. przedstawiono kilka metod zwizanych z pobieraniem danych od uytkownika, takich jak # , #2
oraz #%.
Konwersja danych. Metody suce do przeksztacania danych, takie jak %%
oraz %, omwione zostay w rozdziale 7.
Siatka wzw, skok oraz tryb ortogonalny. Operacje, takie jak wczanie i wyczanie
siatki wzw i skoku, ustawianie odstpw siatki oraz waciwo , s czci
dyskusji na temat rzutni w rozdziale 5.
Tryb uchwytw rysunkowych. Rozdzia 6. obejmuje m.in. omwienie wczania i wyczania trybu uchwytw rysunkowych ().
Dokadno. Metody zwizane z ustawieniami dokadnoci liczbowej, ktre zwizane
s przede wszystkim z wymiarami, takie jak "! ,  ,
 ,   oraz ! , przedstawiono
w rozdziale 11.

Rozdzia 12.

Edycja

361

Lokalne ukady wsprzdnych. Metoda

! oraz waciwo ! omwione


zostay w rozdziale 6.
W rozdziale niniejszymuywalimy czsto szeciu procedur sucych do tworzenia
elementw rysunkowych, ktre poddawane byy nastpnie edycji. Metody


i

 pochodz z rozdziau 9. Z kolei , ktra tworzy interesujcy ukad walca
i kuli, znajduje si w rozdziale 10. Natomiast procedury

,

, oraz


(patrz rozdzia 9.) zostay uproszczone dla celw tego rozdziau, a ich zmodyfikowany
kod pokazano poniej. Warto wspomnie, e kody wszystkich listingw umieszczonych
w tej ksice mona cign ze strony internetowej wydawnictwa Prentice Hall pod
adresem www.phptr.com.
, 5
 , 5
 $
% 
 
/6 $
% 
 
11
 
 $ $* ( $* % $
/6 $ (*/6 ( %*/6 % $
11$4
 6
 5, 5 ./6 .11
,
2
 2
 ( $
% 
 
 % $
% 
 
11
 
 ( $ =%4* ( ( =(4* ( % $
 % $ %4* % ( (4* % % $
 6
 52 (. %
,
/
 /
/
U
 
 $
% 
 
/U
.# W
U(
 $ '* ( '* % $
 6
 5/ /. .U
,

Podsumowanie
Rozdzia ten przybliy wiele metod AutoCAD-a sucych do zmiany jego obiektw
graficznych. Przyjrzelimy si nie tylko podstawowym metodom edycji, takim jak ,
, , czy te , ale take bardziej zaawansowanym, czyli tablicom
biegunowym i prostoktnym oraz przeksztaceniom macierzowym. Nastpnie skupilimy

362

Cz II

Zastosowanie modelu obiektu AutoCAD-a

nasz uwag na waciwociach zwizanych z informacjami o elementach, takimi jak


 lub 5.
W rozdziale 13. omwimy pewne rodzaje zjawisk wystpujcych w normalnym toku
dziaania aplikacji, dla ktrych moemy utworzy specjalne procedury, zwane podprogramami obsugi zdarze, ktre uruchamiane bd na skutek wystpienia tyche zdarze.
Dyskusja ta wprowadzi nas do rozdziau 14., dotyczcego formularzy i kontrolek, ktre
stanowi rdze zarwno interfejsu uytkownika w VBA, jak i interaktywnego rodowiska
programowania IDE.

You might also like