You are on page 1of 133

Designing Team-Engineering Department PH LC

inh Vn Trng

Chng 1 ................................................................................................................................... 8 TNG QUAN V VBA TRONG AUTOCAD ......................................................................... 8 1.1. 1.2. 1.3. Khi nim d n nhng v d n c lp .................................................................. 8 Trnh qun l d n VBA ........................................................................................... 8 nh ngha lnh mi bng Autolisp............................................................................ 9

Chng 2 ..................................................................................................................................11 H THNG I TNG V MT S THAO TC C BN TRONG AUTOCAD ......11 2.1. 2.2. M hnh i tng trong AutoCad........................................................................... 11 Mt s i tng chnh trong AutoCad ................................................................... 12 i tng Application ....................................................................................... 12 Khi nim tp i tng .................................................................................... 12 Tp i tng Documents v i tng Document .......................................... 12

2.1.1. 2.1.2. 2.1.3. 2.2.

Cc thao tc c bn trong AutoCad ......................................................................... 13 M bn v - Phng thc Open ........................................................................ 13 To bn v mi Phng thc Add ................................................................. 13 Lu bn v -Phng thc Save, SaveAs ........................................................... 14 ng bn v - Phng thc Close ..................................................................... 15 Thot khi chng trnh AutoCad Phng thc Quit .................................. 16

2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5.

Chng 3 ..................................................................................................................................17 CC KIU D LIU V CCH KHAI BO BIN TRONG VBA ...................................17 3.1. 3.2. Nhng quy inh v c php trong VBA................................................................... 17 Khai bo bin trong VBA ......................................................................................... 18 Tng Qut .......................................................................................................... 18 Cch thc khai bo bin .................................................................................... 18 Page 1

3.2.1. 3.2.2.

Basic VBA for AutoCad

Designing Team-Engineering Department 3.3.

inh Vn Trng

Cc kiu d liu c bn trong VBA ......................................................................... 19 Kiu Logic Boolean ......................................................................................... 19 Kiu s nguyn Byte/Integer/Long ................................................................. 20 Kiu s thc Single/Double ............................................................................. 20 Kiu Chui String ........................................................................................... 21 Kiu Mng.......................................................................................................... 21 Kiu Variant....................................................................................................... 23

3.3.1. 3.3.2. 3.3.3. 3.3.4. 3.3.5. 3.3.6.

Chng 4 ..................................................................................................................................24 TON T V CC HM THNG DNG ...........................................................................24 4.1. 4.2. 4.3. Cc hm s hc trong VBA ...................................................................................... 25 Cc ton t so snh thng s dng trong VBA ..................................................... 26 Ton t Logic thng dng trong VBA ................................................................... 27 Ton t AND ...................................................................................................... 27 Ton t OR ........................................................................................................ 28 Ton t NOT ...................................................................................................... 29

4.3.1. 4.3.2. 4.3.3. 4.4. 4.5.

Cc hm chuyn i d liu ..................................................................................... 29 Cc hm x l chui.................................................................................................. 30 Hm LEFT ......................................................................................................... 30 Hm RIGHT ...................................................................................................... 30 Hm MID ........................................................................................................... 30 Hm LEN ........................................................................................................... 31 Hm UCase ........................................................................................................ 31 Hm LCase ......................................................................................................... 32 Hm InStr .......................................................................................................... 32 Hm InStrRev .................................................................................................... 34 Page 2

4.5.1. 4.5.2. 4.5.3. 4.5.4. 4.5.5. 4.5.6. 4.5.7. 4.5.8.

Basic VBA for AutoCad

Designing Team-Engineering Department 4.5.9. 4.5.10. 4.5.11. 4.5.12. 4.5.13.

inh Vn Trng

Hm Ltrim, RTrim ............................................................................................ 35 Hm Space ...................................................................................................... 36 Hm Split ........................................................................................................ 36 Hm Replace................................................................................................... 38 Hm StrComp ................................................................................................ 39

Chng 5 ..................................................................................................................................41 CU TRC IU KIN V VNG LP .............................................................................41 5.1. Cu Trc iu Kin .................................................................................................. 41 Cu trc : If Then ................................................................................. 41 Cu trc : If Then Else End If ......................................................... 42 Cu trc : If Then Else End If m rng .......................................... 43 Cu trc: Select Case CaseEnd Select .................................................. 44

5.1.1. 5.1.2. 5.1.3. 5.1.4. 5.2.

Cu Trc Vng Lp .................................................................................................. 45 Cu trc: For Next .................................................................................... 45 Cu trc : For Each Next .......................................................................... 47 Cu trc : Do While Loop......................................................................... 48 Cu trc : Do Loop While ......................................................................... 48 Cu trc : Do Until Loop .......................................................................... 49 Cu trc : Do Loop Until ......................................................................... 49

5.2.1. 5.2.2. 5.2.3. 5.2.4. 5.2.5. 5.2.6.

Chng 6 ..................................................................................................................................50 CC HM NHP LIU .........................................................................................................50 6.1. 6.2. 6.3. 6.4. Phng thc : Prompt .............................................................................................. 51 Phng thc: GetString ........................................................................................... 52 Phng thc : GetPoint ............................................................................................ 53 Phng thc : GetInteger v GetReal ..................................................................... 54 Page 3

Basic VBA for AutoCad

Designing Team-Engineering Department 6.5. 6.6. 6.7. 6.8. 6.9.

inh Vn Trng

Phng thc : GetDistance....................................................................................... 55 Phng thc : GetKeyWord .................................................................................... 56 Phng thc GetEntity............................................................................................. 57 Phng thc: GetCorner .......................................................................................... 58 Phng thc : InitializeUserInput ........................................................................... 59

Chng 7 ..................................................................................................................................61 TO MI I TNG TRONG AUTOCAD ......................................................................61 7.1. 7.2. Xc nh ni cha i tng .................................................................................... 62 Khai bo v phng thc to i tng hnh hc ................................................... 63 To ng thng Phng thc AddLine ........................................................ 63 To i tng LWPolyline - Phng thc AddLightWeightPolyline.............. 64 To i tng ng trn Phng thc AddCircle ...................................... 65 To i tng cung trn Phng thc AddArc.............................................. 66 To i tng vn bn n - phng thc AddText........................................ 67 To i tng vn bn nhiu dng-Phng thc AddMtext ........................... 68

7.2.1. 7.2.2. 7.2.3. 7.2.4. 7.2.5. 7.2.6.

Chng 8 ..................................................................................................................................69 LM VIC VI I TNG SELECTIONSET ................................................................69 8.1. 8.2. 8.3. Quy trnh lm vic vi i tng SelectionSet......................................................... 70 Khai bo v khi to i tng SelectionSet ........................................................... 70 Thm i tng vo trong mt SelectionSet ............................................................ 71 Phng thc AddItems...................................................................................... 72 Phng thc Select ............................................................................................ 73 Phng Thc SelectOnScreen ........................................................................... 75 Thao tc vi cc i tng trong SelectionSet .................................................. 76

8.3.1. 8.3.2. 8.3.3. 8.3.4. 8.4.

B lc cho i tng SelectionSet ............................................................................. 76 Page 4

Basic VBA for AutoCad

Designing Team-Engineering Department 8.4.1. 8.4.2. 8.5.

inh Vn Trng

Lc theo mt iu kin ........................................................................................ 77 Lc theo nhiu iu kin..................................................................................... 78

Mt s phng thc khc ca i tng SelectionSet............................................. 80 Phng thc RemoveItems ................................................................................. 80 Phng thc Clear ............................................................................................. 82 Phng thc Eraser ........................................................................................... 82 Phng thc Delete ............................................................................................ 82

8.5.1. 8.5.2. 8.5.3. 8.5.4.

Chng 9 ..................................................................................................................................84 HIU CHNH CC I TNG HNH HC.....................................................................84 9.1. 9.2. 9.3. 9.4. 9.5. 9.6. 9.7. 9.8. 9.9. 9.10. 9.11. 9.12. Tng quan v vic hiu chnh cc i tng hnh hc bng VBA ........................... 85 Sao chp i tng Phng thc Copy ................................................................. 85 Xa i tng Phng thc Delete ........................................................................ 86 Di chuyn i tng Phng thc Move .............................................................. 86 Ly i xng Phng thc Mirror........................................................................ 88 Phng thc OffSet .................................................................................................. 89 Xoay i tng Phng thc Rotate ..................................................................... 90 Thay i t l i tng Phng thc ScaleEntity ................................................ 92 Thay i mu i tng Thuc tnh Color ........................................................... 93 Thay i Layer cho i tng Thuc tnh Layer .............................................. 95 Thay i kiu ng cho i tng Thuc tnh LineType ............................... 96 Thay i b rng nt v ca i tng Thuc tnh LineWeight ....................... 98

Chng 10 .............................................................................................................................. 100 LM VIC VI I TNG LAYER .............................................................................. 100 10.1. 10.2. Duyt qua tp i tng Layers ..........................................................................101 Khai bo v khi to mt Layer mi Phng thc Add..................................101 Page 5

Basic VBA for AutoCad

Designing Team-Engineering Department 10.3. 10.4. 10.5. 10.6. 10.7. 10.8.

inh Vn Trng

i tn ca Layer Thuc tnh Name .................................................................102 Thit lp mt Layer hin hnh ............................................................................103 Gn mu cho mt Layer Thuc tnh Color ......................................................103 Gn kiu ng cho mt Layer Thuc tnh LineType ....................................105 Gn LineWeight cho mt Layer Thuc tnh LineWeight ................................107 Mt s thuc tnh khc ca i tng Layer.......................................................109 Bt, Tt Layer Thuc tnh LayOn .............................................................109 ng cng, Lm tan Layer Thuc tnh Freeze, UnFreeze ........................110 Kha, M Kha Layer Thuc tnh Lock, UnLock ....................................110 Xa Layer Thuc tnh Delete .....................................................................111

10.8.1. 10.8.2. 10.8.3. 10.8.4.

Chng 11 .............................................................................................................................. 112 LM VIC VI I TNG BLOCK .............................................................................. 112 11.1. 11.2. 11.3. 11.4. 11.5. 11.6. 11.7. Duyt qua tp i tng Block ............................................................................113 Khai bo v khi to mt Block...........................................................................113 i tn Block Thuc tnh NAME ......................................................................114 Xa mt Block Thuc tinh Delete .....................................................................115 Chn Block vo trong bn v - Phng thc InsertBlock ..................................117 Ph v mt Block Phng thc Explode ..........................................................120 Block cha thuc tnh Attributes ......................................................................122 To thuc tnh cho Block Phng thc AddAttribute ...............................122 Thao tc vi thuc tnh Phng thc GetAttributes ................................125

11.7.1. 11.7.2. 11.8.

Lm vic vi bn v tham kho ngoi External References ............................127 Gn mt tham chiu ngoi vo bn v Phng thc

11.8.1.

AddExternalReference ...................................................................................................127 11.8.2. G b tham chiu ngoi ra khi bn v - Phng thc Detach...................130 Page 6

Basic VBA for AutoCad

Designing Team-Engineering Department 11.8.3. 11.8.4. 11.8.5.

inh Vn Trng

Ti li tham chiu ngoi Phng thc Reload ..........................................130 Loi b tham chiu ngoi ra khi bn v - Phng thc Unload ................131 Rng buc tham chiu ngoi Phng thc Bind .......................................132

TI LIU THAM KHO ..................................................................................................... 133

Basic VBA for AutoCad

Page 7

Designing Team-Engineering Department Chng 1 TNG QUAN V VBA TRONG AUTOCAD 1.1. Khi nim d n nhng v d n c lp 1.1.1. D n nhng D n nhng l d n nh km vi bn v. c im d n nhng l :

inh Vn Trng

Khng cn phi nh ni lu tr d n, khng phi ti d n vo Autocad m i khi s dng mt chc nng no c sn trong d n, bi v n c t ng ti vo m i khi bn v c m. Nhng chc nng c lp trnh trong d n VBA nhng ch c hiu lc i vi bn v cha n do mun s dng nhng cha nng ny cho nhng bn v khc ngi dng buc phi sao chp d n VBA . 1.1.2. D n c lp D n c lp l d n tch bit trong mt tp tin c phn m rng l *.dvb v khng ph thuc vo bn v no c. c im ca d n c lp : Mun s dng d n c lp ngi dng phi ti d n vo trong Autocad. D n c lp c th tc ng ln tt c cc bn v ang m . Khi cn chia s nhng chc nng trong d n ch cn mang theo tp .dvb l . 1.2. Trnh qun l d n VBA Trong Autocad vic qun l d n VBA c thc hin d dng = thng qua trnh qun l d n VBA Manager. hin th VBA Manager chn Tool ---> Macros ---> VBA Manager (Hoc nh lnh VBAMAN)

Basic VBA for AutoCad

Page 8

Designing Team-Engineering Department

inh Vn Trng

ngha mt s thnh phn trong trnh qun l d n New : To mi d n VBA (Mc nh l d n c lp)

Save As : Lu d n VBA. Load : Ti d n VBA vo trong VBAIDE.Ngi dng c yu cu chn tp d n

VBA (*.dvb) Load vo. Macros : Hin th trnh qun l Macros. Visual Basic Editor : Hin th mi trng VBAIDE, y l mi trng thc hin vit m lnh v thit k giao din chng trnh. 1.3. nh ngha lnh mi bng Autolisp Vic nh ngha lnh mi bng Autolisp s lm cho qu trnh thc thi Macro n gin i rt nhiu..Autolisp chnh l chic cu n i to s lin kt gia dng lnh ca AutoCad vi cc Macro trong d n VBA. cc lnh mi c hiu lc ngay khi AutoCad khi ng th ngi lp trnh cn lu d n VBA thnh tp c tn l ACAD.DVB v tp Autolisp c tn l ACAD.LSP v c hai tp ny phi c lu vo th mc Support ca AutoCad.Hai tp ny s t ng c ti ln ngay sau khi AutoCad khi ng v ngi dng c th s dng cc lnh t nh ngha.

Basic VBA for AutoCad

Page 9

Designing Team-Engineering Department Cch to file Autolisp

inh Vn Trng

Ti mt th mc bt k, nhn chut phi, chn New -> Text Document. i tn file va to thnh tn file ta mun vi phn m rng LSP (thay v txt) Trong trng hp Window ca bn ang b ch hin th ui m rng, hy Open file Text va to, Save As file thnh dng Tn_file.LSP .Ch 2 du m bo file s chuyn thnh ui m rng LSP.

Cch thc nh ngha lnh mi bng AutoLisp

Basic VBA for AutoCad

Page 10

Designing Team-Engineering Department Chng 2

inh Vn Trng

H THNG I TNG V MT S THAO TC C BN TRONG AUTOCAD 2.1. M hnh i tng trong AutoCad

