baigiangvbaforautocad bai 3

Upload: road2it

Post on 03-Mar-2016

216 views

Category:

Documents


0 download

DESCRIPTION

Bài giảng VBA for AutoCAD

TRANSCRIPT

  • LP TRNH VBA TRONG AUTOCAD

  • Thot khi chng trnh AutoCAD ng bn v Lu bn v To bn v mi M bn v c McBn vCc thao tc c bn caAutoCad

  • M bn v c object.Open Name[, ReadOnly]

    s dng phng thc Open c trong tp i tng Documents

    Object y l tp i tng Documents hoc mt i tngc kiu l Document. ngha ca cc tham s nh sau:

    Tham sGii thchNameL chui k t cha ng dn y n tp bn v cn m.ReadOnlyL tham s tu chn. Nu gn tham s ny bng TRUE, bn v c m ra vithuc tnh ch c, ngha l ngi dng khng th lu bn v. Gi tr mc nh ca thuc tnh ny l FALSE. C phpGhi ch

  • M bn v c Sub OpenDrawing() Dim dwgName As String dwgName = "C:\Program Files\AutoCAD 2002\Sample\campus.dwg" On Error Resume Next Application.Documents.Open dwgName If Err.Description "" Then MsgBox "File " & dwgName & " does not exist." Err.Clear End IfEnd SubV DM bn vBy li

  • To bn v miSet RetVal = Documents.Add([TemplateName])

    s dng phng thc Add c trong tp i tng Documents

    Tham sGii thchTemplateName Tham s tu chn. L chui k t cha ng dn y n tp bn v mu (tp *.dwt). Nu khng nhp tham s ny, AutoCAD s to bn v da trn tp bn v mu mc nh (thng c tn l Acad.dwt). RetVal i tng kiu Document cha bn v va mi to. C phpGhi ch

  • To bn v miSub NewDrawing() Dim docObj As AcadDocument Set docObj =Documents.Add End SubV DM tTo bn v mi

  • Lu bn vObject.Save Object.SaveAs FileName[, FileType]

    s dng phng thc Save hoc SaveAs

    Tham sGii thch

    Object i tng kiu Document, l bn v s c lu. FileName L chui k t cha tn tp s c lu (bao gm c ng dn y ). Nu khng ch ra ng dn y ,tp bn v s c lu vo th mchot ng ca AutoCAD FileType Tham s tu chn, l hng s xc nh kiu tp bn v s c lu C phpGhi ch

  • Lu bn vSub SaveActiveDrawing() ThisDrawing.Save ThisDrawing.SaveAs "MyDrawing.dwg" End SubV DLu bn v sn cLu bn v mi

  • Lu bn v

    Sub TestIfSaved() If Not (ThisDrawing.Saved) Then If MsgBox("Do you wish to save this drawing?",_ vbYesNo) = vbYes Then ThisDrawing.Save End If End If End Sub V d sau s kim tra xem bn v c lu hay cha v s hi ngi dng xem c ng lu bn v hay khng, nu khng ng , s thot khi chng trnh. Nu ng , s s dng phng thc Save lu bn v hin hnh

  • ng bn vobject.Close([SaveChanges][, FileName])

    s dng phng thc Close c trong i tng Document

    Tham sGii thch

    Object i tng kiu Document, l i tng chabn v cn ng . SaveChanges Tham s tu chn, xc nh xem c cn phi lu bn v li trc khi ng hay khng. Nu bng TRUE, s lu bn v, ngc li l FALSE. Gi tr mc nh ca tham s ny l TRUE. FileName Tham s tu chn, xc nh tn ca bn v s c lu trong trng hp bn v cha c lu ln no C phpGhi ch

  • ng bn v

    Sub CloseDrawing() If MsgBox("Bn c mun ng bn v: " & ThisDrawing.WindowTitle, _ vbYesNo + vbQuestion) = vbYes Then If ThisDrawing.FullName "" Then ThisDrawing.Close SaveChanges:=True MsgBox(ThisDrawing.Name & " cha c lu nn khng th ng!") End If End If End Sub V d sau s hi ngi dng c mun ng bn v hay khng, sau kim tra xem tp c lu ln u cha, tip mi thc s ng bn v li s dng phng thc Close c trong i tng bn v hin hnh

  • Thot khi chng trnh AutoCAD Application.Quit Thc hin phng thc Quit c trong i tng Applicaton

    Sub Thoat_AutoCAD() Application.Quit End Sub C phpV dPhng thc ny s ng tt c cc bn v v d n VBA trong AutoCAD li, nu c bn v hoc d n no chac lu, n s nhc ngi dng lu bn v, sau mi thc s thot khi AutoCAD

  • ZoomWindowZoomPickWindow ZoomPrevious ZoomAll ZoomExtents Mcca sAutoCadCc thao tc c bn caAutoCadZoomScaled

  • ZoomExtentsApplication.ZoomExtents Thc hin phng thc ZoomExtents

    Sub VD_ ZoomExtents() Application.ZoomExtents End Sub C phpV dPhng thc ny s phng mn hnh bn v theo vng bao ca tt c cc i tng trong bn v, ngha l gip ta c thquan st c tt c cc i tng hnh hc hin ang c vi kch thc ln nht

  • ZoomAllApplication.ZoomAll S dng phng thc ZoomAll

    Sub VD_ ZoomAll() Application.ZoomAll End Sub C phpV dTrong ch 2D, phng thc ny s phng mn hnh bn v theo gii hn ca bn v hoc theo vng bao tt c cc i tng tu thuc vo vng no rng hn. Cn trong ch 3D, phng thc ny tng ng vi phng thc ZoomExtents.

  • ZoomPreviousApplication.ZoomPrevious S dng phng thc ZoomPrevious

    Sub VD_ ZoomPrevious() Application. ZoomPrevious End Sub C phpV dPhng thc ny s chuyn mn hnh bn v v trng thi trc . Khi ngi dng thc hin lnh Pan hoc cc lnhlin quan n thu phng mn hnh bn v

  • ZoomPickWindow Application.ZoomPickWindow S dng phng thc ZoomPickWindow

    Sub VD_ ZoomPickWindow() Application.ZoomPickWindowEnd Sub C phpV dPhng thc ny s phng mn hnh bn v theo mt hnhch nht do ngi dng chn trn mn hnh bng kch chut

  • ZoomWindow Application.ZoomWindow Di_Tri, Trn_Phi S dng phng thc ZoomWindow C php

    Tham sGii thch

    Di_Tri Mng 3 phn t kiu Double, xc nh to im gc di bn tri ca hnh chnht s thc hin phng i.Trn_Phi Mng 3 phn t kiu Double, xc nh to im gc trn bn phi cahnh ch nht s thc hin phng i.Ghi ch

  • Sub VD_ZoomWindow() Khai bo bin cha to cc im gc Dim point1(0 To 2) As Double Dim point2(0 To 2) As Double Gn to cho cc im gc point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0 point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0 Thc hin phng thc ZoomWindow ZoomWindow point1, point2 End Sub V dPhng thc ny thc hin thu phng mn hnh bnv theo mt hnh ch nht c xc nh trc ZoomWindow

  • ZoomScaled Application.ZoomScaled Scale[, ScaleType] S dng phng thc ZoomScaled C php

    Tham sGii thch

    Scale Tham s xc nh t l thu phng mn hnh bn v ScaleType Tham s tu chn, xc nh cch thc p dng hs t l , C th bng mt trong cc hng s sau:

    acZoomScaledAbsolutetng i so vi vng v (drawing limits).acZoomScaledRelativetng i so vi mn hnh bn v hin hnh.acZoomScaledRelativePSpacetng i so vi n v ca khng gian m hnh.Ghi ch

  • Sub VD_ZoomScaled() Dim ti_le As Double Dim kieu_phong_dai As Integer ti_le = 2 kieu_phong_dai = acZoomScaledRelative Thc hin phng thc ZoomScaled ZoomScaled ti_le, kieu_phong_dai End Sub V dPhng thc ny thu phng mn hnh bn vtheo mt t l c xc nh trc ZoomScaled

  • gii thiukhi hc VBTrnh bytrong bi ny

  • GetDistance GetAngle GetInteger, GetReal GetString GetEntity Nhp d liuPrompt Cc thao tc c bn caAutoCad

  • Prompt Utility.Prompt Message S dng phng thc Prompt ca i tng Utility (l mt thuc tnh ca i tng Document) C php

    Tham sGii thch

    Message l on vn bn s c hin th trn dng lnh ca AutoCAD .Ghi chPhng thc ny ch n gin l gi mt on vn bn ndng lnh ca AutoCAD v thng c s dng thngbo cho ngi dng bit mt ni dung no trc hoc sau mt thao tc vi chng trnh

  • Prompt V d

  • GetString RetVal = Utility.GetString(HasSpaces[, Prompt]) S dng phng thc GetString ca i tng Utility C php

    Ghi ch

  • Phng thc ny c s dng ngi dng nhp vo mt chui k t. AutoCAD s dng li cho n khi ngi dng nhp vo mt gi tr no

    Sub VD_GetString() ' V d minh ho cc cch s dng phng thc GetString Dim returnString As String ' Nhc ngi dng nhp Gi tr nhp vo khng th cha du cch returnString = ThisDrawing.Utility.GetString _ (False, "Nhp chui (nhn SPACE hoc ENTER kt thc): ") MsgBox "Chui va nhp l: '" & returnString & "'" ' Nhc ngi dng nhp Gi tr nhp vo c th cha du cch returnString = ThisDrawing.Utility.GetString _ (True, " Nhp chui (nhn ENTER kt thc): ") MsgBox "Chui va nhp l: '" & returnString & "'" End Sub V dGetString

  • GetInteger, GetReal RetVal = Utility.GetInteger([Prompt]) RetVal = Utility.GetReal([Prompt]) S dng phng thc GetInteger, GetReal ca i tng Utility C php

    Ghi ch

  • Phng thc ny c s dng khi mun ngi dng nhp mt s nguyn (phng thc GetInteger) hoc mt s thc (phng thc GetReal)

    Sub Example_GetReal() ' V d sau s dng phng thc GetReal v phng thc GetInteger ' ngi dng nhp vo s thc v s nguyn. Dim returnReal As Double Dim returnInteger As Integer ' Nhc ngi dng nhp vo s thc, ' sau hin th kt qu c nhp vo. returnReal = ThisDrawing.Utility.GetReal("Enter an Real: ") MsgBox "S thc va c nhp: " & returnReal & vbCrLf & _ "(Tip tc nhp gi tr.)" ' Nhc ngi dng nhp vo s nguyn, ' sau hin th kt qu c nhp vo. returnInteger = ThisDrawing.Utility.GetInteger("Nhp s nguyn: ") MsgBox "S nguyn va c nhp: " & returnInteger End Sub V dGetInteger, GetReal

  • GetAngle RetVal = Utility.GetAngle([Point][, Prompt]) S dng phng thc GetAngle ca i tng Utility C php

    Ghi ch

  • Phng thc ny c s dng khi mun ngi lp trnh nhp vo mt gi tr gc bng cch nhp gi tr ngay trn dng lnh hoc chn mt gc trn mn hnh V dGetAngle

  • GetPoint RetVal = Utility.GetPoint([Point][, Prompt]) S dng phng thc GetPoint ca i tng Utility C php

    Ghi ch

  • Phng thc GetPoint c s dng ly mt im do ngi dng nhp vo bng cch nhp ta trc tip t dng lnh hoc chn im trn mn hnh. Gi tr tr v ca phng thc c kiu Variant, l mt mng gm 3 phn t s thc cha ta ca im c chn trong h ta WCS V dGetAngle

  • GetDistance RetVal = Utility.GetDistance([Point][, Prompt]) S dng phng thc GetDistance ca i tng Utility C php

    Ghi ch

  • Lu GetDistancePhng thc GetDistance c s dng ngi dng nhp vo gi tr khong cch. Ngi dng c th nhp mt s thc trc tip t dng lnh hoc c th chn hai im trn mn hnh bn v, AutoCAD s t ng tr v gi tr s thc l khong cch gia hai im

  • GetDistanceV d

  • GetEntity Utility.GetEntity Object, PickedPoint[, Prompt] S dng phng thc GetEntity ca i tng Utility C php

    Ghi ch

  • Lu GetEntityPhng thc GetEntity c s dng ly mt i tng ca AutoCAD bng cch cho php ngi dng chn trc tip bng chut trn mn hnh ha

  • GetEntityV d

  • Lm g ?

  • Phng thc GetVariable S dng c gi tr bin h thng RetVal = object.GetVariable(Name) C php

    Ghi ch

  • Phng thc GetVariable V d

  • Phng thc SetVariable S dng xc lp gi tr bin h thng object.SetVariable Name, Value C php

    Ghi ch

  • Phng thc SetVariable

  • V dSetVariable

  • u khng phi l ci ti khng y !Nhi ng ny s ra ng kia !Hc cng l mtkhoa hc