Trong AutoCad c rt nhiu i tng khc nhau nh: - Cc i tng hnh hc nh Line, Circle, Mtext, Text - Cc i tng phi hnh hc nh: Layer, Linetype, Dimension - V ngay c bn v, bn thn chng trnh AutoCad cng l mt i tng (i tng Application) Mi i tng trong Autocad u c nhng thuc tnh v cc phng thc c trng ca n. Basic VBA for AutoCad Page 11

Designing Team-Engineering Department 2.2. Mt s i tng chnh trong AutoCad 2.1.1. i tng Application

inh Vn Trng

i tng Application l i tng gc trong m hnh i tng ca AutoCad.T i tng ny ta c th truy xut n bt k i tng no.i tng Application l mt i tng ton cc nghi l mi phng thc v thuc tnh ca n u c hiu lc trong mi trng VBAIDE. Mt s phng thc thng dng ca i tng Application: Phng thc Update Phng thc ny cp nht li cc thay i. Phng thc Zoom nh ZoomAll, ZoomExtents Phng thc Quit Thot khi chng trnh AutoCad.

2.1.2. Khi nim tp i tng Trong Autocad cc i tng c t chc hu ht trong Tp i tng.V d cc i tng hnh hc c qun l trong tp i tng ModelSpace, PaperSpace hoc Blocks.Cc i tng phi hnh hc nh Layer, DimStyle, TextStyle c qun l trong cc tp i tng tng ng nh Layers, DimStyles, TextStyles 2.1.3. Tp i tng Documents v i tng Document Tp i tng Documents l mt tp cha tt c cc bn v ang c m. Mt s phng thc ca tp i tng Documents : Phng thc Add : S dng to mt bn v mi. Phng thc Open : S dng m mt bn v c sn. Phng thc Close : S dng ng tt c cc bn v ang c m

i tng Document, thc cht l mt bn v AutoCAD ang c m thuc tp i tng Documents.i tng ny cha tt c cc i tng hnh hc v phi hnh hc trong mt bn v AutoCAD cng nh cha hu ht cc i tng khc ca bn v nh

Viewports. Trong VBA, i tng Thisdrawing tham chiu n bn v hin hnh, nhng tc ng ln i tng ny cng chnh l tc ng ln bn v hin hnh. Basic VBA for AutoCad Page 12

Designing Team-Engineering Department 2.2. Cc thao tc c bn trong AutoCad 2.2.1. M bn v - Phng thc Open

inh Vn Trng

m mt bn v ta s dng phng thc OPEN c trong tp i tng Documents.Bn v va c m s tr thnh bn v hin hnh. C php Documents.Open (FileName) Gii thch Tham s Gii thch Kiu String Chu i th hin tn bn v bao (gm ng dn v phn m rng)

FileName

V d

2.2.2. To bn v mi Phng thc Add to bn v mi s dng phng thc ADD c trong tp i tng Documents. C php Set DocObj = Documents.Add ([TemplateName])

Basic VBA for AutoCad

Page 13

Designing Team-Engineering Department Gii thch Tham s DocObj Gii thch Kiu acadDocument Bin cha bn v c to

inh Vn Trng

Tham s ty ch, kiu String Chu i cha ng dn y n bn v mu (tp *.dwt).Nu khng c tham s ny, AutoCad s to TemplateName bn v mi da trn tp bn v mu mc nh (Thng l tp Acad.dwt) V d

2.2.3. Lu bn v -Phng thc Save, SaveAs lu bn bn v ta dng phng thc SAVE (lu vi tn hin hnh) hoc phng thc SAVEAS (lu vi tn khc) c trong i tng Thisdrawing. C php Thisdrawing.Save Thisdrawing.SaveAs FileName [, FileType] Gii thch Tham s Gii thch

Kiu String Chu i cha tn cn lu (bao gm c ng dn v phn m r FileName ng).Nu khng ch r bn v s c lu vo th mc hot ng ca AutoCad (thng thng C:\Program Files\AutoCAD 20xx) Tham s ty chn Xc nh kiu bn v s c lu. acR14_DWG : Tp AutoCAD Release14/LT97 DWG (*.dwg) acR14_DXF : Tp AutoCAD Release14/LT97 DXF (*.dxf) acR15_DWG: Tp AutoCAD 2000 DWG (*.dwg) acR15_DXF: Tp AutoCAD 2000 DXF (*.dxf) acR15_Template : Tp AutoCAD 2000 Drawing Template File (*.dwt) acNative : Tp bn v c lu vi kiu tp mi nht ng vi phin bn AutoCAD hin hnh.

FileType

Basic VBA for AutoCad

Page 14

Designing Team-Engineering Department V d

inh Vn Trng

2.2.4. ng bn v - Phng thc Close ng bn v s dng phng thc CLOSE c trong i tng Thisdrawing. C php Thisdrawing.Close ([SaveChange] [, FileName]) Gii thch Tham s Tham s ty chn SaveChange SaveChange =True : Lu bn v trc khi ng SaveChange =False : Khng lu bn v trc khi ng Tham s ty chn, kiu String Chu i th hin tn bn v (bao gm FileName ng dn v phn m rng) trong trng hp bn v cha lu ln no V d Gii thch

Basic VBA for AutoCad

Page 15

Designing Team-Engineering Department 2.2.5. Thot khi chng trnh AutoCad Phng thc Quit

inh Vn Trng

thot khi AutoCad chng ta s dng phng thc Quit c trong i tng Application.Nu c bn v hoc d n no cha c lu AutoCad s nhc ngi dng lu sau mi thot. C php Application.Quit

Basic VBA for AutoCad

Page 16

Designing Team-Engineering Department Chng 3

inh Vn Trng

CC KIU D LIU V CCH KHAI BO BIN TRONG VBA 3.1. Nhng quy inh v c php trong VBA - Nhng cu lnh l nhng dng ring bit.Nu c nhiu cu lnh trn cng mt dng th cc cu lnh ngn cch nhau bng du hai chm (:),nu dng lnh qu di th mun ngt xung dng th ta dng khong trng + _ . - Nu mun chn thm dng ch thch th ta dng du nhy n () - Quy tc t tn bin K t u tin bt buc phi l ch ci. Khng cha khong trng, du chm (.), du chm than(!), hoc cc k t c bit nh @, #, &, $ Tn bin khng di qu 255 k t Tn bin khng trng vi cc t kha trong VBA (Xem danh sch mt s t kha thng s dng trong VBA) Trong mt SUB khng c t tn bin trng nhau - Mt s t kha thng s dng trong VBA As Binary ByRef ByVal Date Else Empty Error False For Friend Get Input Is Len Let Lock Me Mid New Next Nothing Null On Option Optional ParamArray Print Private Property Public Resume Seek Set Static Step String Then Time To True WithEvents

Basic VBA for AutoCad

Page 17

Designing Team-Engineering Department 3.2. Khai bo bin trong VBA 3.2.1. Tng Qut

inh Vn Trng

Mt bin khi s dng trong VBA c th khng cn khai bo, nhng cch ny ch nn p dng khi vit cc chng trnh nh.Khi lm vic vi mt d n c nhiu Modul, UserForm cn khai bo bin mt cch tng minh chng trnh d c, chy nhanh hn v tn dng c s tr gip ca mi trng VBAIDE. Bin cc b : L bin khai bo trong mt chng trnh con v phm vi hot ng ca n c gii hn trong chnh chng trnh con thi. Bin ton cc : Phm vi hot ng ca bin l ton b d n, bt k ni u trong d n (bt k Modul, UserForm..) cng c th s dng c bin ny. Nu mt bin c khai bo vi t kha DIM th mc nh bin l bin cc b.Phm vi hot ng ca bin ny c gii hn trong SUB. Nu mt bin c khai bo vi t kha PRIVATE th phm vi hot ng ca bin l trong ni b Modul thi, tt c cc SUB thuc Modul u s dng c nhng khng th truy cp t mt Modul hay UserForm khc. Nu mt bin c khai bo vi t kha PUBLIC th phm vi hot ng ca bin l trong ton b d n ngha l bt k trong Modul, UserForm no cng c th s dng c bin ny. Ch : Khng dng t kha PRIVATE, PUBLIC cho vic khai bo bin nm bn trong mt SUB. 3.2.2. Cch thc khai bo bin Khai bo hng s Hng s l mt loi bin c bit m gi tr ca n c xc nh ngay lc khai bo v lun khng thay i.Cch ny thng c s dng cho nhng hng s hay dng trong chng trnh nh = 3.141596254.

Basic VBA for AutoCad

Page 18

Designing Team-Engineering Department C php [Public/Private] Const <Tn_Hng> = <Gi tr hng s> V d Public Const Pi = 3.141592654 Khai bo bin [Dim/Public/Private] <Tn_bin> As <Kiu d liu> Khai bo mng t nh

inh Vn Trng

[Dim/Public/Private] <Tn mng> (thng s v chiu) As <Kiu d liu> Khai bo mng ng [Dim/Public/Private] <Tn mng> () As <Kiu d liu>

3.3. Cc kiu d liu c bn trong VBA 3.3.1. Kiu Logic Boolean Bin kiu Boolean ch cha hai gi tr TRUE v FALSE. Gi tr mc nh ban u ca bin kiu Boolean l FALSE C php [Dim/Public/Private] <Tn_Bin> As Boolean V d Dim blnA as Boolean Public blnB as Boolean Private blnC as Boolean

Basic VBA for AutoCad

Page 19

Designing Team-Engineering Department 3.3.2. Kiu s nguyn Byte/Integer/Long C php [Dim/Public/Private] <Tn_Bin> As [Byte/Integer/Long]

inh Vn Trng

Byte, Integer, Long u l cc t kha khai bo kiu s nguyn nhngchng ch khc nhau v gii hn gi tr m bin c th nhn c. Kiu s nguyn Byte Integer Long V d Dim lngA as Long Dim intB as Integer 3.3.3. Kiu s thc Single/Double [Dim/Public/Private] <Tn_Bin> As [Single/Double] V d Dim dblA as Double Public Pi as Double Ch : Cc bin kiu S NGUYN v S THC nu khng gn gi tr ban u cho bin th gi tr mc nh ban u s bng 0 Kch thc 1 Byte 2 Bytes 4 Bytes Phm Vi 0 255 -32,768 32767 -2,147,486,648 2,147,483,647

Basic VBA for AutoCad

Page 20

Designing Team-Engineering Department 3.3.4. Kiu Chui String

inh Vn Trng

Chu i l mt hng cc k t lin tc nhau, s lng k t trong chu i rt ln.Trong VBA chui c t trong du ngoc kp .Gi tr mc nh ban u cho bin kiu chu i l mt chui rng. C php [Dim/Public/Private] <Tn_Bin> As String V d Dim strA as String strA = VBA for AutoCad 3.3.5. Kiu Mng Khi gp trng hp phi x l mt lot cc bin tng t nh nhau, v d cc phn t ca mt ma trn, nu ta phi t tn khc nhau cho tt ccc bin ny th rt bt tin, v vy ta c th dng kiu mng t tn chung cho c nhm cc phn t v khi no cn s dng tng phn t ta s gi tn theo ch s ca chng trong mng. - Mng Tnh y l loi mng c s phn t khng thay i trong sut qu trnh hot ng ca mng.Mng ny thng c s dng khi bit trc s lng phn t ca mng. C php Dim <Tn_Mng>(Thng s mng) As <Kiu d liu> V d Dim Myarray(10) as Double Mng c 11 phn t (T 0 ti 10) Dim MyArray(1 to 10) as Double Mng c 10 phn t.

Dim MyArray(1 to 5,1 to 5) as Double Mng c 25 phn t Dim MyArray(1 to n,1 to m) as Variant Mng c n hng v m ct

Basic VBA for AutoCad

Page 21

Designing Team-Engineering Department - Mng ng

inh Vn Trng

y l mng c s lng phn t c th thay i c trong lc chng trnh hot ng.Vi mng ng ngi lp trnh khng cn bit s lng phn t ca mng n s c thit li ty theo yu cu c th ca bi ton C php Dim <Tn_Mng>() As <Kiu d liu> thay i s lng phn t ca mng chng ta s dng t kha REDIM C php ReDim <Tn_Mng> (Thng s mng) As <Kiu d liu> V d Dim MyArray () as Long Khai bo mng MyArray l mng ng ReDim MyArray(1 to 4) as Long ---->Xc nh li kch thc cho mng Vi mt mng ng m cc phn t c gn gi tr khi thay i s lng phn t s c hai trng hp xy ra. Ton b gi tr ca cc phn t (thuc mng trc khi thay i) s b xa b v cc phn t ca mng mi s nhn gi tr mc nh. Ton b gi tr ca cc phn t (thuc mng trc khi thay i) s c gi li nu tha mn 2 iu kin sau o S dng t kha ReDim Preserve o S thay i kch thc ca mng ch c thc hin bin trn ca chiu cu i cng ca mng ngha l cc phn t cn gia li gi tr c ch s khng i khi mng c thit lp li.

Basic VBA for AutoCad

Page 22

Designing Team-Engineering Department V d Dim MyArray () as Long Khai bo mng MyArray l mng ng ReDim MyArray(1 to 4) as Long Xc nh li kch thc cho mng MyArray(1) = 10: MyArray(2) = 20 MyArray(3) = 30: MyArray(4) = 40 ReDim Preserve MyArray(1 to 5) as Long MyArray(5) = 50 3.3.6. Kiu Variant. Kiu Variant l mt kiu c bit c th cha tt c cc kiu d liu khc. C php Dim <Tn_Bin> As Variant V d Dim varA as Variant

inh Vn Trng

Gn gi tr cho cc phn t mng

Thay i kch thc mng

Gn gi tr cho phn t mi.

Basic VBA for AutoCad

Page 23

Designing Team-Engineering Department Chng 4 TON T V CC HM THNG DNG

inh Vn Trng

Ni dung chng : Cc hm s hc trong VBA Cc ton t so snh thng dng trong VBA Cc ta t Logic thng dng trong VBA Cc hm chuyn i thngdng trong VBA Cc hm x l chui thng dng trong VBA

Basic VBA for AutoCad

Page 24

Designing Team-Engineering Department 4.1. Cc hm s hc trong VBA Ton T + * / \ ^ Mod Abs(x) Ngha Cng Tr Nhn Chia Chia Ly phn nguyn Hm m Chi ly phn d Ly gi tr tuyt i V d 10+5 10-5 10*5 10/5 11\2 10^2 11 Mod 5 Abs(-12) Fix(99.8) Fix(x) Ly phn nguyn trc du phy Fix(-99.2) Fix(-99.8) Ly phn nguyn c lm Int(x) trn Lm trn s thc x n m s sau Round(x,m) Sqr(x) (x>=0) Hm lng gic ngc ca Atn(x) Sin(x) Cos(x) Tan(x) Tan(x) Cc hm lng gic ca x tnh bng n v Radian Atn(1) Sin(/6) Cos(/3) Tan(/4) du phy Hm cn bc 2 ca x Int(99.2) Int(-99.2) Int(-99.8) Round(2.4554,2)

inh Vn Trng

Kt qu 15 5 50 2 5 100 1 12 99 -99 -99 99 -100 -100 2.45

Sqr(4)

/4 1

Basic VBA for AutoCad

Page 25

Designing Team-Engineering Department V d : Dng hm Atn tnh gi tr ca s Pi Dim Pi as double Pi = 4*Atn(1) V d : V d ny s to mt hm dng chuyn i n v Degree ra Radian

inh Vn Trng

4.2. Cc ton t so snh thng s dng trong VBA S dng ton t so snh trong biu thc so snh hai hoc nhiu s, chui Text, cc bin hoc kt qu ca cc hm - Nu cu lnh ng -> Kt qu ca cng thc c tr v gi tr True - Nu cu lnh Sai -> Kt qu ca cng thc c tr v gi tr False Ton T = > >= < <= <> V d Dim A, B as integer Dim Mycheck as Boolean A = 8 :B = 2 Mycheck = A > B -----> Mycheck = True Mycheck = A < B -----> Mycheck = False Bng Ln hn Ln hn hoc bng Nh hn Nh hn hoc bng Khc Ngha V D a=b 10<5 10>=8 5<7 10<=20 a <> b Kt qu True False True True True True

Basic VBA for AutoCad

Page 26

Designing Team-Engineering Department 4.3. Ton t Logic thng dng trong VBA 4.3.1. Ton t AND

inh Vn Trng

S dng ton t And kim tra xem hai ton hng kiu Boolean c l True hoc False hay khng. Bng gi tr ca ton t AND Ton hng 1 True True True False False False Null Null Null Ch Ton t AND tr v gi tr TRUE khi c hai ton t cng l TRUE, cc trng hp khc cho kt qu l FALSE V d Khai bo cc bin Dim A, B, C as integer Dim Mycheck as Boolean A = 10:B=8:C=6 Mycheck = (A>B) And (B > C) -----> Mycheck = True Mycheck = (A>B) And (B < C) -----> Mycheck = False Mycheck = (A<B) And (B < C) -----> Mycheck = False Ton hng 2 True False Null True False Null True False Null Kt qu True False Null False False False Null False Null

Basic VBA for AutoCad

Page 27

Designing Team-Engineering Department 4.3.2. Ton t OR

inh Vn Trng

S dng ton t OR kim tra hai ton hng kiu Boolean xem mt trong hai ton hng l True hoc l False. Bng gi tr ca ton t OR Ton hng 1 True True True False False False Null Null Null Ch Ton t OR tr v kt qu TRUE khi mt trong hai ton hng hoc c hai ton hng l TRUE, cc gi tr cn li cho gi tr FALSE. V d Khai bo cc bin Dim A, B, C as integer Dim Mycheck as Boolean Gn gi tr ban u cho cc bin A = 10:B=8:C=6 Mycheck = (A>B) Or (B > C) -----> Mycheck = True Mycheck = (A>B) Or (B < C) -----> Mycheck = True Mycheck = (A<B) Or (B < C) -----> Mycheck = False Ton hng 2 True False Null True False Null True False Null Kt qu True True True True False False True Null Null

Basic VBA for AutoCad

Page 28

Designing Team-Engineering Department 4.3.3. Ton t NOT Ton t NOT s tr v gi tr ph nh ca mt ton hng Bng gi tr ca ton t NOT Biu thc True False V d Dim A, B, C as Integer Dim Mycheck as Boolean A = 10:B=8:C=6 Mycheck = Not(A > B) -----> Mycheck = False Mycheck = Not(B < C) -----> Mycheck = True 4.4. Cc hm chuyn i d liu Kt qu False True

inh Vn Trng

Chuyn i d liu l mt nhu cu cn thit trong khi lp trnh,iu ny lm cho cc bin c kiu d liu r rng,trnh c vic pht sinh l i sau ny. Mt s hm chuyn i thng dng CBool(Expression) Cbyte(Expression) CInt(Expression) CLng(Expression) CDblxpression) CSng(Expression) CStr(Expression) Val(String) Chuyn i d liu sang kiu Logic (Boolean) Chuyn i d liu sang kiu Byte Chuyn i d liu sang kiu Integer Chuyn i d liu sang kiu Long Chuyn i d liu sang kiu Double Chuyn i d liu sang kiu Single Chuyn i d liu sang kiu String Chuyn i d liu String sang kiu Double

Basic VBA for AutoCad

Page 29

Designing Team-Engineering Department 4.5. Cc hm x l chui 4.5.1. Hm LEFT C php Left(String, Number as Long) Cng dng Hm ny trch Number k t bn tri ca chui String V d Dim strA, strB as String strA = VBA for AutoCad strB = Left(strA, 7) ----->strB = VBA for 4.5.2. Hm RIGHT C php Right(String, Number as Long) Cng dng Hm ny trch Number k t bn phi ca chu i String V d Dim strA, strB as String strA = VBA for AutoCad strB = Right(strA, 7) ----->strB = AutoCad 4.5.3. Hm MID C php Mid(String, Start As Long, [Number as Long])

inh Vn Trng

Basic VBA for AutoCad

Page 30

Designing Team-Engineering Department Cng dng

inh Vn Trng

Hm ny trch Number k t bt u t k t Start ca chu i String.Nu khng c gi tr Number th s trch mt chui bt u t k t Start n k t cui cng. V d Dim strA, strB as String strA = VBA for AutoCad strB = Mid(strA, 4,3) ----->strB = for strB = Mid(strA, 4) ----->strB = for AutoCad 4.5.4. Hm LEN C php Len(String) Cng dng Hm ny tr v mt s NGUYN - L s lng k t trong mt chui (Bao gm c khong trng) V d Dim strA as String Dim lngB as Long strA = VBA for AutoCad lngB = Len(strA) ----->lngB = 15 4.5.5. Hm UCase C php UCase(String) Cng dng Hm ny chuyn cc k t trong mt chui thnh ch HOA

Basic VBA for AutoCad

Page 31

Designing Team-Engineering Department V d Dim strA, strB as String strA = VBA for AutoCad strB = UCase(strA) ----->strB = VBA FOR AUTOCAD 4.5.6. Hm LCase C php LCase(String) Cng dng Hm ny chuyn cc k t trong mt chui thnh ch THNG V d Dim strA, strB as String strA = VBA for AutoCad strB = UCase(strA) ----->strB = vba for autocad 4.5.7. Hm InStr C php InStr([Start, ]String_1, String_2 [, compare]) Cng dng

inh Vn Trng

Hm ny tr v mt s NGUYN L v tr bt u ca chui String_2 trong chu i String_1 bt u t v tr Start.Nu chui String_2 khng c tm thy hm s tr v gi tr 0.

Basic VBA for AutoCad

Page 32

Designing Team-Engineering Department Gii thch Tham s Gii thch

inh Vn Trng

Kiu Integer/Long Tham s ty chn, l v tr bt u tm Start kim.Gi tr mc nh bng 1.Nu tham s Compare c s dng th tham s Start bt buc phi c s dng String_1 String_2 Compare Kiu String Chui b tm kim Kiu String Chui tm kim Tham s ty chn - Hng s so snh

Hng s so snh (Chng ta quan tm 2 hng s sau) Hng s ngha Kiu so snh ny phn bit ch hoa v ch thng (y l gi tr mc nh ca hm InStr) Kiu so snh ny khng phn bit ch hoa v ch thng

vbBinaryCompare

vbTextCompare V d

Dim strA, strB as String Dim intC as Integer strA = VBA for AutoCad strB = a intC = InStr(1 ,strA ,strB,vbTextCompare) ----->intC = 3 intC = InStr(1 ,strA ,strB,vbBinaryCompare) ----->intC = 14 intC = InStr(strA ,strB) ----->intC = 14

Basic VBA for AutoCad

Page 33

Designing Team-Engineering Department 4.5.8. Hm InStrRev C php InStrRev(String_1, String_2 [,Start] [, compare]) Cng dng

inh Vn Trng

Hm ny tr v mt s NGUYN L v tr bt u ca chui String_2 trong chu i String_1 bt u t v tr Start.Hm ny ngc vi hm InStr, n s tm ngc t v tr Start tr v trc.Nu chu i String_2 khng tm thy hm s tr v gi tr 0 Gii thch Tham s String_1 String_2 Compare Gii thch Kiu String Chui b tm kim Kiu String Chui tm kim Tham s ty chn - Hng s so snh (Xem bng hng s so snh) Tham s ty chn ,Kiu Integer/Long L v tr bt u tm kim.Gi tr mc nh ca tham s l bt u t cui chui String_1.

Start

Hng s so snh (Chng ta quan tm 2 hng s sau) Hng s ngha Kiu so snh ny phn bit ch hoa v ch thng (y l gi tr mc nh ca hm InStrRev) Kiu so snh ny khng phn bit ch hoa v ch thng

vbBinaryCompare

vbTextCompare

Basic VBA for AutoCad

Page 34

Designing Team-Engineering Department V d Dim strA, strB as String Dim intC as Integer strA = VBA for AutoCad strB = a intC = InStr(1 ,strA ,strB,vbTextCompare) ----->intC = 3 intC = InStr(1 ,strA ,strB,vbBinaryCompare) ----->intC = 14 intC = InStr(strA ,strB) ----->intC = 14 4.5.9. Hm Ltrim, RTrim C php LTrim(String) RTrim(String) Trim(String) Cng dng

inh Vn Trng

Hm LTrim xa cc khong trng u mt chui, hm RTrim xa cc khong trng cui chu i, hm Trim xa khong trng c u v cui chu i. V d Dim strA, strB as String strA = VBA for AutoCad strB = LTrim(strA) ----->strB = VBA for AutoCad strA = VBA for AutoCad strB = RTrim(strA) ----->strB = VBA for AutoCad strA = VBA for AutoCad strB = Trim(strA) ----->strB = VBA for AutoCad

Basic VBA for AutoCad

Page 35

Designing Team-Engineering Department 4.5.10. Hm Space C php Space(Number as Integer) Cng dng Hm ny to ra mt chui cha Number khong trng V d Dim strA, strB, strC as String strA = VBA for AutoCad strB = Example Space function

inh Vn Trng

strC = strA & Space(3) & strB ----> strC VBA for AutoCad Example Space function 4.5.11. Hm Split C php Split(String [, Delimiter] [, limit] [, Compare]) Cng dng Hm ny tch mt chui di thnh mt mng gm nhiu chu i nh bng k t kha Delimiter. Nu k t kha Delimiter l mt chui rng th mng tr v l ton b chui String Ch : Hm ny s tr v mt MNG gm nhiu chu i nh nn kiu ca bin tr v s l Mng ng kiu String hoc Mng Tnh kiu String nu tham s Limit c xc nh hoc kiu Variant.

Basic VBA for AutoCad

Page 36

Designing Team-Engineering Department Gii thch Tham s String Ngha Kiu String Chu i s c tch

inh Vn Trng

Delimiter

Tham s ty chn, kiu String Chu i cha gi tr lm gii hn chia (Mc nh s dng khong trng lm gii hn chia) Tham s ty chn - S lng chu i cho php tr v.Mc nh gi tr ny s tr v tt c cc chui c chia. Tham s ty chn Xc inh kiu so snh

Limit

Compare

vbBinaryCompare Phn bit ch Hoa v ch Thng (Gi tr mc nh) vbTextCompare Khng phn bit ch Hoa v ch Thng

V d Dim strA as String Dim varB as Variant strA = VBA for AutoCad varB = Split(strA) ---> varB(0) = VBA:varB(1) = for : varB(2) = AutoCad varB = Split(strA,A) ---> varB(0) = VB:varB(1) = for : varB(2) = utoCad varB = Split(strA,A, ,vbTextCompare) ---> varB(0) = VB:varB(1) = for : varB(2) = utoC:varB(3) = d varB = Split(strA,A,2) ---> varB(0) = VB:varB(1) = for AutoCad

Basic VBA for AutoCad

Page 37

Designing Team-Engineering Department 4.5.12. Hm Replace C php

inh Vn Trng

Replace(String, Find, Replace[, start ] [, count] [, compare]) Cng dng Hm ny tr v mt chui mi vi vic thay th chui Find trong chui String bng chu i Replace. Gii thch Tham s String Find Replace Ngha Kiu String Chu i cha k t thay th Kiu String Chu i cha gi tr c thay th Kiu String Chu i cha gi tr thay th. Tham s ty chn, kiu Integer/Long V tr bt u thay th, chui mi s bt u t v tr ny.Gi tr mc nh bng 1 Tham s ty chn, kiu Integer/Long S ln thay th.Gi tr mc nh l tt c cc v tr s c thay th. Tham s ty chn Xc inh kiu so snh Compare vbBinaryCompare Phn bit ch Hoa v ch Thng (Gi tr mc nh) vbTextCompare Khng phn bit ch Hoa v ch Thng

Start

Count

Basic VBA for AutoCad

Page 38

Designing Team-Engineering Department V d Dim strA, strB as String strA = VBA for AutoCad

inh Vn Trng

strB = Replace(strA, AutoCad, Excel) ---> strB = VBA for Excel strB = Repleca(strA,A, B, 5) ---> strB = for ButoCad strB = Split(strA,A, B, 5, 3 ,vbTextCompare) ---> var = for ButoCbd varB = Split(strA,A,2) ---> varB(0) = VB:varB(1) = for AutoCad 4.5.13. Hm StrComp C php StrComp(String_1, String_2 [, compare]) Cng dng Hm ny dng so snh hai chu i String_1 v String_2 vi nhau. Gii thch Tham s String_1, String_2 Ngha

Kiu String Hai chui dng so snh vi nhau

Tham s ty chn Xc inh kiu so snh Compare vbBinaryCompare Phn bit ch Hoa v ch Thng (Gi tr mc nh) vbTextCompare Khng phn bit ch Hoa v ch Thng

Basic VBA for AutoCad

Page 39

Designing Team-Engineering Department Gi tr tr v ca hm StrComp String_1 < String_2 String_1 =String_2 String_1 > String_2 V d Dim strA, strB,StrC as String strA = VBA for AutoCad strB = VBA for AutoCad strC = VBA for Autocad Dim returnValue as Integer returnValue = StrComp(strA, strB) ----> returnValue = 0 returnValue = StrComp(strA, strC) ----> returnValue = -1 -1 0 1

inh Vn Trng

returnValue = StrComp(strA, strC, vbTextCompare) ----> returnValue = 0

Basic VBA for AutoCad

Page 40

Designing Team-Engineering Department Chng 5 CU TRC IU KIN V VNG LP 5.1. Cu Trc iu Kin 5.1.1. Cu trc : If Then Trong trng hp mt dng lnh If <Biu thc iu kin> Then <Khi lnh> Ch : Trong trng hp mt dng lnh th khng c t kha End If Trong trng hp nhiu dng lnh If <Biu thc iu kin> Then <Khi lnh> End If

inh Vn Trng

S khi

Din gii Nu <Biu thc iu kin> l NG th chng trnh s thc hin <Khi Lnh>, nu SAI s thot khi cu trc lnh.

Basic VBA for AutoCad

Page 41

Designing Team-Engineering Department V d

inh Vn Trng

5.1.2. Cu trc : If Then Else End If Khi ta mun x l trong trng hp <Biu thc iu kin> tr v gi tr SAI th ta s dng cu trc iu kin sau. Cu trc If <Biu thc iu kin> Then <Khi lnh_1> Else <Khi lnh_2> End If S khi

Din gii Nu <Biu thc iu kin> l NG th chng trnh s thc hin <Khi Lnh_1>, nu SAI chng trnh s thc hin <Khi Lnh_2>. Basic VBA for AutoCad Page 42

Designing Team-Engineering Department V d

inh Vn Trng

5.1.3. Cu trc : If Then Else End If m rng Khi c nhiu <Biu thc iu kin> th chng ta s dng cu trc iu kin m rng sau. Cu trc If <Biu thc iu kin_1> Then <Khi Lnh_1> ElseIf <Biu thc iu kin_2> Then <Khi Lnh_2> .. ElseIf <Biu thc iu kin_n-1> Then <Khi Lnh_n-1> Else <Khi Lnh_n> End If Din gii cu trc : Nu <Biu thc iu kin_1> l NG th chng trnh s thc hin <Khi Lnh_1>, nu SAI chng trnh s kim tra ln lt iu kin t <Biu thc iu kin_2> n <Biu thc iu kin_n-1>, nu iu kin no NG s thc hin <Khi Lnh> tng ng v thot khi cu trc ny.Nu khng c <Biu thc iu kin> no tha mn chng trnh s thc hin <Khi Lnh_n> sau t kha Else v thot khi cu trc ny. Basic VBA for AutoCad Page 43

Designing Team-Engineering Department V d

inh Vn Trng

5.1.4. Cu trc: Select Case CaseEnd Select Cu trc Select Case <Biu thc kim tra> Case <iu kin_1> <Khi Lnh_1> Case <iu kin_2> <Khi Lnh_2> Case <iu kin_n> <Khi Lnh_n> Case Else <Khi Lnh_Else> End Select

Din gii <Biu thc kim tra> s c so snh t <iu kin_1> n <iu kin_n>, nu <iu kin_1> tha mn <Biu thc kim tra> th <Khi Lnh_i> c thc hin.Nu tt c cc iu kin khng tha mn th <Khi Lnh_Else> s c thc hin.T kha Case Else c th c hoc c th khng

Basic VBA for AutoCad

Page 44

Designing Team-Engineering Department V d

inh Vn Trng

5.2. Cu Trc Vng Lp 5.2.1. Cu trc: For Next y l vng lp thng thng nht c s dng khi chng ta bit chnh xc s ln lp. Cu trc For <Bin m>=<Gi tr u> To <Gi tr cui> [Step <Bc nhy>] <Khi Lnh> Next Mt s ch - For, To, Step, Next y l cc t kha mc nh ca chng trnh. - <Bin m>, <Gi tr u>, <Gi tr cui> phi l cc gi tr s. - Gi tr ca <Bc nhy> c th m hoc Dng Nu <Bc nhy> l Dng th <Gi tr u> phi nh hn hoc bng <Gi tr cui>. Nu <Bc nhy> l m th <Gi tr u> phi ln hn hoc bng <Gi tr cui>. Nu khng ch ra gi tr c th ca <Bc nhy> (Khng c t kha Step) th gi tr mc nh ca <Bc nhy> l 1 - Mun thot khi vng lp ta s dng t kha Exit For Basic VBA for AutoCad Page 45

Designing Team-Engineering Department Cch lm vic ca cu trc - Ban u gn <Bin m> bng vi <Gi tr bt u> - So snh <Bin m> vi <Gi tr cui> Nu <Bc nhy> l Dng

inh Vn Trng

Nu <Bin m> nh hn hoc bng <Gi tr cui> th thc hin <Khi Lnh> v t ng cng thm mt gi tr bng <Bc nhy> nu c t kha Step cn khng s cng thm 1 v quay li bc so snh <Bin m> vi <Gi tr cui>. Nu <Bin m> ln hn <Gi tr cui> s kt thc vng lp. Nu <Bc nhy> l m Nu <Bin m> ln hn hoc bng <Gi tr cui> th thc hin <Khi Lnh> v t ng cng thm vo <bin m> mt gi tr bng <Bc nhy> nu c t kha Step cn khng s cng thm 1 v quay li bc so snh <Bin m> vi <Gi tr cui>. Nu <Bin m> nh hn <Gi tr cui> s kt thc vng lp. V d : V d ny s tnh tng ca cc s t 1 n 50

V d V d ny s tnh tng cc s chn t 0 n 50

Basic VBA for AutoCad

Page 46

Designing Team-Engineering Department 5.2.2. Cu trc : For Each Next

inh Vn Trng

i vi mt tp hp cc phn t hoc mt mng chng ta khng th xc nh c th s phn t ca n th vic lp mt khi lnh no s tr nn kh khn. gii quyt vn ny chng ta s dng cu trc For Each Next. Cu trc : For Each <Phn T> In <Tp hp>

<Khi Lnh> Next Mt s ch : - For Each, In, Next l cc t kha mc nh ca chng trnh. - <Bin chy> s nhn gi tr t phn t u tin n phn t cui cng trong <Tp hp>.ng vi m i gi tr ca bin chy th <Khi Lnh> s c thc hin mt ln. - Nu <Tp hp> l mt Tp cc i tng th kiu d liu ca <Bin chy> c th l Variant hoc cng kiu vi kiu ca cc i tng trong tp hp .Nu <Tp hp> l Mng th kiu d liu ca <Bin chy> ch c th l Variant. - thot khi vng lp chng ta s dng t kha Exit For. V d V d ny s duyt qua tp i tng Blocks trong bn v, nu tm thy Block c tn Section th gi tr TF_Section s bng True v thot khi vng lp

Basic VBA for AutoCad

Page 47

Designing Team-Engineering Department 5.2.3. Cu trc : Do While Loop Cu trc Do While <iu kin> <Khi Lnh> Loop Ch

inh Vn Trng

- Vi cu trc ny <iu kin> s c kim tra trc khi vo vng lp, <Khi Lnh> ch c thc hin khi <iu kin> l NG. - Mun thot khi vng lp ny ta s dng t kha Exit Do V d

5.2.4. Cu trc : Do Loop While Cu trc Do <Khi Lnh> Loop While <iu kin> Ch - Vi cu trc ny <iu kin> c kim tra sau khi <Khi lnh> c thc hin, do <Khi lnh> c t nht 1 ln c thc thi.Khi <iu kin> l NG s tip tc thc hin vng lp. - thot khi vng lp ta s dng t kha Exit Do Basic VBA for AutoCad Page 48

Designing Team-Engineering Department 5.2.5. Cu trc : Do Until Loop Cu trc Do Until <iu kin> <Khi Lnh> Loop Ch

inh Vn Trng

Vi cu trc ny th <iu kin> s c kim tra u vng lp v <Khi Lnh> s c thc hin khi <iu kin> l SAI. - thot khi vng lp ta s dng t kha Exit Do V d

5.2.6. Cu trc : Do Loop Until Cu trc Do <Khi Lnh> Loop Until <iu kin> Ch - Tng t nh cu trc Do Loop While cu trc ny cng s kim tra <iu kin> sau khi thc hin <Khi Lnh>, do <Khi Lnh> c t nht 1 ln c thc thi.Nu <iu kin> l SAI th s tip tc vng lp. - thot khi vng lp ta s dng t kha Exit Do

Basic VBA for AutoCad

Page 49

Designing Team-Engineering Department Chng 6 CC HM NHP LIU Ni dung chng : -

inh Vn Trng

Gii thiu v i tng Utility v cc phng thc c trong i tng ny Gii thiu v phng thc Prompt Gii thiu v phng thc GetString Gii thiu v phng thc GetPoint Gii thiu v phng thc GetInteger, GetReal Gii thiu v phng thc GetDistance Gii thiu v phng thc GetKeyWord Gii thiu v phng thc GetCorner Gii thiu v phng thc GetEntity Gii thiu v phng thc InitializeUserInput

Trong lp trnh VBA cho Autocad tng tc gia ngi dng v chng trnh l mt yu t thit yu.Thng qua s tng tc ny ngi s dng c th nhp d liu v iu khin chng trnh hot ng.Trong VBA vic nhp d liu c h tr thng qua i tng Utility mt thuc tnh ca i tng Thisdrawing. Mi phng thc nhp liu t ngi dng u hin th du nhc trn dng lnh ca Autocad cho php ngi dng nhp d liu t Dng Lnh hoc t Mn Hnh Ha ca Autocad v tr v gi tr ph hp vi kiu gi tr cn nhp vo.V d phng thc GetString tr v kiu String, phng thc GetInteger tr v kiu Integer, phng thc GetPoint tr v kiu Variant (s l mng 1 chiu 3 phn t kiu Double)Ta c th kim sot vic nhp d liu t ngi dng bng cch s dng phng thc InitializeUserInput, vi phng thc ny cho php ta iu khin nhiu th nh :khng th nhp vo s m, khng th nhp vo gi tr Null Di y l mt s hm nhp liu thng dng.

Basic VBA for AutoCad

Page 50

Designing Team-Engineering Department 6.1. Phng thc : Prompt Cng dng

inh Vn Trng

Phng thc Prompt c dng gi mt thng bo n ngi dng trc khi hoc sau khi mt ni dung no uc thc hin thng qua dng lnh ca AutoCad. C php Thisdrawing.Utility.Prompt Mesage Vi Message l chu i thng bo s c hin th ti dng lnh ca AutoCad V d

Sau khi chy v d trn, mn hnh Autocad hin kt qu nh sau:

dng thng bo xut hin trn mt dng ta thm vo hng s vbCrLf nh sau

Lc ny kt qu nh sau:

Basic VBA for AutoCad

Page 51

Designing Team-Engineering Department 6.2. Phng thc: GetString Cng dng Yu cu ngi dng nhp vo mt chui ti dng lnh ca Autocad C php

inh Vn Trng

StrObj = Thisdrawing.Utility.GetString (HasSpaces [, Prompt]) Gii thch Tham s StrObj Gii thch Kiu String - ThBin cha gi tr chui do ngi dng nhp vo Kiu Boolean, iu khin vic nhp du cch Nu HasSpaces = TRUE ngi dng c th nhp du cch trong HasSpaces chu i, ch c th nhn Enter kt thc lnh. Nu HasSpaces =FALSE ngi dng khng th nhp du cch trong chui,nhn Space hoc Enter u c th kt thc lnh Tham s ty chn kiu String - L chu i s hin th trn dng lnh ca Autocad nhc ngi dng nhp d liu.

Prompt

V d

Basic VBA for AutoCad

Page 52

Designing Team-Engineering Department 6.3. Phng thc : GetPoint Cng dng

inh Vn Trng

Phng thc ny s yu cu ngi dng nhp vo mt im bng cch nhp ta trc tip t dng lnh hoc chn im trn mn hnh. C php PointObj = Thisdrawing.Utility.GetPoint ([Base Point] [, Prompt ]) Gii thch Tham s Gii thch Kiu Variant L mng 1 chiu 3 phn t cha ta im c PointObj nhp vo Tham s ty chn im tham chiu n im c nhp vo.Nu Base Point c tham s Base Point s xut hin si dy thun n i t im Base Point n v tr con tr chut. Tham s ty chn kiu String- L chu i s hin th trn dng lnh Prompt V d ca Autocad nhc ngi dng nhp d liu.

Basic VBA for AutoCad

Page 53

Designing Team-Engineering Department 6.4. Phng thc : GetInteger v GetReal Cng dng

inh Vn Trng

Phng thc GetInteger s yu cu ngi s dng nhp vo mt s nguyn, cn phng thc GetReal s yn cu ngi dng nhp vo mt s thc C php IntValue = Thisdrawing.Utitlity.GetInteger ([Prompt]) DblValue = Thisdrawing.Utitlity.GetReal ([Prompt]) Gii thch Tham s IntValue DblValue Gii thch Kiu Integer - Bin cha gi tr s nguyn do ngi dng nhp vo Kiu Double - Bin cha gi tr s thc do ngi dng nhp vo Tham s ty chn, kiu String Chu i k t hin trn dng lnh ca AutoCad yu cu ngi dng nhp d liu vo

Prompt

V d

Basic VBA for AutoCad

Page 54

Designing Team-Engineering Department 6.5. Phng thc : GetDistance Cng dng

inh Vn Trng

Phng thc ny s yu cu ngi dng nhp vo gi tr khong cch, gi tr ny c th c nhp t dng lnh hoc c th c chn 2 im trn mn hnh bn v. C php DistValue = Thisdrawing.Utility.GetDistance ([Point] [,Prompt]) Gii thch Tham s Gii thch Kiu Double Bin cha gi tr khong cch do ngi dng nhp vo. Tham s ty chn, kiu Variant/Double mng 1 chiu c 3 phn t th hin ta ca im c s tnh khong cch. Point Nu tham s ny C th ngi dng c th nhp khong cch hoc chn thm mt im xc nh khong cch. Nu tham s ny KHNG C th ngi dng c th nhp gi tr khong cch hoc chn 2 im xc nh khong cch. Tham s ty chn,kiu String L chu i hin trn dng lnh ca Autocad nhc ngi dng nhp d liu

DistValue

Prompt

Ch Phng thc GetDistance cho php ngi dng nhp vo mt s m v s tr v mt s m tng ng.Khi ngi dng chn im trn mn hnh th phng thc ny lun tr v gi tr tuyt i ca khong cch gia hai im.

Basic VBA for AutoCad

Page 55

Designing Team-Engineering Department V d

inh Vn Trng

6.6. Phng thc : GetKeyWord Cng dng Phng thc ny s yu cu ngi dng nhp vo t kha dng lnh ca AutoCad C php StrKeyword = Thisdrawing.Utility.GetKeyWord ([Prompt]) Gii thch Tham s StrKeyword Gii thch Kiu String Bin cha gi tr do ngi dng nhp vo Tham s ty chn kiu String L chu i hin trn dng lnh ca Autocad nhc ngi dng nhp d liu

Prompt

Basic VBA for AutoCad

Page 56

Designing Team-Engineering Department V d

inh Vn Trng

6.7. Phng thc GetEntity Cng dng Phng thc ny c s dng ly MT I TNG ca Autocad bng cch yu cu ngi dng chn trc tip trn mn hnh bn v. C php Thisdrawing.Utility.GetEntity PickedEntity, PickPoint [, Prompt] Gii thch Tham s PickedEntity Gii thch Bin cha i tng c chn. Kiu Variant Mng 3 phn t th hin ta im m ngi dng kch chut chn i tng. Tham s ty chn, kiu String L chu i hin trn dng lnh ca Autocad nhc ngi dng nhp d liu

PickedPoint

Prompt

Basic VBA for AutoCad

Page 57

Designing Team-Engineering Department V d

inh Vn Trng

V d ny s yu cu ngi dng chn mt i tng trn mn hnh bn v, sau s thng bo v loi i tng c chn v ta im chn .

6.8. Phng thc: GetCorner Cng dng Phng thc ny yu cu ngi dng nhp mt im trn dng lnh hoc chn mt im trn mn hnh bn v - im ny chnh l mt gc ca mt hnh ch nht. C php VarPoint =Thisdrawing.Utility.GetCorner (BasePoint [,Prompt]) Gii thch Tham s Gii thch Kiu Variant Thc cht l mng 1 chiu 3 phn t th hin ta gc ca hnh ch nht Mng 1 chiu 3 phn t - Th hin gc th nht ca hnh ch nht Tham s ty chn kiu String L chu i hin trn dng lnh ca Autocad nhc ngi dng nhp d liu

VarPoint

BasePoint

Prompt

Basic VBA for AutoCad

Page 58

Designing Team-Engineering Department V d

inh Vn Trng

6.9. Phng thc : InitializeUserInput Cng dng Phng thc InitializeUserInput dng nh ngha cc t kha hoc hn ch vic nhp d liu trong cc phng thc nh GetDistance, GetInteger, GetKeyword, GetPoint, GetReal, GetCorner C php Thisdrawing.Utility. InitializeUserInput Bits [,Keyword] Gii thch Tham s Gii thch Kiu Integer - Gi tr tham s ny bng tng cc Bit Code tng Bits ng vi cc ch kim sot m ta mong mun Tham s ty chn kiu String cha danh sch cc t kha

Keyword

Basic VBA for AutoCad

Page 59

Designing Team-Engineering Department

inh Vn Trng

Mt s gi tr Bit Code v ch kim sot tng ng thng dng Bit Code Ch kim sot Gi tr PHI c nhp vo, khng chp nhn gi tr Null (Ch nhn phm Enter m khng nhp gi tr) Gi tr nhp phi khc 0 Gi tr nhp khng c l s m Dng cho hm GetDistance, bit code ny s loi b ta Z ca hai 64 im cn tnh khong cch (tng t nh vic chiu 2 im ny ln mt phng XY, sau tnh khong cch gia hai im chiu ny) Cho php nhp chu i k t khng c trong danh sch cc t 128 kha.Cc Bit Code khc s c u tin trc nhng nu Bit Code 1 v Bit Code 128 c s dng cng lc vi nhau (BITS=129) th gi tr Null nhp vo s c chuyn thnh chu i rng V d V d ny s thng bo d liu nhp vo phi khc rng, khc khng v khng m

2 4

Basic VBA for AutoCad

Page 60

Designing Team-Engineering Department Chng 7 TO MI I TNG TRONG AUTOCAD

inh Vn Trng

Ni dung chng : Khi nim v ModelSpace v PaperSpace Cch to mi mt s i tng chnh trong AutoCad nh Line, Circle, Arc, Text, Mtext

Basic VBA for AutoCad

Page 61

Designing Team-Engineering Department 7.1. Xc nh ni cha i tng

inh Vn Trng

Trong AutoCad tt c cc i tng ha u c to trong tp i tng ModelSpace (Khng gian m hnh), t p i tng PaperSpace (Khng gian in) hoc trong i tng Block.Tuy nhin c s dng nhiu nht l hai tp i tng ModelSpace v PaperSpace. ModelSpace :y l ni ch yu cc i tng ha cu thnh nn bn v s c thc hin.Trong AutoCad ch c mt khng gian m hnh tng ng vi n chnh l th Model nm gc di mn hnh bn v. PaperSpace : PaperSpace cng cho php cha cc i tng ha, nhng mc ch chnh ca PaperSpace l b tr v in n bn v.PaperSpace thng cha cc khung nhn theo mt t l nh trc th hin mt phn bn v bn ModelSpace.Trong AutoCad ngi dng c th to nhiu khng gian in khc nhau, mi khng gian in tng ng vi mt th Layout nm gc di mn hnh bn v. truy cp n cc khng gian in ta s dng tp i tng Layouts. Ti mt thi im hoc ModelSpace hoc PaperSpace l hin hnh.Chng ta dng thuc tnh ActiveSpace c trong i tng Thisdrawing thit lp s hin hnh ca mt khng gian. V d V d ny s thng bo ModelSpace hay PaperSpace l hin hnh

V d V d ny s chuyn i qua li gia ModelSpace v PaperSpace

Basic VBA for AutoCad

Page 62

Designing Team-Engineering Department 7.2. Khai bo v phng thc to i tng hnh hc 7.2.1. To ng thng Phng thc AddLine C php

inh Vn Trng

Set LineObj = Thisdrawing.SPACE.AddLine (StartPoint, EndPoint) Gii thch Tham s LineObj SPACE StartPoint, EndPoint V d Gii thch Kiu acadLine Bin cha on thng c tr v Khng gian cha i tng Line : ModelSpace hoc PaperSpace Kiu Variant hoc mng 1 chiu 3 phn t kiu Double cha ta im u v im cu i ca on thng c to

Basic VBA for AutoCad

Page 63

Designing Team-Engineering Department

inh Vn Trng

7.2.2. To i tng LWPolyline - Phng thc AddLightWeightPolyline to mt i tng gm nhiu on thng lin tip i qua cc im chng ta s dng phng thc AddLightWeightPolyline C php Set LWPolylineObj = Thisdrawing.SPACE.AddLightWeightPolyline (Points) Gii thch Tham s LWPolylineObj SPACE Gii thch Kiu acadLWPolyline Bin cha i tng LightWeightPolyline Khng gian cha i tng Line : ModelSpace hoc PaperSpace Tham s kiu Double cha ta nh ca a tuyn.Mi nh ch Points c 2 thnh phn x v y.V vy s phn t ca tham s Points lun l s chn. V d V d ny s to ra mt a tuyn g m nhiu on thng lin tip i qua cc im, khi mun kt thc th nhn phm Enter hoc nhn ESC

Basic VBA for AutoCad

Page 64

Designing Team-Engineering Department 7.2.3. To i tng ng trn Phng thc AddCircle C php

inh Vn Trng

Set CircleObj = Thisdrawing.SPACE.AddCircle (CenterPoint, Radius) Gii thch Tham s CircleObj SPACE Gii thch Kiu acadCircle Bin cha ng trn c to. Khng gian cha i tng Line : ModelSpace hoc PaperSpace Kiu Variant hoc mng 3 phn t kiu Double Th hin ta tm ca ng trn Kiu Double Bn knh ca ng trn nhp vo

CenterPoint

Radius V d

V d

Basic VBA for AutoCad

Page 65

Designing Team-Engineering Department 7.2.4. To i tng cung trn Phng thc AddArc C php

inh Vn Trng

Set ArcObj = Thisdrawing.SPACE.AddArc (CenterPoint, Radius, StartAngle, EndAngle) Gii thch Tham s ArcObj SPACE CenterPoint Radius Gii thch Kiu acadArc - Bin cha i tng Arc c to Khng gian cha i tng Line : ModelSpace hoc PaperSpace Kiu Variant hoc mng 3 phn t kiu Double cha ta tm ca cung trn Kiu Double Bn knh ca cung trn c to

Kiu Double Gc bt u v kt thc ca cung trn (Tnh bng StartAngle,EndAngle Radian).Phng thc ny s v cung trn theo chiu ngc chiu kim ng h t gc StartAngle n gc EndAngle. V d

Basic VBA for AutoCad

Page 66

Designing Team-Engineering Department 7.2.5. To i tng vn bn n - phng thc AddText C php

inh Vn Trng

Set TextObj = thisdrawing.SPACE.AddText (TextString, InsertPoint,Height) Gii thch Tham s TextObj SPACE TextString InsertPoint Height Gii thch Kiu acadText Bin cha i tng Text c to Khng gian cha i tng Line : ModelSpace hoc PaperSpace Kiu String L chu i hin th trn bn v Kiu Variant hoc mng 3 phn t kiu Double xc nh im chn chui vn bn. Kiu Double Xc nh chiu cao ch c to

Ch : Vn bn c to s s dng kiu ch hin hnh vi nhng thit lp mc nh v phng ch v nh dng V d

Basic VBA for AutoCad

Page 67

Designing Team-Engineering Department 7.2.6. To i tng vn bn nhiu dng-Phng thc AddMtext C php

inh Vn Trng

Set MtextObj = Thisdrawing.SPACE.AddMText (InsertPoint, Width, TextString) Gii thch Tham s MtextObj SPACE InsertPoint Width TextString Gii thch Kiu acadMtext Bin cha i tng MText c to Khng gian cha i tng Line : ModelSpace hoc PaperSpace Kiu Variant hoc mng 3 phn t kiu Double xc nh im chn chui vn bn. Kiu Double Xc nh b rng ca vn bn c hin th Kiu String L chu i hin th trn bn v

V d V d ny s to mt i tng Mtext trong ModelSpace, sau tin hnh i mu thnh Magenta ng thi thit lp ch cn l l Middle Center cho i tng MText ny.

Basic VBA for AutoCad

Page 68

Designing Team-Engineering Department Chng 8 LM VIC VI I TNG SELECTIONSET

inh Vn Trng

Ni dung chng : - Khai bo v khi to mt i tng SelectionSet - Gii thiu mt s phng thc chn i tng thng dng - Kt hp b lc i tng vo cc phng thc chn i tng

Basic VBA for AutoCad

Page 69

Designing Team-Engineering Department 8.1. Quy trnh lm vic vi i tng SelectionSet

inh Vn Trng

i tng SelectionSet c s dng cha cc i tng c chn trong bn v.Mi i tng SlectionSet c nhiu phng thc thm i tng vo n nh AddItems, SelectOnScreen Mi bn v Autocad u c mt tp i tng SelectionSets cha cc i tng SelectionSet trong bn v.Ngi dng c th to ra nhiu i tng SelectionSet bng cch dng phng thc Add c trong tp i tng SelectionSets. i tng SelectionSet ch c tnh cht tm thi ngha l khi ng bn v li th mi i tng SelectionSet s l mt tp rng. Qu trnh lm vic vi i tng SelectionSet gm cc bc sau: Khai bo i tng SelectionSet Khi to i tng SelectionSet. Thm cc i tng vo SelectionSet Thc hin cc thao tc cn thit trn cc i tng trong SelectionSet

8.2. Khai bo v khi to i tng SelectionSet C php Set SelectionSetObj = Thisdrawing.SelectionSets.Add (SelectionSetName) Gii thch Tham s Gii thch Kiu acadSelectionSet Bin cha i tng SelectionSet c to Kiu String Chui xc nh tn SelectionSet c to

SelectionSetObj

SelectionSetName

Basic VBA for AutoCad

Page 70

Designing Team-Engineering Department V d

inh Vn Trng

Gii thch dng lnh - Dng m lnh s 1: Tt cc thng bo l i khi xut hin - Dng m lnh s 2: Khai bo i tng SelectionSet - Dng m lnh s 3: Nu i tng SelectionSet c tn Kira tn ti th s c gn cho i tng SelectionSetObj. - Dng m lnh s 4: Nu i tng SelectionSet c tn Kira cha tn ti th s xut hin l i. - Dng m lnh s 5: Xa l i xy ra. - Dng m lnh s 6: Khi to i tng SelectionSet c tn Kira - Dng m lnh s 7: Nu tn ti i tng SelectionSet c tn Kira th s xa b ni dung bn trong i tng ny.

8.3. Thm i tng vo trong mt SelectionSet thm cc i tng hnh hc vo trong mt SelectionSet chng ta s dng phng thc c sn trong i tng SelectionSet nh AddItems, Select, SelectAtPoint, SelectionOnScreen, SelectByPolygon Ty thuc vo mi phng thc c s dng m c cc tham s tng ng i km khc nhau.Sau y l mt s phng thc thng c s dng.

Basic VBA for AutoCad

Page 71

Designing Team-Engineering Department 8.3.1. Phng thc AddItems

inh Vn Trng

Phng thc ny dng thm TNG I TNG hnh hc vo trong i tng SelectionSet. C php SelectionSetObj. AddItems ArrayObj Gii thch Tham s SelectionSetObj Gii thch u acadSelectionSet Bin cha i tng SelectionSet c to u Variant, l mng cha cc i tng c thm vo SelectionSet

ArrayObj V d

Basic VBA for AutoCad

Page 72

Designing Team-Engineering Department 8.3.2. Phng thc Select

inh Vn Trng

Phng thc Select l mt phng thc c bn ca i tng SelectionSet.Vi phng thc ny th ngi dng s c nhiu la chn khc nhau thm i tng vo trong i tng SelectionSet ty thuc vo vic s dng cc tham s ca phng thc. C php SelectionSetObj.Select Mode [, Point_1] [, Point_2] [, FilterType] [, FilterData] Gii thch Tham s Gii thch Kiu acadSelectionSet Bin cha i tng SelectionSet c to Kiu InteGer - Tham s xc nh ch chn i tng. Tham s ty chn, kiu Variant /Double - Mng 3 phn t cha Point_1 ta im th nht ca ca s la chn, s dng kt hp vi tham s Point_2 Tham s ty chn, kiu Variant/ Double - Mng 3 phn t cha ta Point_2 im th hai ca ca s la chn, s dng kt hp vi tham s Point_1 FilterType, FilterData Tham s ty chn xc nh b lc i tng (Xem chi tit ti B lc i tng)

SelectionSetObj

Mode

Gii thiu tham s Mode Tham s Mode s xc nh cch thc la chn i tng khi s dng phng thc Select.

Basic VBA for AutoCad

Page 73

Designing Team-Engineering Department Bng gi tr v ngha ca tham s Mode Mode Gi tr ngha

inh Vn Trng

Chn tt c cc i tng nm trong hnh ch nht acSelectionSetWindow 0 gii hn bi hai im Point_1, Point_2.Hai tham s Point_1, Point_2 bt buc phi c s dng Chn tt c cc i tng nm trong hoc b ct acSelectionSetCrossing 1 bi hnh ch nht gii hn bi hai im Point_1, Point_2.Hai tham s Point_1, Point_2 bt buc phi c s dng Chn cc i tng c chn gn nht.Hai tham s Point_1, Point_2 c b qua. Chn i tng cui cng c to ra.Hai tham s Point_1, Point_2 c b qua Chn tt c cc i tng trong bn v.Hai tham s Point_1, Point_2 c b qua

acSelectionSetPrevious

acSelectionSetLast

acSelectionSetAll

V d

Basic VBA for AutoCad

Page 74

Designing Team-Engineering Department 8.3.3. Phng Thc SelectOnScreen

inh Vn Trng

Phng thc ny s hin th dng nhc Select Object: ti dng lnh v cho php ngi dng chn i tng trc tip trn mn hnh bn v bng nhiu cch.Cch thao tc ny ging nh mt s lnh thng thng ca AutoCad nh Copy, Move, Delete Vi phng thc ny th hai tham s Point_1 v Point_2 khng c s dng, hai tham s xc inh ch lc FilterType v FilterData c th c s dng. C php SelectionSetObj.SelectOnScreen [FilterType] [, FilterData] Gii thch Tham s Gii thch Kiu acadSelectionSet Bin cha i tng SelectionSet c to ra Tham s ty chn xc nh b lc i tng (Xem chi tit ti B lc i tng)

SelectionSetObj

FilterType, FilterData V d

Basic VBA for AutoCad

Page 75

Designing Team-Engineering Department 8.3.4. Thao tc vi cc i tng trong SelectionSet

inh Vn Trng

Mc ch chnh ca i tng SelectionSet l nhm cc i tng hnh hc li hiu chnh cc i tng trong mt cch d dng hn.Do vy truy cp n cc i tng trong nm trong SelectionSet ta s dng cu trc For Each.Next V d V d ny s yu cu ngi dng chn cc i tng trn mn hnh bn v, sau i mu cc i tng c chn thnh mu .

8.4. B lc cho i tng SelectionSet Trong qu trnh thao tc vi i tng SelectionSet, i khi ta mun gii hn vic chn i tng theo mt iu kin no nh ch chn cc i tng Line, Circle hoc n gin chn cc i tng thuc mt Layer no hoc i tng c mu no . thc hin iu ny cn xc nh Kiu b lc v i tng lc.Kiu b lc chnh l tham s FilterType v i tng lc chnh l FilterData. - FilterType : Kiu Integer, l mng 1 chiu cha m Dxf xc nh Kiu lc i tng. - FilterData : Kiu Variant, l mng mt chiu cha i tng lc. Ch : Quan h gia FilterType v FilterData l quan h 1:1 nn s phn t trong mng FilterType v FilterData phi bng nhau. Basic VBA for AutoCad Page 76

Designing Team-Engineering Department Danh sch cc m Dxf thng c s dng M Dxf ngha

inh Vn Trng

Kiu String Th hin loi i tng nh: Line, PolyLine, LWPolyline, Spline, Circle, Arc, Text, Mtext,Dimension Chui vn bn cha trong i tng Text, Mtext. Kiu String Th hin tn ca Block. Kiu String Th hin LineType ca cc i tng. Kiu String Tn TextStyle Kiu String Th hin tn ca Layer Ta chnh ca mt i tng nh: StartPoint ca Line, im chn ca Text, CenterPoint ca Circle Kiu Integer Xc nh mu ca i tng: 0=ByBlock, 1=Red, 2=Yellow.256=ByLayer. Kiu Integer Xc nh khng gian (0 = ModelSpace ; 1 = PaperSpace) Cc ton t iu kin (S dng khi kt hp nhiu iu kin lc).

1 2 6 7 8

10

62

67 -4

8.4.1. Lc theo mt iu kin Khi l c theo mt iu kin th hai tham s FilterType v FilterData l mng mt chiu 1 phn t.

Basic VBA for AutoCad

Page 77

Designing Team-Engineering Department

inh Vn Trng

V d on m sau s chn duy nht i tng Line trong bn v sau s i tt c cc Line c chn ny thnh mu .

8.4.2. Lc theo nhiu iu kin Khi cn lc i tng theo nhiu iu kin kt hp ta s dng Ton t iu kin vo trong b lc, lc ny cc iu kin lc s c t gia cc Ton t iu kin. Gi tr bt u AND <And Gi tr kt thc And> S lng iu kin loc >=1 i tng no tha mn tt c cc iu kin lc s c chn i tng no tha mn mt trong cc iu kin s c chn. i tng no tha mn mt iu kin v khng tha mn iu kin cn li s c chn. i tng no khng tha mn iu kin lc s c chn

Ton t

ngha

OR

<Or

Or>

>=1

XOR

<Xor

Xor>

NOT

<Not

Not>

Basic VBA for AutoCad

Page 78

Designing Team-Engineering Department V d

inh Vn Trng

on m sau sau s lc theo nhiu iu kin, nhng i tng no l ng thng hoc ng trn s c chn, sau s i mu chng thnh mu . Tm lc iu kin <Or (Line, Circle) Or> Triu khai dng code

V d on m sau s chn nhng i tng no l Text hoc Mtext nhng khng thuc Layer c tn DefPoints, sau i chng v Layer c tn Text_3

Tm tt iu kin <And(<Or(Text, Mtext)Or>),<Not(Defpoints)Not>)And>

Basic VBA for AutoCad

Page 79

Designing Team-Engineering Department Trin khai dng code

inh Vn Trng

8.5. Mt s phng thc khc ca i tng SelectionSet 8.5.1. Phng thc RemoveItems Phng thc ny s loi b mt hoc nhiu i tng ra kh i SelectionSet.Cc i tng ny s khng nm trong SelectionSet na NHNG vn tn ti trong bn v. C php SelectionSetObj. RemoveItems ArrayObj Gii thch Tham s Gii thch

Kiu acadSelectionSet Bin cha i tng SelectionSet c to SelectionSetObj ra ArrayObj Kiu Variant - mng cha cc i tng c thm vo SelectionSet Page 80

Basic VBA for AutoCad

Designing Team-Engineering Department V d

inh Vn Trng

on code sau s thc hin vic to i Circle v i tng Ellipse trong ModelSpace, sau s thm tt c cc i tng trong ModelSpace vo SelectionSetObj (K c 2 i tng Circle v Ellipse va mi to) tip theo s Remove 2 i tng Cirle v Ellipse ny ra kh i SelectionSet.

Basic VBA for AutoCad

Page 81

Designing Team-Engineering Department 8.5.2. Phng thc Clear

inh Vn Trng

Khi phng thc Clear c thc thi n s loi b tt c cc i tng ra khi SelectionSet NHNG bn thn i tng SelectionSet v cc i tng vn tn ti trong bn v. i tng SelectionSet lc ny tr thnh mt tp rng. C php SelectionSetObj. Clear 8.5.3. Phng thc Eraser Khi phng thc Eraser c thc thi n s loi b tt c cc i tng ra khi SelectionSet ng thi xa lun cc i tng ny kh i bn v NHNG i tng SelectionSet vn cn tn ti.i tng SelectionSet lc ny l mt tp rng. C php SelectionSetObj. Eraser 8.5.4. Phng thc Delete Khi phng thc Delete c thc thi n s xa i tng SelectionSet ra khi bn v NHNG cc i tng nm trong SelectionSet vn cn tn ti trong bn v. C php SelectionSetObj.Delete

Basic VBA for AutoCad

Page 82

Designing Team-Engineering Department Bi Tp ch : Lm vic vi i tng SelectionSet Bi 1:

inh Vn Trng

Khai bo v khi to i tng SelectionSetObj c tn PTSCMC,ng thi s dng b lc 1 iu kin chn tt c cc Block c tn do ngi dng nhp vo. Bi 2: Khai bo v khi to i tng SelectionSet c tn Design_Team, ng thi s dng b lc nhiu iu kin kt hp chn i tng Line c mu Xanh L v khng thuc Layer c tn Defpoints.Sau thc hin thao tc Delete tt c cc Line vung gc vi trc Ox. Bi 3: Thng thng cc kch thc nm ri rc cc Layer khc nhau.Hy vit chng trnh to ra mt i tng SelectionSet c tn Dimension v chuyn chng sang mt Layer mi.Chng trnh s hi ngi s dng tn Layer mi ny.

Basic VBA for AutoCad

Page 83

Designing Team-Engineering Department Chng 9 HIU CHNH CC I TNG HNH HC Ni dung chuyn : Tng quan v hiu chnh cc i tng hnh hc trong VBA Gii thiu v phng thc Copy Gii thiu v phng thc Delete Gii thiu v phng thc Move Gii thiu v phng thc Mirror Gii thiu v phng thc Offset Gii thiu v phng thc Rotate Gii thiu v phng thc Phng thc ScaleEntity Gii thiu v thuc tnh Color Gii thiu v thuc tnh Layer Gii thiu v thuc tnh LineType Gii thiu v thuc tnh LineWeight

inh Vn Trng

Basic VBA for AutoCad

Page 84

Designing Team-Engineering Department 9.1. Tng quan v vic hiu chnh cc i tng hnh hc bng VBA

inh Vn Trng

Trong VBA vic hiu chnh cc i tng hnh hc c th thc hin thng qua cc phng thc hoc thuc tnh ca i tng Phng thc dng thay i v hnh dng, kch thc v tr ca i tngThng thng mi phng thc u c cc tham s ring. Thuc tnh thng dng thay i tnh cht lin quan n s hin th i tng trn mn hnh hoc khi in nh mu sc, kiu ng.. Khi hiu chnh i tng bng VBA c th nhng hiu chnh s cha c cp nht ngay trn mn hnh bn v.Do cp nht nhng thay i trong bn v ta dng phng thc Update c trong i tng hoc trong i tng Application 9.2. Sao chp i tng Phng thc Copy Vi phng thc ny i tng mi to ra s ging ht i tng gc v c v tr trng vi i tng gc, tuy nhin i tng mi s nm bn trn i tng gc C php Set CopyObj = OriginalObj.Copy Gii thch Tham s OriginalObj CopyObj V d Trong v d ny s to mt ng trn bn ModelSpace, sau s copy i tng ny (Ch ng trn c copy sau s nm chng ln ng trn c) Gii thch i tng hnh hc i tng gc s c sao chp i tng hnh hc, c kiu ging vi kiu ca i tng gc

Basic VBA for AutoCad

Page 85

Designing Team-Engineering Department

inh Vn Trng

9.3. Xa i tng Phng thc Delete C php OriginalObj.Delete V d V d ny s yu cu ngi dng chn i tng cn xa i trn mn hnh bn v

9.4. Di chuyn i tng Phng thc Move C php OriginalObj.Move Point_1, Point_2

Basic VBA for AutoCad

Page 86

Designing Team-Engineering Department Gii thch Tham s OriginalObj Gii thch i tng hnh hc L i tng s b di chuyn

inh Vn Trng

u Variant hoc Double L mng 3 phn t cha ta im th Point_1, Point_2 nht v im th hai.Hai im ny s xc nh vector chuyn v (Vector xc nh khong cch v hng di chuyn i tng) V d V d ny s to ra mt ng trn v di chuyn vng trn ny dc theo trc X mt khong 2 n v.

V d V d ny s yu cu ngi dng chn i tng trn mn hnh bn v, sau thc hin phng thc Move vi cc i tng ny.

Basic VBA for AutoCad

Page 87

Designing Team-Engineering Department

inh Vn Trng

9.5. Ly i xng Phng thc Mirror C php Set MirrorObj = OriginalObj.Mirror (Point_1, Point_2) Gii thch Tham s Gii thch Bin cha i tng tr v ca phng thc Mirror c kiu gi ng vi kiu ca i tng gc i tng gc c ly i xng Kiu Variant hoc Double Mng 3 phn t cha ta ca im th nht v th 2 to nn trc i xng

MirrorObj

OriginalObj Point_1, Point_2

Basic VBA for AutoCad

Page 88

Designing Team-Engineering Department V d

inh Vn Trng

Trong v d ny yu cu ngi dng chn cc i tng trn mn hnh ly i xng.Ch bin h thng MIRRTEXT, bin ny c hai gi tr l 0 v 1 v ch c tc dng vi i tng vn bn (Hy th thy s khc bit !)

9.6. Phng thc OffSet Cng dng Phng thc Offset s to ra mt i tng mi c ng bin cch ng bin ca i tng gc mt khong nh trc.Phng thc ny ch p dng cho cc i tng nh Arc, Circle, Ellipse, Line, LightweightPolyline, Polyline, Spline, v Xline.Phng thc ny s tr v mt mng cha i tng va mi to NHNG thng thng ch cha mt i tng. C php varArrayObj = OriginalObj.Offset (OffsetDistance)

Basic VBA for AutoCad

Page 89

Designing Team-Engineering Department Gii thch Tham s varArrayObj OriginalObj Gii thch

inh Vn Trng

Kiu Variant Mng cha i tng mi c to thnh i tng gc c ly OffSet Kiu Double Khong cch Offset, c th m hoc dng. Nu l s m, phng thc ny s to ra i tng c bn knh nh

OffsetDistance

hn i tng gc, khi bn knh nh hn khng c ngha (i vi i tng Line, Xline ) th phng thc ny s to ra i tng c to X, Y v Z nh hn i tng gc.

V d

9.7. Xoay i tng Phng thc Rotate Cng dng Phng thc ny dng xoay mt i tng quanh mt im c nh vi mt gc quay nh trc C php Object.Rotate BasePoint, RotationAngle

Basic VBA for AutoCad

Page 90

Designing Team-Engineering Department Gii thch Tham s Object BasePoint RotationAngle V d i tng s c xoay Gii thch

inh Vn Trng

Kiu Variant hoc Double Mng 3 phn t cha ta im xoay Kiu Double Gc quay i tng ( n v : Radian)

Trong v d ny s yu cu ngi dng chn mt i tng trn mn hnh xoay, gc nhp vo di dng n v Degree s c chuyn sang n v Radian

Basic VBA for AutoCad

Page 91

Designing Team-Engineering Department 9.8. Thay i t l i tng Phng thc ScaleEntity Cng dng

inh Vn Trng

Phng thc ny dng thay i t l i tng ging nhau theo cc phng X, Y, Z quanh mt im. C php Object.ScaleEntity BasePoint, ScaleFactor Gii thch Tham s Object BasePoint Gii thch i tng s c Scale Kiu Variant hoc Double Mng 3 phn t cha ta im Scale, i tng s c Scale quanh im ny Kiu Double Xc inh h s Scale.Tham s ny phi ln hn 0 nu khng chng trnh s bo l i. ScaleFactor V d Nu ScaleFactor > 1 : i tng c phng to ln Nu ScaleFactor < 1 : i tng b thu nh li

Basic VBA for AutoCad

Page 92

Designing Team-Engineering Department 9.9. Thay i mu i tng Thuc tnh Color Cng dng Thuc tnh Color dng LY hoc GN mu cho mt i tng. C php Object.Color = ColorName/ColorIndex Gii thch Tham s Object Gii thch i tng hnh hc c thay i mu

inh Vn Trng

ColorName/ColorIndex Tn mu hoc ch s ca mu cn gn cho Layer Ch s mu l cc s nguyn nm trong khong t n 256.Trong AutoCad c 9 mu c nh ngha bng hng s mu acColor.Chng ta c th dng ch s mu hoc hng s mu u c. Bng tng ng gia hng s mu v ch s mu Hng s mu acByBlock acRed acYellow acGreen acCyan acBlue acMagenta acWhite acByLayer Basic VBA for AutoCad Ch s mu 0 1 2 3 4 5 6 7 256 ngha ByBlock Red Yellow Green Cyan Blue Magenta White or Black ph thuc vo mu nn ByLayer Page 93

Designing Team-Engineering Department V d

inh Vn Trng

Trong v d ny s yu cu ngi dng chn cc i tng trn mn hnh bn v, sau s i mu cc i tng ny thnh mu .

V d Trong v d ny s to cc ng trn vi cc bn knh khc nhau ng thi cc ng trn s c gn mu t 0 n 256

Basic VBA for AutoCad

Page 94

Designing Team-Engineering Department 9.10. Thay i Layer cho i tng Thuc tnh Layer Cng dng S dng thuc tnh Layer LY hoc GN Layer cho mt i tng C php Object.Layer = strLayerName Gii thch Tham s Object strLayerName V d 11 Gii thch i tng hnh hc s uc gn Layer u String Tn Layer gn cho i tng

inh Vn Trng

Basic VBA for AutoCad

Page 95

Designing Team-Engineering Department 9.11. Thay i kiu ng cho i tng Thuc tnh LineType Cng dng

inh Vn Trng

Thuc tnh ny c s dng thay i kiu hin th NT V ca cc i tng hnh hc trn mn hnh C php Object.Linetype = strLineTypeName Gii thch Tham s Object Gii thch i tng hnh hc s c thay i LineType

strLineTypeName Kiu String Tn kiu ng cn gn cho i tng Ch Khi mt bn v mi c to th ch c 3 kiu ng l ByBlock, ByLayer, Continuous l mc nh c sn.Do , ngoi 3 kiu ng ny s dng mt kiu ng no ta cn NP kiu ng vo trong bn v v kiu ng phi tn ti trong file Acad.lin. ti mt kiu ng vo trong bn v chng ta s dng phng thc Load c trong tp i tng LineTypes. C php: Thisdrawing.LineTypes.Load LineTypeName,acad.lin Gii thch : Tham s strLineTypeName Gii thch Kiu String - Tn kiu ng cn gn cho Layer.

Basic VBA for AutoCad

Page 96

Designing Team-Engineering Department Mt s kiu ng thng dng STT 01 02 03 04 05 06 07 08 09 V d LineTypeName Continuous Center Center2 DashDot Dashdot2 Hidden Hidden2 Phantom PhanTom2

inh Vn Trng

Trong v d ny s yu cu ngi dng chn i tng trn mn hnh , sau i kiu ng ca cc i tng thnh Phantom

Basic VBA for AutoCad

Page 97

Designing Team-Engineering Department 9.12. Thay i b rng nt v ca i tng Thuc tnh LineWeight Cng dng

inh Vn Trng

Thuc tnh ny dng thay i b rng nt khi in ca cc i tng hnh hc C php Object.Lineweight = acLineweight Gii thch Tham s Object acLineWeight Gii thch i tng hnh hc c gn thuc tnh LineWeight Hng s th hin b rng ca nt (Xem bng hng s acLineWeight)

Bng gi tr hng s acLineWeight acLineWeight acLnWtByLayer acLnWtByBlock acLnWtByLwDefault acLnWt000 acLnWt005 acLnWt009 acLnWt013 acLnWt015 acLnWt018 acLnWt020 acLnWt025 acLnWt030 acLnWt035 acLnWt040 Gi tr (mm) ByLayer ByBlock Mc nh 0.00 0.05 0.09 0.13 0.15 0.18 0.20 0.25 0.30 0.35 0.40 acLineWeight acLnWt050 acLnWt053 acLnWt060 acLnWt070 acLnWt080 acLnWt090 acLnWt100 acLnWt106 acLnWt120 acLnWt140 acLnWt158 acLnWt200 acLnWt211 Gi tr(mm) 0.50 0.53 0.60 0.70 0.80 0.90 1.00 1.06 1.20 1.40 1.58 2.00 2.11

Basic VBA for AutoCad

Page 98

Designing Team-Engineering Department Ch Khi mt i tng hnh hc mi c to ra th thuc tnh Lineweight s l

inh Vn Trng

acLnWtByLayer.Nu khng c gn mt gi tr nt in c th th gi tr Lineweight s c ly bng chiu dy mc nh (acLnWtDefault) ca Autocad.Gi tr acLnWtDefault c thit lp thng qua bin h thng LWDEFAULT (Thng thng gi tr ny l 0,25mm) V d Trong v d ny s to ra mt ng trn, sau s gn LineWeight cho n.

Basic VBA for AutoCad

Page 99

Designing Team-Engineering Department Chng 10 LM VIC VI I TNG LAYER

inh Vn Trng

Ni dung chuyn : Duyt qua tp i tng Layer Khai bo v khi to mt Layer mi Phng thc Add i tn Layer Thuc tnh Name Thit lp mt Layer hin hnh Gn mu cho mt Layer Thuc tnh Color Gn kiu ng cho Layer Thuc tnh LineType Gn b rng nt cho Layer Thuc tnh LineWeight

Basic VBA for AutoCad

Page 100

Designing Team-Engineering Department 10.1. Duyt qua tp i tng Layers

inh Vn Trng

Mi Layer u nm trong tp i tng Layers.V th ta c th duyt tp i tng Layers tm cc Layer c trong bn v. Chng ta s dng cu trc For EachNext duyt qua tt c cc Layer c trong bn v. V d V d sau s duyt qua tp i tng Layers v hin tn tt c cc Layer c trong bn v.

10.2. Khai bo v khi to mt Layer mi Phng thc Add Quy nh tn Layer Tn Layer ti a l 31 k t bao gm cc ch ci, s, cc k t c bit NHNG khng c du cch, nn t tn Layer sao cho ngha v d nh. Trong mi bn v th Layer 0 l Layer mc nh v ngi dng khng th xa Layer ny. to mt Layer mi ta s dng phng thc Add c trong tp i tng Layers C php Set LayerObj = Thisdrawing.Layers.Add (LayerName) Gii thch Tham s LayerObj LayerName Gii thch Kiu AcadLayer y l bin s cha Layer c to ra. Kiu String Tn ca Layer c to

Basic VBA for AutoCad

Page 101

Designing Team-Engineering Department V d

inh Vn Trng

V d ny s khai bo v khi to mt Layer c tn do ngi dng nhp vo.Nu Layer ny tn ti th s t ng thot khi th tc.

10.3. i tn ca Layer Thuc tnh Name V d

Basic VBA for AutoCad

Page 102

Designing Team-Engineering Department 10.4. Thit lp mt Layer hin hnh

inh Vn Trng

Qu trnh v lun thc hin trn lp hin hnh.Tt c cc i tng to mi u c t trn Layer hin hnh ny v n s s dng kiu mu, kiu ng,b rng ng nt ca Layer hin hnh . Ch : Khng th thit lp ch hin hnh cho mt lp b ng bng (Freeze) thit lp ch hin hnh cho mt Layer ta s dng thuc tnh ActiveLayer ca i tng Thisdrawing. C php Thisdrawing.ActiveLayer = LayerObj V d V d sau s to mt Layer c tn Layer_1, sau s thit lp Layer ny thnh hin hnh.

10.5. Gn mu cho mt Layer Thuc tnh Color d dng qun l cc i tng trong bn v ngi dng nn thit lp mu cho cc Layer. gn mu cho mt Layer ta s dng thuc tnh Color c trong i tng LayerObj. C php LayerObj.Color = ColorName/ColorIndex

Basic VBA for AutoCad

Page 103

Designing Team-Engineering Department Gii thch Tham s LayerObj ColorName/ColorIndex Gii thch i tng Layer mun gn mu

inh Vn Trng

Tn mu hoc ch s ca mu cn gn cho Layer

Ch s mu l cc s nguyn nm trong khong t n 256.Trong AutoCad c 9 mu c nh ngha bng hng s mu acColor.Chng ta c th dng ch s mu hoc hng s mu u c.

Bng tng ng gia Hng s mu v ch s mu Hng s mu acByBlock acRed acYellow acGreen acCyan acBlue acMagenta acWhite acBylayer Ch s mu 0 1 2 3 4 5 6 7 256 ngha ByBlock Red Yellow Green Cyan Blue Magenta White hay Black ph thuc vo mu nn Bylayer

Basic VBA for AutoCad

Page 104

Designing Team-Engineering Department V d

inh Vn Trng

V d sau s to mt Layer c tn ChangeColor, sau s gn mu vng cho Layer ny v thit lp Layer ny thnh Layer hin hnh.

10.6. Gn kiu ng cho mt Layer Thuc tnh LineType Kiu ng l s lp li ca mu nt t, im, khong trng mc ch l th hin thng tin mt cch trc quan.Tt c kiu ng trong Autocad c t trong mt file c tn Acad.lin. gn kiu ng cho mt Layer th ta s dng thuc tnh LineType c trong i tng LayerObj. C php LayerObj.LineType = LineTypeName Gii thch Tham s LayerObj LineTypeName Gii thch i tng Layer mun gn kiu ng Kiu String - Tn kiu ng cn gn cho Layer.

Basic VBA for AutoCad

Page 105

Designing Team-Engineering Department STT 01 02 03 04 05 06 07 08 09 Ch Tn kiu ng thng dng Continuous Center Center2 DashDot Dashdot2 Hidden Hidden2 Phantom PhanTom2

inh Vn Trng

Khi mt bn v mi c to th ch c 3 kiu ng l ByBlock, ByLayer, Continuous l mc nh c sn.Do , ngoi 3 kiu ng ny s dng mt kiu ng no ta cn NP kiu ng vo trong bn v v kiu ng phi tn ti trong file Acad.lin. ti mt kiu ng vo trong bn v chng ta s dng phng thc Load c trong tp i tng LineTypes. C php Thisdrawing.LineTypes.Load LineTypeName,acad.lin Gii thch Tham s Gii thch

LineTypeName Kiu String - Tn kiu ng cn gn cho Layer.

Basic VBA for AutoCad

Page 106

Designing Team-Engineering Department V d

inh Vn Trng

V d ny s to mt Layer c tn SetLineType, sau s Load kiu ng Phantom trong tp Acad.lin v gn cho Layer ny.Layer ny s c dng lm hin hnh.

10.7. Gn LineWeight cho mt Layer Thuc tnh LineWeight Chng ta thng In theo mu ngha l b rng ca nt in s c thit lp trong bng Plot Style Table, lc ny chng ta khng quan tm n b rng c thit lp cho cc Layer. Khi In theo Layer chng ta mi quan tm n vic thit lp b rng nt cho cc Layer.Ty thuc vo cch th hin ca mi ngi m b rng nt ca m i Layer s c thit lp khc nhau. thay i b rng nt ca mt Layer ta s dng thuc tnh Lineweight c trong i tng LayerObj. C php LayerObj.Lineweight = acLineweight

Basic VBA for AutoCad

Page 107

Designing Team-Engineering Department Bng hng s acLineweight acLineWeight acLnWtByLayer acLnWtByBlock acLnWtByLwDefault acLnWt000 acLnWt005 acLnWt009 acLnWt013 acLnWt015 acLnWt018 acLnWt020 acLnWt025 acLnWt030 acLnWt035 acLnWt040 Ch Khi mt i tng hnh hc mi c to ra th thuc tnh Lineweight s l Gi tr (mm) ByLayer ByBlock Mc nh 0.00 0.05 0.09 0.13 0.15 0.18 0.20 0.25 0.30 0.35 0.40 acLineWeight acLnWt050 acLnWt053 acLnWt060 acLnWt070 acLnWt080 acLnWt090 acLnWt100 acLnWt106 acLnWt120 acLnWt140 acLnWt158 acLnWt200 acLnWt211

inh Vn Trng

Gi tr(mm) 0.50 0.53 0.60 0.70 0.80 0.90 1.00 1.06 1.20 1.40 1.58 2.00 2.11

acLnWtByLayer.Nu khng c gn mt gi tr nt in c th th gi tr Lineweight s c ly bng chiu dy mc nh (acLnWtDefault) ca Autocad.Gi tr acLnWtDefault c thit lp thng qua bin h thng LWDEFAULT.Thng thng gi tr ny l 0,25mm.

Basic VBA for AutoCad

Page 108

Designing Team-Engineering Department V d

inh Vn Trng

V d ny s thit lp mt Layer c tn SetLineWeight, sau Layer ny s c gn mu , kiu ng l Center, chiu dy ng nt l 0,15mm.

10.8. Mt s thuc tnh khc ca i tng Layer 10.8.1. Bt, Tt Layer Thuc tnh LayOn Cc i tng nm trn Layer tt s khng c hin th hay in ra. bt hoc tt s hin th ca Layer ta s dng thuc tnh LayOn c trong i tng LayerObj.ng vi gi tr True Layer c Bt, gi tr False Layer b Tt. C php LayerObj.LayOn = True/False V d Trong v d ny s to ra mt Layer c tn Test_Layon ng thi s tt Layer ny.

Basic VBA for AutoCad

Page 109

Designing Team-Engineering Department 10.8.2. ng cng, Lm tan Layer Thuc tnh Freeze, UnFreeze

inh Vn Trng

Cc i tng nm trn Layer b ng bng (Freeze) s khng c hin th hay in ra. ng cng (Freeze) hay lm tan (UnFreeze) mt Layer chng ta s dng thuc tnh Freeze trong i tng LayerObj. Gi tr True Layer b ng Bng, gi tr False Layer c Lm Tan C php LayerObj.Freeze = True/False V d

10.8.3. Kha, M Kha Layer Thuc tnh Lock, UnLock Khi mt Layer b kha (Lock) th ngi dng vn c th quan st c cc i tng trn lp nhng khng th hiu chnh c chng. kha (Lock) hay m kha (UnLock) cc Layer ta s dng thuc tnh Lock c trong i tng LayerObj. Gi tr True Layer b Kha, gi tr False Layer c M Kha. C php LayerObj.Lock = True/False

Basic VBA for AutoCad

Page 110

Designing Team-Engineering Department V d

inh Vn Trng

Trong v d ny s to ra mt Layer c tn Test_Lock ng thi kha Layer ny.

10.8.4. Xa Layer Thuc tnh Delete Layer c th c xa bt k lc no trong khi v nhng khng th xa cc Layer khi n ang hin hnh, ang cha i tng hoc l Layer 0, DefPoints. xa Layer ta s dng thuc tnh Delete trong i tng LayerObj. C Php LayerObj.Delete V d V d ny s Delete mt Layer c tn do ngui dng nhp vo

Basic VBA for AutoCad

Page 111

Designing Team-Engineering Department Chng 11 LM VIC VI I TNG BLOCK Ni dung chng Cch khai bo v khi to mt Block Cch chn mt Block c sn vo trong bn v i tn mt Block Xa mt Block c trong bn v Ph v mt Block Lm vic vi Block c cha cc thuc tnh Lm vic vi bn v tham kho ngoi

inh Vn Trng

Block l mt i tng c to t nhiu i tng c bn trong bn v nhng n c coi nh mt i tng n.Chng ta c th chn Block trong cng mt bn v hoc cc bn v khc nhau.

Basic VBA for AutoCad

Page 112

Designing Team-Engineering Department 11.1. Duyt qua tp i tng Block

inh Vn Trng

Chng ta s dng cu trc lp For Each..Next duyt qua tt c cc Block c trong tp i tng Block. V d V d ny s duyt qua tt c cc Block c trong bn v v hin tn ca cc Block

11.2. Khai bo v khi to mt Block khi to mt Block trong VBA chng ta s dng phng thc Add c trong tp i tng Blocks.Mt Block sau khi c to ra c th c chn ModelSpace hoc PaperSpace C php Set BlockObj = Thisdrawing.Blocks.Add (InsertPoint, BlockName) Gii thch Tham s BlockObj Gii thch Kiu acadBlock Bin cha i tng Block c to Kiu Variant hoc mng 3 phn t kiu Double l tm chn ca Block. Kiu String Tn ca Block c to (Ch tn ca Block khng uc di qu 31 k t v gia chng khng c khong trng)

InsertPoint

BlockName

Basic VBA for AutoCad

Page 113

Designing Team-Engineering Department V d

inh Vn Trng

V d ny s khai bo v to mt Block c tn Section, ng thi to mt ng trn v ng thng sau thm ng trn v ng thng ny vo trong Block .

11.3. i tn Block Thuc tnh NAME i tn mt Block chng ta s dng thuc tnh Name ca Block i sang tn mi. C php BlockObj.Name = NewName Gii thch Tham s BlockObj NewName Gii thch Kiu acadBlock i tng Block cn i tn Kiu String Tn mi ca Block

Basic VBA for AutoCad

Page 114

Designing Team-Engineering Department V d

inh Vn Trng

V d ny s yu cu ngi dng nhp vo tn Block cn i v tn mi ca Block.Sau s s dng thuc tnh Name Rename Block ny.

11.4. Xa mt Block Thuc tinh Delete xa mt Block chng ta s dng thuc tnh Delete ca Block C php BlockObj.Delete

Basic VBA for AutoCad

Page 115

Designing Team-Engineering Department V d V d ny s Delete mt Block c tn do ngi dng nhp vo.

inh Vn Trng

Ch Nu mt Block to theo phng thc Add c gi l Block Definition v Block nu c Insert vo trong bn v th tr thnh Block Reference. Cc Block Reference u tham kho d liu n Block Definition do trong v d trn khi khai bo Dim ObjBlock as acadBlock th i tng ObjBlock s l Block Definition.Chng ta khng th Delete mt Block Definition khi trong bn v vn cn tn ti Block Reference (Cng ging nh khng th Delete mt Layer khi n vn cn c dng bi mt i tng khc).Mt khc, khi Delete mt Block Reference nu chng ta khng s dng lnh Purge th hin nhin i tng Block Definition vn cn tn ti trong bn v. V d v d ny s yu cu ngi dng nhp vo mt tn Block Reference sau s dng b lc lc ra cc Block c tn do ngi dng nhp vo, tip s Delete cc Block ny kh i bn v.

Basic VBA for AutoCad

Page 116

Designing Team-Engineering Department

inh Vn Trng

11.5. Chn Block vo trong bn v - Phng thc InsertBlock Chng ta s dng phng thc InsertBlock chn mt Block Definition vo trong ModelSpace, PaperSpace hoc vo mt Block khc, tuy nhin khng th chn vo chnh bn thn n c. i tng tr v ca phng thc InsertBlock l mt Block Reference. C php Set BlockReferenceObj = Thisdrawing.SPACE.InsertBlock (InsertPoint, _ BlockName, Xscale, Yscale, Zscale, RotationAngle)

Basic VBA for AutoCad

Page 117

Designing Team-Engineering Department Gii thch Tham s Gii thch

inh Vn Trng

BlockReferenceObj

Kiu acadBlockReference i tng tr v ca phng thc InsertBlock Khng gian cha i tng BlockReference (ModelSpace, PaperSpace hoc Block) Kiu Variant hoc mng 3 phn t kiu Double cha ta im chn BlockReference Kiu String Tn Block cn chn hoc tn y bao gm ng dn cha bn v c chn. Kiu Double H s Scale theo phng X Kiu Double H s Scale theo phng Y Kiu Double H s Scale theo phng Z Kiu Double Gc xoay khi chn BlockReference (n v: Radian)

SPACE

InsertPoint

BlockName

Xscale Yscale Zscale

RotationAngle

V d V d ny s to mt Block Definition c tn Ex_6 cha i tng Circle.Sau s chn Block Definition ny vo ModelSpace, im chn do ngi dng nhp vo.

Basic VBA for AutoCad

Page 118

Designing Team-Engineering Department

inh Vn Trng

V d Trong v d ny s yu cu ngi dng nhp ng dn cha bn v cn chn vo (bao gm c phn m rng .dwg).ng thi cc thng s nh InsertPoint,Xscal, Yscale, Zscale, RotationAngle cng do ngi dng nhp vo.

Basic VBA for AutoCad

Page 119

Designing Team-Engineering Department

inh Vn Trng

11.6. Ph v mt Block Phng thc Explode Vi i tng Block Reference chng ta s dng phng thc Explode ph v chng.i tng tr v ca phng thc ny l m t mng (kiu Variant) cha cc i tng cu thnh nn n. C php VarArray = BlockReferenceObj. Explode

Basic VBA for AutoCad

Page 120

Designing Team-Engineering Department Gii thch Tham s Gii thch Kiu Variant Mng cha cc i tng ca BlockReferenceObj b ph v.

inh Vn Trng

VarArray

BlockReferenceObj Ch

Kiu acadBlockReference i tng Block s b ph v

Phng thc Explode thc cht to ra mt bn sao ca i tng gc, sau thc hin vic ph v Block trn i tng ny.i tng gc vn cn gi nguyn.Nu khng mun gi i tng ny chng ta c th xa n ra khi bn v bng phng thc Delete. V d V d ny s yu cu ngi dng chn mt Block trn mn hnh bn v v mt im di chuyn kt qu ca phng thc Explode.

Basic VBA for AutoCad

Page 121

Designing Team-Engineering Department 11.7. Block cha thuc tnh Attributes

inh Vn Trng

Thuc tnh ca Block l cc chui Text i km vi n miu t Block.Mi thuc tnh gm c Tag - Tn gi ca thuc tnh , Value Gi tr ca thuc tnh, Prompt Dng thng bo khi ngi dng nhp gi tr cho thuc tnh.Mt Block c th c nhiu thuc tnh. 11.7.1. To thuc tnh cho Block Phng thc AddAttribute C php Set AttributeObject = SPACE.AddAttribute (Height, Mode, Prompt, _ InsertionPoint, Tag, Value) Gii thch Tham s Gii thch

AttributeObject Kiu acadAttribute i tng thuc tnh Ni cha i tng thuc tnh (ModelSpace, PaperSpace hoc Block) Kiu Double Chiu cao ch ca thuc tnh Kiu Long - Thng s iu khin thuc tnh khi c chn vo trong bn v. Kiu String Chu i thng bo khi Block Attribute c chn vo bn v. Kiu Variant hoc Double Mng 3 phn t cha ta ca thuc tnh khi c chn vo bn v hay Block. Kiu String Tn ca thuc tnh, c th cha bt k k t no nhng khng cha khong trng. Kiu String Gi tr mc nh cho thuc tnh

SPACE

Height

Mode

Prompt

InsertionPoint

Tag

Value

Basic VBA for AutoCad

Page 122

Designing Team-Engineering Department Gi tr ca tham s Mode Tham s Gi tr Gii thch

inh Vn Trng

acAttributeModeNormal

Gi tr mc nh, vi gi tr ny khng mt gi tr no cn li ca tham s Mode c gn. Gi tr thuc tnh s khng c hin ln khi Block c chn vo. Gi tr ca thuc tnh s khng th Edit khi c chn vo bn v Khi Block c chn vo th gi tr ca thuc tnh c nhp ti dng nhc. Block c chn vo vi gi tr mc nh ca

acAttributeModeInvisible

acAttributeModeConstant

acAttributeModeVerify

acAttributeModePreset

thuc tnh, ngi dng ch c th Edit c gi tr sau khi Block c chn vo bn v.

V d V d ny s to mt Block Attribute, trong cc thuc tnh m t cc gi tr ca tham s Mode.

Basic VBA for AutoCad

Page 123

Designing Team-Engineering Department

inh Vn Trng

Basic VBA for AutoCad

Page 124

Designing Team-Engineering Department

inh Vn Trng

11.7.2. Thao tc vi thuc tnh Phng thc GetAttributes Phng thc GetAttributes ca mt Block Reference c dng ly cc gi tr thuc tnh c trong mt Block Reference.i tng tr v ca phng thc ny l mt mng cha cc thuc tnh ca Block (Ring vi tham s Mode khc acAttributeModeConstant th gi tr thuc tnh khng ly uc). xc nh xem mt Block Reference c cha thuc tnh hay khng chng ta s dng thuc tnh HasAttributes c trong i tng Block Reference.Nu kt qu l TRUE th Block c thuc tnh, nu l FALSE th Block khng cha thuc tnh. C php VarAttributes = BlockReferenceObj.GetAttributes Gii thch Tham s Gii thch Kiu Variant Mng cha cc thuc tnh ca Block Reference i tng Block Reference

VarAttributes

BlockReferenceObj

Basic VBA for AutoCad

Page 125

Designing Team-Engineering Department V d

inh Vn Trng

V d ny s yu cu ngi dng chn mt i tng trn mn hnh bn v, kim tra xem c phi l Block thuc tnh hay khng nu ng s hin th tn v gi tr ca cc thuc tnh cho ngi dng.

V d Trong v d ny s thay i cc gi tr ca thuc tnh trong Block Reference c tn TestAttribute (S dng v d trong phng thc AddAttribute to Block ny)

Basic VBA for AutoCad

Page 126

Designing Team-Engineering Department

inh Vn Trng

11.8. Lm vic vi bn v tham kho ngoi External References Bn v tham kho ngoi c rt nhiu ng dng c bit khi lm vic theo nhm. 11.8.1. Gn mt tham chiu ngoi vo bn v Phng thc AddExternalReference C php Set ExternalReferenceObject = Thisdrawing.SPACE.AttachExternalReference _ (FileName, BlockName, InsertionPoint, Xscale, Yscale, Zscale, _ RotationAngle, Overlay)

Basic VBA for AutoCad

Page 127

Designing Team-Engineering Department Gii thch Tham s ExternalReferenceObject Gii thch

inh Vn Trng

Kiu AcadExternalReference Bin cha i tng tr v ca phng thc AttachExternalReference ModelSpace hoc PaperSpace Kiu String ng dn ti bn v tham kho ngoi (bao gm c phn m rng dwg) Kiu String Tn t cho bn v tham kho ngoi khi c chn vo trong bn v Kiu Variant Mng 3 phn t kiu Double cha ta im chn ca bn v tham kho ngoi Kiu Double H s Scale theo phng X Kiu Double H s Scale theo phng Y Kiu Double H s Scale theo phng Z Kiu Double Gc quay ca bn v tham kho ngoi khi chn vo bn v (n v : Radians) Kiu Boolean iu khin bn v tham kho ngoi khi c gn vo bn v. TRUE : Bn v tham kho ngoi s khng c hin th khi bn v c gn tham kho ny tr thnh bn v tham

SPACE

FileName

BlockName

InsertionPoint

Xscale Yscale Zscale

RotationAngle

Overlay

kho ca bn v khc. FALSE : Bn v tham kho ngoi s c hin th khi bn v c gn tham kho ny tr thnh bn v tham kho ca bn v khc.

Basic VBA for AutoCad

Page 128

Designing Team-Engineering Department V d

inh Vn Trng

V d

Basic VBA for AutoCad

Page 129

Designing Team-Engineering Department 11.8.2. G b tham chiu ngoi ra khi bn v - Phng thc Detach

inh Vn Trng

Chng ta c th g b tham chiu ngoi bng phng thc Detach.Khi g b tham chiu ngoi tt c cc i tng rng buc vi tham chiu ngoi nh LineTypes, TextStyles, DimStyles, Layers cng s b g b. V d

11.8.3. Ti li tham chiu ngoi Phng thc Reload Nu bn v tham chiu ngoi c s thay i v vic cp nht li nhng thay i trong bn v c gn tham kho l mt s cn thit. cp nht li nhng thay i ny chng ta s dng phng thc Reload. Nu bn v tham kho ngoi b loi b (Bng phng thc UnLoad) th c th c ti li bt k lc no bng phng thc Reload.

Basic VBA for AutoCad

Page 130

Designing Team-Engineering Department V d

inh Vn Trng

11.8.4. Loi b tham chiu ngoi ra khi bn v - Phng thc Unload S dng phng thc Unload loi b mt tham kho ngoi ra kh i bn v.Khi loi b mt tham chiu ngoi th tc lm vic ca AutoCad s c tng cng do khng phi c v hin th cc thng tin hnh hc hay cc k hiu khng cn thit.Cc i tng hnh hc v cc thng tin lin quan n tham kho ngoi s khng c th hin trn bn v hin ti cho n khi tham kho ngoi c ti li. Ch : Cn phn bit s khc nhau gia phng thc Detach v Unload Phng thc Unload : Ch loi b tm thi tham chiu ngoi ra kh i bn v v chng ta c th ti li tham chiu ngoi ny bt c khi no bng phng thc Reload. Phng thc Detach : S loi b tham hon ton tham chiu ngoi ra kh i bn v v ch c th s dng phng thc AddExternalReference gn li tham chiu ngoi.

Basic VBA for AutoCad

Page 131

Designing Team-Engineering Department 11.8.5. Rng buc tham chiu ngoi Phng thc Bind

inh Vn Trng

Khi s dng phng thc Bind s chuyn tham chiu ngoi tr thnh mt Block Refrerence ca bn v.Lc ny bn v c gn tham kho s khng c cp nht nu bn v tham chiu b thay i.Qu trnh ny s lin kt ton b c s d liu trong bn v tham kho (bao gm c bng k hiu) vi bn v hin hnh.Bng k hiu l cc i tng phi hnh hc, v d nh kh i, kiu kch thc, lp, kiu ch... Phng thc Bind ch c mt tham s l PrefixName. Nu tham s ny c gn gi tr TRUE th tn trong bng k hiu ca bn v tham chiu ngoi s c thm tin t<tn khi>$x$ trong bn v hin ti, trong x : l snguyn bt k c t ng tng trnh ghi ln nh ngha khi c. Nu tham s ny nhn gi tr FALSE th tn trong bng k hiu s c ghp chung vo bn v hin ti m khng c tin t. Nu c cc tn trng nhau th AutoCAD s sdng k hiu va c nh ngha trong bn v. V d

Basic VBA for AutoCad

Page 132

Designing Team-Engineering Department TI LIU THAM KHO 1. Pht trin AutoCad bng ActiveX & VBA L Qunh Mai (ch bin)

inh Vn Trng

2. C s lp trnh t ng ha tnh ton, thit k vi VB & VBA trong mi trng AutoCad Nguyn Hng Thi (ch bin) 3. Gio trnh t ng ha thit k Cu ng 4. AutoCad 2006 VBA A Programers Reference Joe SutPhin

Basic VBA for AutoCad

Page 133

You might also like