activex automation :automation autocad ... · microsoft visual studio® .net autocad ... autocad...
TRANSCRIPT
<$nopage>ActiveXAutomation:Automation <$nopage>AutoCAD<$nopage>Color: <$nopage>TrueColor: <$nopage>VB:Automation<$nopage>VBA:Automation <$nopage>VisualBasicfor
Applications <$nopage>VisualBasic <$nopage>Automation:AutoCAD2004:<$nopage>:Automation <$nopage>
ActiveX/VBA>
ActiveXAutomationAutoCADVisualBasicforApplicationsAutoCADActiveXAutoCADVisualBasicforApplications(VBA)AutoCADActiveXVBA
Automation
ActiveX/VBA>>
AutoCADActiveX
AutoCAD®ActiveX®AutoCADAutoCADAutoCAD“”Microsoft®WordVBAExcelVBA
ADDAX_INTRO
AutoCADActiveX
AutoCADActiveXAutomationAutoLISP®C++AutoCAD
Windows®MicrosoftExcelWord
ActiveXAutoCADAutoCADActiveX
AutoCAD
ActiveX/VBA>>
AutoCADVisualBasicforApplications(VBA)
MicrosoftVBAVisualBasic6(VB)VBAVBVBAAutoCADAutoCAD
VBAVBAAutoCADMicrosoftWordExcelAutomation
VisualBasic6AutoCADVBA
AutoCADVBA
VBA
VBAAutoCAD
Microsoft64VBASDK(.dll)64AutoCADVBAVBA32COM64AutoCADVBAVBAAutoCADVBAVB.NET
VBAAutoCAD
ActiveX/VBA>>AutoCADVisualBasicforApplications(VBA)>
VBAAutoCAD
VBAAutoCADActiveXAutomationAutoCADAutoCADVBAVBAAutoCADActiveXAutomationAutoCADAutoCADActiveXAutomationVBAAutoCAD
AutoCADAcitveXVBAAutoCADAutoCADAutoCADAutoCADVBAAutoLISPAutoCADAutoCADVBAAutoLISP
AutoCADActiveXAutomationAutoCADVBAActiveXAutomation ActiveXandVBAReferenceAutoCADActiveXAutomationVBAutoCADVBAAutoCADActiveXAutomation
VBAAutoCADVBAMicrosoftVBAVBAIDE
F1
VBAIDE“”
VBAIDE“?”Microsoft.NETFramework
ActiveX/VBA>>AutoCADVisualBasicforApplications(VBA)>VBAAutoCAD >
Microsoft.NETFramework
MicrosoftVisualStudio®.NETAutoCADAutomation
AutoCAD2008“ acax17enu.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”
AutoCAD/ObjectDBXCommon17.0“ axdb17enu.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”
Autodesk.AutoCAD.Interop.dllAutoCADAutodesk.AutoCAD.Interop.Common.dllObjectDBXTMInteropAutomation.NET
MicrosoftVisualStudio.NETAutoCAD
DimobjAcadAsAutodesk.AutoCAD.Interop.AcadApplication
DimobjLineAsAutodesk.AutoCAD.Interop.Common.AcadLine
AutoCADNETLOAD.NET
AutoCAD.NETAutodeskDeveloperCenter
ActiveX/VBA>>AutoCADVisualBasicforApplications(VBA)>VBAAutoCAD >
AutoCADMicrosoftOfficeVBAAutoCAD
ActiveX/VBA>>
AutoCADActiveXVBA
AutoCADActiveX/VBAAutoCADAPI
VBAActiveXAutoLISP
AutoCAD
Windows ActiveXVBAWindows
VBA
AutoCADActiveXVBAVisualBasic6AutoCAD
ActiveX/VBA>>
AutoCADActiveXVBA“GettingStartedwithVBA”“DevelopApplicationswithVBA”VBAVBAActiveXVBA
ActiveX/VBA>>
VisualBasic6VisualBasic6VisualBasic6MicorsoftVisualBasicforApplication(IDE)“”
ActiveX/VBA>>
ActiveXandVBAReference800VBAActiveX
AutoCADSampleAutoCADMicrosoftExcel
VisualBasicforApplicationsAutoCADActiveX
ActiveXandVBADeveloper'sGuide ActiveXandVBAReferenceAutoCADVBAAutoCAD
1. VBA
2. AutoCAD
3. VBARUN“”
4. “”“”“”
ActiveX/VBA>>
Automation
ActiveXAutomationAutoCADVisualBasicforApplications(VBA)VisualBasic6(VB)AutomationAutomation
AutoCAD“AutoCAD”
ActiveX/VBA>>Automation >
AutoCAD2008 ActiveXandVBAReferenceVBAIDE
SortentsTable
Table
TableStyle
AutoCAD2008Automation SheetSetObjectsReference
ActiveX/VBA>>Automation >
AutoCAD2004 AutoCAD2008
BeginClose BeginDocClose BeginDocClose
Layer Layer DescriptionUsed
Layers Layers GenerateUsageData
ModelSpacePaperSpaceBlock
ModelSpacePaperSpaceBlock
AddTablePathBlock
MTextText MTextText BackgroundFillMTextFieldCodeMTextText
Plot Plot BatchPlotProgressStartBatchModeMicrosoft.NETDisplayPlotPreview
PreferencesFiles PreferencesFiles PlotLogFilePathPageSetupOverridesTemplateFileQNewTemplateFile
PreferencesOutput PreferencesOutput AutomaticPlotLogDefaultPlotToFilePathContinuousPlotLog
Viewport Viewport ModelViewSheetViewLabelBlockIdHasSheetViewSyncModelView
View View CategoryNameLayoutIdLayerStateHasVpAssociation
ActiveX/VBA>>Automation >
VBAIDEVisualBasic6AutoCADAutomationAutoCAD2008
AutoCAD2008AutomationAutoCADAutomation“acax17enu.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”
AutoCAD2008AutomationCreateObjectGetObjectGetInterfaceObjectProgIDAutoCADAutomationCreateObjectCreateObject“AutoCAD.Application.17”AutomationProgIDProgID
<$nopage> <$nopage>:
ActiveX/VBA>
VBA
AutoCADVisualBasicforApplications(VBA)VBA(IDE)VBAAutoCADVBAIDEAutoCADVBAIDEVBAVBAVBAIDE
VBAVBA
VBAIDE
AutoCADVBAAutoCADVBA
ActiveX/VBA>VBA>
VBA
AutoCAD®VBAAutoCAD
AutoCADAutoCADAutoCAD
AutoCADAutoCAD
AutoCAD
AutoCADVBAVisualBasic6VBAIDEIMPORTEXPORTVBAVBAIDE
VisualStudio.NETCOMAutomationAutoCAD
<$nopage> <$nopage>:
ActiveX/VBA>VBA>
VBA
VBAAutoCADVBAAutoCADVBA
VBA
“”AutoCADVBAMANVBA
<$nopage> <$nopage>:
ActiveX/VBA>VBA>VBA >
AutoCADDVB
AutoCAD acad.dvb
VBA
1. “VBA”“”“VBA”
2. “VBA”“VBA”DVB
3. “”
VBALOAD“VBA”
DVBWindowsAutoCAD
ActiveX/VBA>VBA>VBA > >
DVBWindowsAutoCAD
ActiveX/VBA>VBA>VBA >
VBA
“”VBAVBAUNLOAD
ActiveX/VBA>VBA>VBA >
AutoCAD
1. VBA
2. “”
ActiveX/VBA>VBA>VBA >
AutoCAD
1. VBA
2. “”
3. “VBA”“”“”“VBA”“”
ActiveX/VBA>VBA>VBA >
VBA
1. VBA
2. “” ACADProjectVBAIDEVBAIDE
ActiveX/VBA>VBA>VBA >
VBAVBAIDE
VBA
1. VBA
2. “”“”
3.
4. “”
ActiveX/VBA>VBA>
“”
ActiveX/VBA>VBA> >
“”
“”VBAAutoCAD“”“”AutoCADVBARUN
“”
AutoCAD
AutoCAD
1. “”
2. “”
3. “”
“”
“”“”
“”“”
1. “”
2. “”
3. “”“”
ActiveX/VBA>VBA> >
AutoCAD
“”
1. “”
2. “”
VBAIDE
“”“”
ActiveX/VBA>VBA> >
VBAIDE“”VBAIDE VBAIDE
1. “”
2. “”
ActiveX/VBA>VBA> >
VBAIDE“”
1. “”
2. “”
ActiveX/VBA>VBA> >
AutoCADVBA
VBA
VBA“”“”“”
VBAVBAIDE
VBA
AutoCADVBA
1. “”“” “”“VBA”
2. “VBA”“”“”
3. “”
4. “”
ActiveX/VBA>VBA>
VBAIDE
AutoCADVBAVBAIDEVBAIDE
VBAIDE
VBAIDE
VBAIDE“”“” “VisualBasic”
VBAVBAIDE
ActiveX/VBA>VBA>VBAIDE >
VBAIDE“”VBAVBA
“”“”“”
“”“”“”CTRL+R
ActiveX/VBA>VBA>VBAIDE >
ActiveX/VBA>VBA>VBAIDE >>
VBAAutoCADVBAAutoCAD
ActiveX/VBA>VBA>VBAIDE >>
ActiveX/VBA>VBA>VBAIDE >>
ActiveX/VBA>VBA>VBAIDE >>
ActiveX/VBA>VBA>VBAIDE >>
ActiveX/VBA>VBA>VBAIDE >>
1. VBAIDE“”
2. “”“”“”“”“”
ActiveX/VBA>VBA>VBAIDE >
FRMBASCLS
“”“”“”
1. VBAIDE“”
2. “”“”“”
3. “”“”
ActiveX/VBA>VBA>VBAIDE >
VBAIDE“”“”
“”
1. VBAIDE“”
2. “”“”“”
3. “”“”“”
“”“”“”“”
ActiveX/VBA>VBA>VBAIDE >>
“”
“”“”“”
“”
“”
“”
“”“”“”
ActiveX/VBA>VBA>VBAIDE >>
“”
“”
“”“”“”“”“”VBAIDE
“”“”“”
“”
ActiveX/VBA>VBA>VBAIDE >
.dvb .dvbVBAIDE“”
AutoCAD
ACADProject
Project.dvb
1. VBAIDE“”
2. “”Name
1. VBAIDE“”“”
2. “”
ActiveX/VBA>VBA>VBAIDE >
AutoCADVBASAVESAVEVBAIDE“”VBAVBA“VBA”
VBAIDESAVE
VBA“”
AutoCADVBA
project.dvb project.dvb project.dvb
ActiveX/VBA>VBA>VBAIDE >
VBA
VBA
VBAIDE“” “”
AutoCADAutoCAD
VBA
MicrosoftVBAAutoCADMicrosoftVBAVBAIDE“”MicrosoftVBA
VBA
VBA
1. VBAIDE“”
2. “”“”“”
3. “”“”“”
4. “”“”
5. “”“”
ActiveX/VBA>VBA>VBAIDE >
VBAIDE
“”VBAIDE“”“”“”
“”“”“”“”“”
ActiveX/VBA>VBA>VBAIDE >VBAIDE >
“”“”“”
ActiveX/VBA>VBA>VBAIDE >VBAIDE >
“”
ActiveX/VBA>VBA>VBAIDE >VBAIDE >
“”VBA
ActiveX/VBA>VBA>VBAIDE >VBAIDE >
“”
ActiveX/VBA>VBA>
AutoCADVBA“”AutoCADVBA
“”
1. AutoCADVBAIDEVBAIDE
2. VBAIDE“”“”“”
3. VBAIDE“”“”
4. HelloWorld“”Sub“”Public
5. “”
6. PublicSubHelloWorld() EndSub
ThisDrawing.Application.Documents.Add
7. 6
DiminsPoint(0To2)AsDouble'
DimtextHeightAsDouble'
DimtextStrAsString'
DimtextObjAsAcadText'
insPoint(0)=2'X
insPoint(1)=4'Y
insPoint(2)=0'Z
textHeight=1'1.0
textStr=""'
'Text
SettextObj=ThisDrawing.ModelSpace.AddText_
(textStr,insPoint,textHeight)
8. 7
ThisDrawing.SaveAs("Hello.dwg")
9. VBAIDE“”“”AutoCAD“”“ Hello.dwg”
ActiveX/VBA>VBA>
VBAIDEVBAMicrosoftMicrosoftVBAIDE“”“MicrosoftVisualBasic”
ActiveX/VBA>VBA>
AutoCADVBA
.dvbVBA
AutoCADVBA
VBAAutoCAD
VBAAutoCAD
VBAIDE
ThisDrawing
ThisDrawingVBAThisDrawingAutoCADThisDrawing
VBAIDE
VBA
VBA
VBA
“”
“”VBA
ActiveX/VBA>VBA>
AutoCADVBA
VBAIDE
VBAIDEVBAIDEVBAIDEAutoCADAutoCAD
VBALOAD
VBAAutoCAD
VBARUN
“”AutoCADVBA
VBAUNLOAD
AutoCADVBAVBA“”
VBAMAN
VBA
VBASTMT
AutoCADVBA
<$nopage> <$nopage>:
ActiveX/VBA>
ActiveXAutomation
AutoCADActiveXAutomationAutoCADAutoCADActiveXAutomation
F1AutoCADActiveXAutomationVBAIDEF1
AutoCAD
<$nopage>
ActiveX/VBA>ActiveXAutomation>
AutoCAD
AutoCAD ®ActiveX®AutoCADAutoCADActiveX
AutoCAD
Application“”
ApplicationDocument
PreferencesPlotUtilityAutoCAD
ActiveX/VBA>ActiveXAutomation>AutoCAD >
Application
ApplicationAutoCADActiveXAutomationApplication
ApplicationPreferencesPreferences“”DatabasePreferencesApplicationAutoCADApplicationADSARXAutoCAD
ApplicationAutoCADDocumentsAutoCADMenuBarMenuGroupsVBAIDEVBE
ApplicationActiveXApplication
ActiveX/VBA>ActiveXAutomation>AutoCAD >
Document
DocumentAutoCADDocumentsAutoCADModelSpacePaperSpaceLayersLinetypesTextStylesDocumentPlotUtility
DocumentSummaryInfo
ActiveX/VBA>ActiveXAutomation>AutoCAD >
AutoCADAddAdd<>AddLine
CountItem
<$nopage>
ActiveX/VBA>ActiveXAutomation>AutoCAD >
Add<Entityname>AutoCADLayerLinetypeColorHandleCenterRadiusArea
LayersLinetypesDimStylesSelectionSetsAdd
ActiveX/VBA>ActiveXAutomation>AutoCAD >
PreferencesPlotUtility
Preferences“”“”DatabasePreferencesSetVariableGetVariable“”
Plot“”
UtilityAutoCADAutoCAD
ActiveX/VBA>ActiveXAutomation>AutoCAD >
AutoCAD
AutomationAutoCADAutoCAD
AutomationAutoCADAutoCAD
<$nopage>:
ActiveX/VBA>ActiveXAutomation>
VBAVBAAutoCAD
VBA ThisDrawingAutoCAD ThisDrawingDocument
ThisDrawingAutoCAD ThisDrawingAutoCAD
ThisDrawing.Save
Application
ActiveX/VBA>ActiveXAutomation>>
ThisDrawingModelSpaceAddLine
DimstartPoint(0To2)AsDouble,endPoint(0To2)AsDouble
DimLineObjasAcadLine
startPoint(0)=0:startPoint(1)=0:startPoint(2)=0
endPoint(0)=30:endPoint(1)=20:endPoint(2)=0
SetLineObj=ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)
AcadModelSpace( moSpace)
DimmoSpaceAsAcadModelSpace
SetmoSpace=ThisDrawing.ModelSpace
DimstartPoint(0To2)AsDouble,endPoint(0To2)AsDouble
DimLineObjasAcadLine
startPoint(0)=0:startPoint(1)=0:startPoint(2)=0
endPoint(0)=30:endPoint(1)=20:endPoint(2)=0
SetLineObj=moSpace.AddLine(startPoint,endPoint)
AcadEntity
SubCh2_FindFirstEntity()
'
OnErrorResumeNext
DimentityAsAcadEntity
IfThisDrawing.ModelSpace.count<>0Then
Setentity=ThisDrawing.ModelSpace.Item(0)
MsgBoxentity.ObjectName+_
"isthefirstentityinmodelspace."
MsgBox"Therearenoobjectsinmodelspace."
EndIf
EndSub
<$nopage>:
ActiveX/VBA>ActiveXAutomation>>
Application
DocumentApplicationApplicationApplicationDocument
ThisDrawingDocument
ThisDrawing.Application.Update
ActiveX/VBA>ActiveXAutomation>
AutoCAD
ModelSpace
PaperSpace
Block
Blocks
Dictionaries
DimStyles
FileDependencies
“”
Groups
Hyperlinks
Layers
Layouts
Linetypes
MenuBar
AutoCAD
MenuGroups
AutoCAD
PlotConfigurations
RegisteredApplications
SelectionSets
TextStyles
UCSs
(UCS)
Views
Viewports
ActiveX/VBA>ActiveXAutomation>>
DocumentDocumentLayers
DimlayerCollectionasAcadLayers
SetlayerCollection=ThisDrawing.Layers
DocumentsMenuBarMenuGroupsApplicationApplicationMenuGroups
DimMenuGroupsCollectionasAcadMenuGroups
SetMenuGroupsCollection=ThisDrawing.Application.MenuGroups
ActiveX/VBA>ActiveXAutomation>>
AddLayers
DimnewLayerasAcadLayer
SetnewLayer=ThisDrawing.Layers.Add("MyNewLayer")
ActiveX/VBA>ActiveXAutomation>>
ItemItem
ItemItem
ThisDrawing.Layers.Item("ABC")
ThisDrawing.Layers("ABC")
ForEach
Layers
SubCh2_IterateLayer()
'
OnErrorResumeNext
DimIAsInteger
DimmsgAsString
msg=""
ForI=0ToThisDrawing.Layers.count-1
msg=msg+ThisDrawing.Layers.Item(I).Name+vbCrLf
Next
MsgBoxmsg
EndSub
MyLayer
MyLayer
SubCh2_FindLayer()
'ItemMyLayer
OnErrorResumeNext
DimABCLayerAsAcadLayer
SetABCLayer=ThisDrawing.Layers("MyLayer")
IfErr<>0Then
MsgBox"Thelayer'MyLayer'doesnotexist."
EndIf
EndSub
ActiveX/VBA>ActiveXAutomation>>
DeleteABC
DimABCLayerasAcadLayer
SetABCLayer=ThisDrawing.Layers.Item("ABC")
ABCLayer.Delete
ActiveX/VBA>ActiveXAutomation>
CircleCenterCircleOffsetCircleAutoCAD ActiveXandVBAReferenceCircle
ActiveX/VBA>ActiveXAutomation>
Application
AutoCADAutoCAD
ActiveX/VBA>ActiveXAutomation>
Automation
AutomationVBAIDEAutoCAD“ acax17enu.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”VBAIDEAcSmComponents171.0“ AcSmComponents17.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”
ActiveX/VBA>ActiveXAutomation>
ActiveXAutomationAutoCADActiveXAutomation
ActiveX/VBA>ActiveXAutomation>>
EmptyErrorNothing NULL VarType TypeName
VBA
ActiveX/VBA>ActiveXAutomation>>
AutoCADActiveXAutomationAutoCADActiveXAutomationAutoCADActiveXAutomation
AutoCADVBAVBAActiveXAutomation
ActiveX/VBA>ActiveXAutomation>>
AutoCADActiveXAutomationCreateTypedArrayAutoCAD
CreateTypedArray
CreateTypedArray
CreateTypedArrayAddSpline
SubCh2_CreateSplineUsingTypedArray()
'CreateTypedArray
'
DimsplineObjAsAcadSpline
DimstartTanAsVariant
DimendTanAsVariant
DimfitPointsAsVariant
DimutilObjAsObject'Utility
SetutilObj=ThisDrawing.Utility
'Spline
utilObj.CreateTypedArray_
startTan,vbDouble,0.5,0.5,0
utilObj.CreateTypedArray_
endTan,vbDouble,0.5,0.5,0
utilObj.CreateTypedArray_
fitPoints,vbDouble,0,0,0,5,5,0,10,0,0
SetsplineObj=ThisDrawing.ModelSpace.AddSpline_
(fitPoints,startTan,endTan)
'
ZoomAll
EndSub
ActiveX/VBA>ActiveXAutomation>>
AutoCADActiveXAutomationVBATypenameVBA ForEach
SubCh2_CalculateDistance()
Dimpoint1AsVariant
Dimpoint2AsVariant
'
point1=ThisDrawing.Utility.GetPoint_
(,vbCrLf&"Firstpoint:")
point2=ThisDrawing.Utility.GetPoint_
(point1,vbCrLf&"Secondpoint:")
'point1point2
DimxAsDouble,yAsDouble,zAsDouble
DimdistAsDouble
x=point1(0)-point2(0)
y=point1(1)-point2(1)
z=point1(2)-point2(2)
dist=Sqr((Sqr((x^2)+(y^2))^2)+(z^2))
'
MsgBox"Thedistancebetweenthepointsis:"_
&dist,,"CalculateDistance"
EndSub
ActiveX/VBA>ActiveXAutomation>
VBAVBA
AutoCAD2008COM“AutoCAD.Application.17”VBAVB
ActiveX/VBA>ActiveXAutomation> >
VBAVB
VBAutoCADVB“”“”“”“”AutoCAD“”
ThisDrawingAutoCAD( acadApp)(acadDoc)AutoCAD
AutoCADAutoCADVBGetObjectAutoCADApplicationAutoCADCreateObjectAutoCADApplicationAutoCAD
AutoCADGetObjectWindowsAutoCADGetObjectMicrosoftVBA(ROT)GetObject
AutoCADAutoCADVisible TRUE
GetObjectAutoCADGetObjectAutoCADVisible TRUEAutoCADAutoCADWindows
ProgIDCreateObjectGetObjectProgIDProgIDCreateObjectCreateObject("AutoCAD.Application")CreateObject("AutoCAD.Application.17")GetInterfaceObjectProgIDProgID
VisualBasic6AutoCAD
ErrClearDescription
SubCh2_ConnectToAcad()
DimacadAppAsAcadApplication
OnErrorResumeNext
SetacadApp=GetObject(,"AutoCAD.Application.17")
IfErrThen
Err.Clear
SetacadApp=CreateObject("AutoCAD.Application.17")
IfErrThen
MsgBoxErr.Description
ExitSub
EndIf
EndIf
MsgBox"Nowrunning"+acadApp.Name+_
"version"+acadApp.Version
EndSub
AutoCADDocumentDocumentApplicationActiveDocument
DimacadDocasAcadDocument
SetacadDoc=acadApp.ActiveDocument
acadDocAutoCAD
VBAVB
VBAVB
VBA
SubCh2_AddLineVBA()
'
'
DimlineObjAsAcadLine
DimstartPoint(0To2)AsDouble
DimendPoint(0To2)AsDouble
'
'
startPoint(0)=1
startPoint(1)=1
startPoint(2)=0
endPoint(0)=5
endPoint(1)=5
endPoint(2)=0
'
SetlineObj=ThisDrawing._
ModelSpace.AddLine_
(startPoint,endPoint)
'
ZoomAll
EndSub
VB
SubCh2_AddLineVB()
OnErrorResumeNext
'AutoCAD
DimacadAppAsAcadApplication
SetacadApp=GetObject_
(,"AutoCAD.Application.17")
IfErrThen
Err.Clear
SetacadApp=CreateObject_
("AutoCAD.Application.17")
IfErrThen
MsgBoxErr.Description
ExitSub
EndIf
EndIf
'AutoCAD
DimacadDocAsAcadDocument
SetacadDoc=acadApp.ActiveDocument
'
DimlineObjAsAcadLine
DimstartPoint(0To2)AsDouble
DimendPoint(0To2)AsDouble
startPoint(0)=1
startPoint(1)=1
startPoint(2)=0
endPoint(0)=5
endPoint(1)=5
endPoint(2)=0
'Line
SetlineObj=acadDoc.ModelSpace.AddLine_
(startPoint,endPoint)
ZoomAll
acadApp.visible=True
EndSub
<$nopage>
ActiveX/VBA>
AutoCAD
AutoCADAutoCAD
AutoCAD“”“”
AutoCAD
ActiveX/VBA>AutoCAD >
DocumentsDocumentAutoCAD ®
DocumentsAddDocumentsOpenDocumentsCloseAutoCAD
SaveSaveAsAutoCADSaved
DocumentImportExport
OpenVBA DirAutoCAD
SubCh3_OpenDrawing()
DimdwgNameAsString
dwgName="c:\campus.dwg"
IfDir(dwgName)<>""Then
ThisDrawing.Application.Documents.OpendwgName
MsgBox"File"&dwgName&"doesnotexist."
EndIf
EndSub
Add
SubCh3_NewDrawing()
DimdocObjAsAcadDocument
SetdocObj=ThisDrawing.Application.Documents.Add
EndSub
SubCh3_SaveActiveDrawing()
'
ThisDrawing.Save
'
ThisDrawing.SaveAs"MyDrawing.dwg"
EndSub
“”“”“”Save
SubCh3_TestIfSaved()
IfNot(ThisDrawing.Saved)Then
IfMsgBox("Doyouwishtosavethisdrawing?",_
vbYesNo)=vbYesThen
ThisDrawing.Save
EndIf
EndIf
EndSub
ActiveX/VBA>AutoCAD >
AutoCAD
“”“”AutoCAD
PreferencesDisplay
PreferencesDrafting
PreferencesFiles
PreferencesOpenSave
PreferencesOutput
PreferencesProfiles
PreferencesSelection
PreferencesSystem
PreferencesUser
PreferencesPreferencesApplicationPreferences
DimacadPrefasAcadPreferences
SetacadPref=ThisDrawing.Application.Preferences
DisplayDraftingFilesOpenSaveOutputProfileSelectionSystemUserPreferences
SubCh2_PrefsSetCursor()
'AutoCAD
'
'Preferences
DimacadPrefAsAcadPreferences
SetacadPref=ThisDrawing.Application.Preferences
'CursorSize
acadPref.Display.CursorSize=100
EndSub
SubCh2_PrefsSetDisplay()
'DisplayScreenMenuDisplayScrollBars
'
'
'Preferences
DimacadPrefAsAcadPreferences
SetacadPref=ThisDrawing.Application.Preferences
'
acadPref.Display.DisplayScreenMenu=True
acadPref.Display.DisplayScrollBars=False
EndSub
ActiveX/VBA>AutoCAD >AutoCAD >
PreferencesDatabasePreferencesAutoCADObjectDBXAutoCAD
DatabasePreferencesDocument
ActiveX/VBA>AutoCAD >
“”
“”AutoCADExcelAutoCAD
Application“”WindowState“”
“”
WindowTopWindowLeftWidthHeightAutoCAD“”400400
SubCh3_PositionApplicationWindow()
ThisDrawing.Application.WindowTop=0
ThisDrawing.Application.WindowLeft=0
ThisDrawing.Application.width=400
ThisDrawing.Application.height=400
EndSub
“”
SubCh3_MaximizeApplicationWindow()
ThisDrawing.Application.WindowState=acMax
EndSub
“”
SubCh3_MinimizeApplicationWindow()
ThisDrawing.Application.WindowState=acMin
EndSub
“”
“”
SubCh3_CurrentWindowState()
DimCurrWindowStateAsInteger
DimmsgAsString
CurrWindowState=ThisDrawing.Application.WindowState
msg=Choose(CurrWindowState,"normal",_
"minimized","maximized")
MsgBox"Theapplicationwindowis"+msg
EndSub
“”
VisibleAutoCAD
SubCh3_HideWindowState()
ThisDrawing.Application.Visible=False
EndSub
ActiveX/VBA>AutoCAD >
“”
AutoCAD“”“”
AutoCADActiveX“”“”
“”
ActiveX/VBA>AutoCAD >“” >
“”
Document“”WindowState“”“”
“”
WidthHeight“”400400
SubCh3_SizeDocumentWindow()
ThisDrawing.Width=400
ThisDrawing.Height=400
EndSub
“”
SubCh3_MaximizeDocumentWindow()
ThisDrawing.WindowState=acMax
EndSub
“”
SubCh3_MinimizeDocumentWindow()
ThisDrawing.WindowState=acMin
EndSub
“”
SubCh3_CurrentWindowState()
DimCurrWindowStateAsInteger
DimmsgAsString
CurrWindowState=ThisDrawing.WindowState
msg=Choose(CurrWindowState,"normal",_
"minimized","maximized")
MsgBox"Thedocumentwindowis"+msg
EndSub
ActiveX/VBA>AutoCAD >“” >
“”
AutoCAD“”AutoCAD“”
ActiveX/VBA>AutoCAD >“” >“” >
“”
ZoomWindowZoomPickWindowZoomWindow“”ZoomPickWindow“”
SubCh3_ZoomWindow()
'ZoomWindow
MsgBox"PerformaZoomWindowwith:"&vbCrLf&_
"1.3,7.8,0"&vbCrLf&_
"13.7,-2.6,0",,"ZoomWindow"
Dimpoint1(0To2)AsDouble
Dimpoint2(0To2)AsDouble
point1(0)=1.3:point1(1)=7.8:point1(2)=0
point2(0)=13.7:point2(1)=-2.6:point2(2)=0
ThisDrawing.Application.ZoomWindowpoint1,point2
'ZoomPickWindow
MsgBox"PerformaZoomPickWindow",,"ZoomPickWindow"
ThisDrawing.Application.ZoomPickWindow
EndSub
ActiveX/VBA>AutoCAD >“” >“” >
ZoomScaledAutoCAD
acZoomScaledAbsolute acZoomScaledRelative
acZoomScaledRelativePSpace
SubCh3_ZoomScaled()
MsgBox"PerformaZoomScaledusing:"&vbCrLf&_
"ScaleType:acZoomScaledRelative"&vbCrLf&_
"ScaleFactor:2",,"ZoomScaled"
DimscalefactorAsDouble
DimscaletypeAsInteger
scalefactor=2
scaletype=acZoomScaledRelative
ThisDrawing.Application.ZoomScaledscalefactor,scaletype
EndSub
ActiveX/VBA>AutoCAD >“” >“” >
ZoomCenterZoomCenter
ZoomCenter
SubCh3_ZoomCenter()
MsgBox"PerformaZoomCenterusing:"&vbCrLf&_
"Center3,3,0"&vbCrLf&_
"Magnification:10",,"ZoomCenter"
DimCenter(0To2)AsDouble
DimmagnificationAsDouble
Center(0)=3:Center(1)=3:Center(2)=0
magnification=10
ThisDrawing.Application.ZoomCenterCenter,magnification
EndSub
ActiveX/VBA>AutoCAD >“” >“” >
ZoomAllZoomExtentsZoomPrevious
ZoomAllZoomAllZoomAll
ZoomExtentsZoom
ZoomExtentsZoomAllZoomExtentsZoomExtents
ZoomAllZoomExtents
ZoomPrevious
“”
SubCh3_ZoomAll()
'ZoomAll
MsgBox"PerformaZoomAll",,"ZoomAll"
ThisDrawing.Application.ZoomAll
'ZoomExtents
MsgBox"PerformaZoomExtents",,"ZoomExtents"
ThisDrawing.Application.ZoomExtents
EndSub
ActiveX/VBA>AutoCAD >“” >
AddViews
255($)(-)(_)
DeleteViewDeleteView
View
View( viewObj)
SubCh3_AddView()
'Views
DimviewObjAsAcadView
SetviewObj=ThisDrawing.Views.Add("View1")
EndSub
View
View( viewObj)
SubCh3_DeleteView()
DimviewObjAsAcadView
SetviewObj=ThisDrawing.Views("View1")
'
viewObj.Delete
EndSub
Views
Views
SubCh3_DeleteViewFromCollection()
ThisDrawing.Views("View1").Delete
EndSub
ActiveX/VBA>AutoCAD >“” >
AutoCAD
UCS
“”
ActiveX/VBA>AutoCAD >“” >>
SplitacViewport2HorizontalacViewport2VerticalacViewport3Left
acViewport4
“”
SubCh3_SplitAViewport()
'
DimvportObjAsAcadViewport
SetvportObj=ThisDrawing.Viewports.Add("TEST_VIEWPORT")
'vportObj2
vportObj.SplitacViewport2Horizontal
'vportObj
ThisDrawing.ActiveViewport=vportObj
EndSub
ActiveX/VBA>AutoCAD >“” >>
ActiveViewport
NameLowerLeftCornerUpperRightCorner
LowerLeftCornerUpperRightCorner
Viewport1-LowerLeftCorner=(0,.5),UpperRightCorner=(.5,1)
Viewport2-LowerLeftCorner=(.5,.5),UpperRightCorner=(1,1)
Viewport3-LowerLeftCorner=(0,0),UpperRightCorner=(.5,.5)
Viewport4-LowerLeftCorner=(.5,0),UpperRightCorner=(1,.5)
SubCh3_IteratingViewportWindows()
'
DimvportObjAsAcadViewport
SetvportObj=ThisDrawing.Viewports.Add("TEST_VIEWPORT")
ThisDrawing.ActiveViewport=vportObj
'vport4
vportObj.SplitacViewport4
'
'
'
'
DimvportAsAcadViewport
DimLLCornerAsVariant
DimURCornerAsVariant
ForEachvportInThisDrawing.Viewports
ThisDrawing.ActiveViewport=vport
LLCorner=vport.LowerLeftCorner
URCorner=vport.UpperRightCorner
MsgBox"Viewport:"&vport.Name&"isnowactive."&_
vbCrLf&"Lowerleftcorner:"&_
LLCorner(0)&","&LLCorner(1)&vbCrLf&_
"Upperrightcorner:"&_
URCorner(0)&","&URCorner(1)
Nextvport
EndSub
ActiveX/VBA>AutoCAD >“” >
“”
AutoCADActiveXAutomationAutoCAD
UpdateRegen
UpdateRegen
UpdateAutoCAD
SubCh3_UpdateDisplay()
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=1:center(1)=1:center(2)=0
radius=1
'
SetcircleObj=ThisDrawing.ModelSpace.AddCircle(center,radius)
'
circleObj.Update
EndSub
ActiveX/VBA>AutoCAD >
(UCS)Regen
ActiveTextStyleActiveUCSActiveViewport
SubCh3_ResetActiveViewport()
'
'
ThisDrawing.ActiveViewport.GridOn=_
Not(ThisDrawing.ActiveViewport.GridOn)
'
ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport
EndSub
ActiveX/VBA>AutoCAD >
DocumentSetVariableGetVariableAutoCADMAXSORT
ThisDrawing.SetVariable"MAXSORT",100
<$nopage>
ActiveX/VBA>AutoCAD >
AutoCAD
AutoCADActiveXAutomationAutoCAD
“”
ActiveX/VBA>AutoCAD >>
“”
0,0
SnapRotationAngleSnapBasePoint
UpdateAutoCAD
“”
(1,1)30
SubCh3_ChangeSnapBasePoint()
'
ThisDrawing.ActiveViewport.GridOn=True
'1,1
DimnewBasePoint(0To1)AsDouble
newBasePoint(0)=1:newBasePoint(1)=1
ThisDrawing.ActiveViewport.SnapBasePoint=newBasePoint
'300.575
DimrotationAngleAsDouble
rotationAngle=0.575
ThisDrawing.ActiveViewport.SnapRotationAngle=rotationAngle
'
ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport
EndSub
ActiveX/VBA>AutoCAD >>
“”
“”UCS“”“”
AutoCAD“”
AutoCAD“”
“”OrthoOn TRUE“” FALSE“”“”
ThisDrawing.ActiveViewport.OrthoOn=True
<$nopage>
ActiveX/VBA>AutoCAD >>
<$nopage>
ActiveX/VBA>AutoCAD >>>
AddXLine
(5,0,0)(1,1,0)
SubCh3_AddXLine()
DimxlineObjAsAcadXline
DimbasePoint(0To2)AsDouble
DimdirectionVec(0To2)AsDouble
'
basePoint(0)=2#:basePoint(1)=2#:basePoint(2)=0#
directionVec(0)=1#:directionVec(1)=1#:directionVec(2)=0#
'
SetxlineObj=ThisDrawing.ModelSpace.AddXLine_
(basePoint,directionVec)
ThisDrawing.Application.ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>>
BasePointDirectionVector
DimBPointAsVariant
DimVectorAsVariant
BPoint=xlineObj.basePoint
Vector=xlineObj.DirectionVector
ActiveX/VBA>AutoCAD >>>
ActiveX/VBA>AutoCAD >>>
BasePointDirectionVector
Ray
(5,0,0)(1,1,0)Ray
SubCh3_EditRay()
DimrayObjAsAcadRay
DimbasePoint(0To2)AsDouble
DimsecondPoint(0To2)AsDouble
'
basePoint(0)=3#:basePoint(1)=3#:basePoint(2)=0#
secondPoint(0)=4#:secondPoint(1)=4#:secondPoint(2)=0#
'Ray
SetrayObj=ThisDrawing.ModelSpace.AddRay_
(basePoint,secondPoint)
ThisDrawing.Application.ZoomAll
'Ray
MsgBox"Thebasepointoftherayis:"&_
rayObj.basePoint(0)&","&_
rayObj.basePoint(1)&","&_
rayObj.basePoint(2)&vbCrLf&_
"Thedirectionalvectorfortherayis:"&_
rayObj.DirectionVector(0)&","&_
rayObj.DirectionVector(1)&","&_
rayObj.DirectionVector(2),,"EditRay"
'
DimnewVector(0To2)AsDouble
newVector(0)=-1
newVector(1)=1
newVector(2)=0
rayObj.DirectionVector=newVector
ThisDrawing.RegenFalse
MsgBox"Thebasepointoftherayis:"&_
rayObj.basePoint(0)&","&_
rayObj.basePoint(1)&","&_
rayObj.basePoint(2)&vbCrLf&_
"Thedirectionalvectorfortherayis:"&_
rayObj.DirectionVector(0)&","&_
rayObj.DirectionVector(1)&","&_
rayObj.DirectionVector(2),,"EditRay"
EndSub
ActiveX/VBA>AutoCAD >>
UtilityUtility
AngleFromXAxisX
AngleToReal
AngleToString
DistanceToReal
CreateTypedArray
PolarPoint
TranslateCoordinates
GetDistance
GetDistance
GetDistance MsgBox
SubCh3_GetDistanceBetweenTwoPoints()
DimreturnDistAsDouble
'
returnDist=ThisDrawing.Utility.GetDistance_
(,"Picktwopoints.")
MsgBox"Thedistancebetweenthetwopointsis:"&returnDist
EndSub
ActiveX/VBA>AutoCAD >>
Area
BooleanArea
“”
ActiveX/VBA>AutoCAD >>>
1. GetPoint
2. AddLightweightPolyline
3. Area
4. Erase
SubCh3_CalculateDefinedArea()
Dimp1AsVariant
Dimp2AsVariant
Dimp3AsVariant
Dimp4AsVariant
Dimp5AsVariant
'
p1=ThisDrawing.Utility.GetPoint(,vbCrLf&"Firstpoint:")
p2=ThisDrawing.Utility.GetPoint(p1,vbCrLf&"Secondpoint:")
p3=ThisDrawing.Utility.GetPoint(p2,vbCrLf&"Thirdpoint:")
p4=ThisDrawing.Utility.GetPoint(p3,vbCrLf&"Fourthpoint:")
p5=ThisDrawing.Utility.GetPoint(p4,vbCrLf&"Fifthpoint:")
'
DimpolyObjAsAcadLWPolyline
Dimvertices(0To9)AsDouble
vertices(0)=p1(0):vertices(1)=p1(1)
vertices(2)=p2(0):vertices(3)=p2(1)
vertices(4)=p3(0):vertices(5)=p3(1)
vertices(6)=p4(0):vertices(7)=p4(1)
vertices(8)=p5(0):vertices(9)=p5(1)
SetpolyObj=ThisDrawing.ModelSpace.AddLightWeightPolyline_
(vertices)
polyObj.Closed=True
ThisDrawing.Application.ZoomAll
'
MsgBox"Theareadefinedbythepointsis"&_
polyObj.Area,,"CalculateDefinedArea"
EndSub
ActiveX/VBA>AutoCAD >
UtilityDocumentAutoCAD
AutoCADGetStringGetPointGetIntegerInitializeUserInput NULL
/ (vbCrLf)
GetStringGetPointGetKeyword
ActiveX/VBA>AutoCAD >>
GetString
GetStringAutoCAD01ENTER
AutoCAD
“”ENTER retVal
SubCh3_GetStringFromUser()
DimretValAsString
retVal=ThisDrawing.Utility.GetString_
(1,vbCrLf&"Enteryourname:")
MsgBox"Thenameenteredwas:"&retVal
EndSub
GetStringInitializeUserInput
ActiveX/VBA>AutoCAD >>
GetPoint
GetPointAutoCADAutoCADInitializeUserInput
SubCh3_GetPointsFromUser()
DimstartPntAsVariant
DimendPntAsVariant
Dimprompt1AsString
Dimprompt2AsString
prompt1=vbCrLf&"Enterthestartpointoftheline:"
prompt2=vbCrLf&"Entertheendpointoftheline:"
'
startPnt=ThisDrawing.Utility.GetPoint(,prompt1)
'
endPnt=ThisDrawing.Utility.GetPoint(startPnt,prompt2)
'
ThisDrawing.ModelSpace.AddLinestartPnt,endPnt
ThisDrawing.Application.ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>
GetKeyword
GetKeywordAutoCADInitializeUserInput
AutoCAD
InitializeUserInput1 NULLENTER
SubCh3_KeyWord()
DimkeyWordAsString
ThisDrawing.Utility.InitializeUserInput1,"LineCircleArc"
keyWord=ThisDrawing.Utility.GetKeyword_
(vbCrLf&"Enteranoption(Line/Circle/Arc):")
MsgBoxkeyWord,,"GetKeywordExample"
EndSub
ENTER NULL
SubCh3_KeyWord2()
DimkeyWordAsString
ThisDrawing.Utility.InitializeUserInput0,"LineCircleArc"
keyWord=ThisDrawing.Utility.GetKeyword_
(vbCrLf&"Enteranoption(Line/Circle/<Arc>):")
IfkeyWord=""ThenkeyWord="Arc"
MsgBoxkeyWord,,"GetKeywordExample"
EndSub
ActiveX/VBA>AutoCAD >>
InitializeUserInputAutoLISPGetAngleGetCornerGetDistanceGetIntegerGetKeywordGetOrientationGetPointGetRealInitializeUserInputGetStringGetInput
InitializeUserInput
AutoCAD
SubCh3_UserInput()
'InitializeUserInput(6)
'
'
'
ThisDrawing.Utility.InitializeUserInput6,"BigSmallRegular"
'
DimpromptStrAsString
promptStr=vbCrLf&"Enterthesizeor(Big/Small/<Regular>):"
'GetInteger
'ENTER
'
'
OnErrorResumeNext
'
DimreturnIntegerAsInteger
returnInteger=ThisDrawing.Utility.GetInteger(promptStr)
'
'GetInput
'returnInteger
IfErr.Number=-2145320928Then
DimreturnStringAsString
Debug.PrintErr.Description
returnString=ThisDrawing.Utility.GetInput()
IfreturnString=""Then'ENTER
returnString="Regular"'
EndIf
Err.Clear
Else'
returnString=returnInteger'
EndIf
'
MsgBoxreturnString,,"InitializeUserInputExample"
EndSub
ActiveX/VBA>AutoCAD >
AutoCAD
SendCommandAutoCADSendCommandASCIIENTERAutoLISPSendCommand
AutoCAD
(2,2,0)4ENTER
SubCh3_SendACommandToAutoCAD()
ThisDrawing.SendCommand"_Circle2,2,04"
ThisDrawing.SendCommand"_zooma"
EndSub
ActiveX/VBA>AutoCAD >
AutoCAD
AutoCAD“”“”“”“”
ActiveX
AutoCAD
DocumentsApplicationDocuments
DocumentsCountAutoCAD Documents.Count=0
AutoCAD Documents.Count>0
AutoCADVBA ThisDrawing ThisDrawing
ThisDrawing
AutoCADAutoCAD
ActiveX/VBA>AutoCAD >
AutoCAD(DXF) TMSATWMFImport
ActiveX/VBA>AutoCAD >
AutoCADExportAutoCADWMFSATEPSDXFBMPExport
WMFSATBMP
EPSDXFExport
DXF
DXFExprt.DXFExportDXFExport
SubCh3_ImportingAndExporting()
'
DimcircleObjAsAcadCircle
DimcenterPt(0To2)AsDouble
DimradiusAsDouble
centerPt(0)=2:centerPt(1)=2:centerPt(2)=0
radius=1
SetcircleObj=ThisDrawing.ModelSpace.AddCircle_
(centerPt,radius)
ThisDrawing.Application.ZoomAll
'
DimssetAsAcadSelectionSet
Setsset=ThisDrawing.SelectionSets.Add("NEWSSET")
'
'AutoCADDXF
DimtempPathAsString
DimexportFileAsString
ConstdxfnameAsString="DXFExprt"
tempPath=_
ThisDrawing.Application.preferences.Files.TempFilePath
exportFile=tempPath&dxfname
ThisDrawing.ExportexportFile,"DXF",sset
'
ThisDrawing.SelectionSets.Item("NEWSSET").Delete
'
ThisDrawing.Application.Documents.Add"acad.dwt"
'
DimimportFileAsString
DiminsertPoint(0To2)AsDouble
DimscalefactorAsDouble
importFile=tempPath&dxfname&".dxf"
insertPoint(0)=0:insertPoint(1)=0:insertPoint(2)=0
scalefactor=2#
'
ThisDrawing.ImportimportFile,insertPoint,scalefactor
ThisDrawing.Application.ZoomAll
EndSub
<$nopage>: <$startrange>:,<$startrange>,<$startrange>:,DXF,,,DXF,<$startrange>:,SelectionSet:,:,<$endrange>:,<$endrange>,<$endrange>:,<$endrange>:,:,:,RemoveItems:,Clear:,Erase:,Delete:,:,,Update:,:,:,,,:,:,:,,:,,,PurgeAll:,:,:,Name:,Add:,,Layer:,:,:,:,,,:,,,Copy,:,CopyObjects,:,:,:,CopyObjects:,Circle:,CopyObjects:,:,:,:,Offset,AddLightweightPolyline:,LightweightPolyline:,Offset:,Offset:,Mirror,:,Mirror:,Erase,MIRRTEXT,Text:,:Text,:,LightweightPolyline:,Mirror:,:,:,ArrayPolar:,:,:,,:,,,:,ArrayRectangular,:,,:,:,SnapRotationAngle,:,:,:,Move:,,Move:,Move:,:,,,Rotate,,Rotate:,Delete:,:,:,ScaleEntity,:,:,:,ScaleEntity:,TransformBy,:,<$nopage>: <$nopage>, <$endrange>:,::,::,::,:,::,:,:,Export:,Import:,::,::,Text:,Text:,Text:,:,:,:,:,:default,:,Add:,TextStyles,TextStyle,TextStyle:,FontFile,BigFontFile:TextStyle,Height,Width,ObliqueAngle,TextGenerationFlag,:,Regen:,Update:,:,TextGenerationFlag,GetFont:,SetFont:,:TrueType,:SHX,:,:TEXTFILL,TrueType,SHX,TEXTFILL,:Unicode,Unicode,:,,FontFile,BigFontFile:,FontFile:,TextStyle:,Text:,TrueType:,Height,Height:,Text:,AddText:,Text:,,,,:,ObliqueAngle,Text:ObliqueAngle,TextGenerationFlag:,Text:,Text:,Text:,TextGenerationFlag,TextGenerationFlag:,Text:,Text:,,Text:,StyleName,Text:,Alignment,InsertionPoint,ObliqueAngle,Rotation,ScaleFactor,TextAlignmentPoint,TextGenerationFlag,TextString,Update:Text,Alignment:,Text:,Text:,SetVariable:,Alignment:,TextAlignmentPoint:,Text:,MIRRTEXT,Text:,ArrayPolar:Text,ArrayRectangular:Text,Copy,Erase,Mirror,Move,Rotate,:,:,<$nopage>
ActiveX/VBA>
AutoCAD
Add
<$nopage>:
ActiveX/VBA>AutoCAD >
AutoCAD ®ActiveXAutomationAutoCAD(1)(2)(3)(4)ActiveXAutomation
NewCreateObjectDimVBVBAAutoCADApplicationAutoCADAutoCADAddAdd< objectname
Point
ActiveX/VBA>AutoCAD >>
ModelSpacePaperSpaceBlock
ModelSpaceModelSpacePaperSpacePaperSpace
SetlineObj=ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)
AcadModelSpace AcadPaperSpace
DimmoSpaceAsAcadModelSpace
DimpaSpaceAsAcadPaperSpace
SetmoSpace=ThisDrawing.ModelSpace
SetpaSpace=ThisDrawing.PaperSpace
SetlineObj=moSpace.AddLine(startPoint,endPoint)
ActiveX/VBA>AutoCAD >>
AutoCAD—CONTINUOUS
AddLine
AddLightweightPolyline
AddMLine
AddPolyline
XY(OCS)OCS
AddLightweightPolyline(2,4)(4,2)(6,4)
SubCh4_AddLightWeightPolyline()
DimplineObjAsAcadLWPolyline
Dimpoints(0To5)AsDouble
'
points(0)=2:points(1)=4
points(2)=4:points(3)=2
points(4)=6:points(5)=4
'
SetplineObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
ThisDrawing.Application.ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>
AutoCADWCS
AddArc
AddCircle
AddEllipse
AddSpline
NURBSB
Spline
(0,0,0)(5,5,0)(10,0,0)(0.5,0.5,0.0)
SubCh4_CreateSpline()
'
'
DimsplineObjAsAcadSpline
DimstartTan(0To2)AsDouble
DimendTan(0To2)AsDouble
DimfitPoints(0To8)AsDouble
'
startTan(0)=0.5:startTan(1)=0.5:startTan(2)=0
endTan(0)=0.5:endTan(1)=0.5:endTan(2)=0
fitPoints(0)=1:fitPoints(1)=1:fitPoints(2)=0
fitPoints(3)=5:fitPoints(4)=5:fitPoints(5)=0
fitPoints(6)=10:fitPoints(7)=0:fitPoints(8)=0
'
SetsplineObj=ThisDrawing.ModelSpace.AddSpline_
(fitPoints,startTan,endTan)
ZoomAll
EndSub
AutoCAD ActiveXandVBAReferenceSplineAddSpline
ActiveX/VBA>AutoCAD >>
Point
PointPoint
PDMODEPDSIZEPointPDMODE02341
326496
PDSIZEPDMODE0105%PDSIZE
PDMODEPDSIZE
PDMODEPDSIZESetVariable
Point
(5,5,0)PointPDMODEPDSIZE
SubCh4_CreatePoint()
DimpointObjAsAcadPoint
Dimlocation(0To2)AsDouble
'
location(0)=5#:location(1)=5#:location(2)=0#
'
SetpointObj=ThisDrawing.ModelSpace.AddPoint(location)
ThisDrawing.SetVariable"PDMODE",34
ThisDrawing.SetVariable"PDSIZE",1
ZoomAll
EndSub
<$nopage>:
ActiveX/VBA>AutoCAD >>
FILLMODEFILLMODE
AddSolid
“”
(0,0,0)(5,0,0)(5,8,0)(0,8,0)
SubCh4_CreateSolid()
DimsolidObjAsAcadSolid
Dimpoint1(0To2)AsDouble
Dimpoint2(0To2)AsDouble
Dimpoint3(0To2)AsDouble
Dimpoint4(0To2)AsDouble
'
point1(0)=0#:point1(1)=0#:point1(2)=0#
point2(0)=5#:point2(1)=0#:point2(2)=0#
point3(0)=5#:point3(1)=8#:point3(2)=0#
point4(0)=0#:point4(1)=8#:point4(2)=0#
'
SetsolidObj=ThisDrawing.ModelSpace.AddSolid_
(point1,point2,point3,point4)
ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>
“”
ActiveX/VBA>AutoCAD >>>
AddRegionAutoCADAddRegion
RegionVBA UBound LBound
UBound(objRegions)-LBound(objRegions)+1
objRegionsAddRegion
SubCh4_CreateRegion()
'
'
Dimcurves(0To0)AsAcadCircle
'
'
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2
center(1)=2
center(2)=0
radius=5#
Setcurves(0)=ThisDrawing.ModelSpace.AddCircle_
(center,radius)
'
DimregionObjAsVariant
regionObj=ThisDrawing.ModelSpace.AddRegion(curves)
ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>>
Boolean
BooleanBooleanBoolean
SubCh4_CreateCompositeRegions()
'
'
DimRoomObjects(0To1)AsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=4
center(1)=4
center(2)=0
radius=2#
SetRoomObjects(0)=ThisDrawing.ModelSpace._
AddCircle(center,radius)
radius=1#
SetRoomObjects(1)=ThisDrawing.ModelSpace._
AddCircle(center,radius)
'
DimregionsAsVariant
regions=ThisDrawing.ModelSpace.AddRegion(RoomObjects)
'
DimRoundRoomObjAsAcadRegion
DimPillarObjAsAcadRegion
Ifregions(0).Area>regions(1).AreaThen
'
SetRoundRoomObj=regions(0)
SetPillarObj=regions(1)
'
SetPillarObj=regions(0)
SetRoundRoomObj=regions(1)
EndIf
'
'
RoundRoomObj.BooleanacSubtraction,PillarObj
'Area
MsgBox"Thecarpetareais:"&RoundRoomObj.Area
EndSub
Area
ActiveX/VBA>AutoCAD >>>
Boolean acUnion acSubtraction
ActiveX/VBA>AutoCAD >>>
acIntersection
ActiveX/VBA>AutoCAD >>
Hatch
“”Hatch
ActiveX/VBA>AutoCAD >>>
Hatch
HatchHatch
HatchAddHatch
ActiveX/VBA>AutoCAD >>>
AddHatchAssociativity TRUEAddHatchAssociativity FALSE
ActiveX/VBA>AutoCAD >>>
AutoCAD
AutoCADAutoCADAutoCAD
Hatch
acHatchPatternTypePredefined
acad.pat
acHatchPatternTypeUserDefined
acHatchPatternTypeCustomDefined
PAT acad.pat
ActiveX/VBA>AutoCAD >>>
Hatch
AppendOuterLoop
AppendInnerLoop
HatchHatchStyleHatchStyle
HatchStyle
Normal AutoCADHatchStyle
Outer
Ignore
Evaluate
Hatch
SubCh4_CreateHatch()
DimhatchObjAsAcadHatch
DimpatternNameAsString
DimPatternTypeAsLong
DimbAssociativityAsBoolean
'
patternName="ANSI31"
PatternType=0
bAssociativity=True
'Hatch
SethatchObj=ThisDrawing.ModelSpace.AddHatch_
(PatternType,patternName,bAssociativity)
'
DimouterLoop(0To0)AsAcadEntity
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=3:center(1)=3:center(2)=0
radius=1
SetouterLoop(0)=ThisDrawing.ModelSpace._
AddCircle(center,radius)
'Hatch
'
hatchObj.AppendOuterLoop(outerLoop)
hatchObj.Evaluate
ThisDrawing.RegenTrue
EndSub
<$startrange>:,<$startrange>,<$startrange>:,DXF,,,DXF,<$startrange>:,SelectionSet:,:,<$endrange>:,<$endrange>,<$endrange>:,<$endrange>:,:,:,RemoveItems:,Clear:,Erase:,Delete:,">
ActiveX/VBA>AutoCAD >
SelectionSets
ActiveX/VBA>AutoCAD >>
Add—
AutoCADDelete
ThisDrawing.SelectionSets.Item("NewSelectionSet").Delete
SubCh4_CreateSelectionSet()
DimselectionSet1AsAcadSelectionSet
SetselectionSet1=ThisDrawing.SelectionSets._
Add("NewSelectionSet")
EndSub
ActiveX/VBA>AutoCAD >>
AddItems
Select
SelectAtPoint
SelectByPolygon
SelectOnScreen
SubCh4_AddToASelectionSet()
'
DimssetAsAcadSelectionSet
Setsset=ThisDrawing.SelectionSets.Add("SS1")
'
'
'
sset.SelectOnScreen
EndSub
<$startrange>:,<$startrange>,<$startrange>:,DXF,,,DXF,<$startrange>:,SelectionSet:,:,<$endrange>:,<$endrange>,<$endrange>:,<$endrange>:,">
ActiveX/VBA>AutoCAD >>
AutoCADSelectSelectAtPointSelectByPolygonSelectOnScreen
<$startrange>:,SelectionSet:,:,">
ActiveX/VBA>AutoCAD >>>
DXF
DXF
DXF
0“Line”“Circle”“Arc”
2
8“Layer0”
600=1=
620256BYBLOCK256BYLAYER
67 /0=1=
DXF DXF“”
FilterType(0)=0'
FilterData(0)="Circle"'“Circle”
Circle
SubCh4_FilterMtext()
DimsstextAsAcadSelectionSet
DimFilterType(0)AsInteger
DimFilterData(0)AsVariant
Setsstext=ThisDrawing.SelectionSets.Add("SS2")
FilterType(0)=0
FilterData(0)="Circle"
sstext.SelectOnScreenFilterType,FilterData
EndSub
ActiveX/VBA>AutoCAD >>>
0FilterTypeFilterData
SubCh4_FilterBlueCircleOnLayer0()
DimsstextAsAcadSelectionSet
DimFilterType(1)AsInteger
DimFilterData(1)AsVariant
Setsstext=ThisDrawing.SelectionSets.Add("SS4")
FilterType(0)=0
FilterData(0)="Circle"
FilterType(1)=8
FilterData(1)="0"
sstext.SelectOnScreenFilterType,FilterData
EndSub
ActiveX/VBA>AutoCAD >>>
AutoCAD
-4DXF
"*"
"="
"!="
"/="
"<>"
"<"
"<="
">"
">="
"&" AND
"&="
-4(<)(>)
"<AND"
"AND>"
"<OR" "OR>"
"<XOR"
"XOR>"
"<NOT"
"NOT>"
5.0
5.0
SubCh4_FilterRelational()
DimsstextAsAcadSelectionSet
DimFilterType(2)AsInteger
DimFilterData(2)AsVariant
Setsstext=ThisDrawing.SelectionSets.Add("SS5")
FilterType(0)=0
FilterData(0)="Circle"
FilterType(1)=-4
FilterData(1)=">="
FilterType(2)=40
FilterData(2)=5#
sstext.SelectOnScreenFilterType,FilterData
EndSub
TextMtext
TextMtext
SubCh4_FilterOrTest()
DimsstextAsAcadSelectionSet
DimFilterType(3)AsInteger
DimFilterData(3)AsVariant
Setsstext=ThisDrawing.SelectionSets.Add("SS6")
FilterType(0)=-4
FilterData(0)="<or"
FilterType(1)=0
FilterData(1)="TEXT"
FilterType(2)=0
FilterData(2)="MTEXT"
FilterType(3)=-4
FilterData(3)="or>"
sstext.SelectOnScreenFilterType,FilterData
EndSub
ActiveX/VBA>AutoCAD >>>
AutoCAD
#
@
.
*
?
~
[...]
[~...]
-
,
`
(`)“*U2”
FilterType(0)=2
FilterData(0)="`*U2"
Mtext
“The”SelectByPolygon
SubCh4_FilterPolygonWildcard()
DimsstextAsAcadSelectionSet
DimFilterType(1)AsInteger
DimFilterData(1)AsVariant
DimpointsArray(0To11)AsDouble
DimmodeAsInteger
mode=acSelectionSetWindowPolygon
pointsArray(0)=-12#:pointsArray(1)=-7#:pointsArray(2)=0
pointsArray(3)=-12#:pointsArray(4)=10#:pointsArray(5)=0
pointsArray(6)=10#:pointsArray(7)=10#:pointsArray(8)=0
pointsArray(9)=10#:pointsArray(10)=-7#:pointsArray(11)=0
Setsstext=ThisDrawing.SelectionSets.Add("SS10")
FilterType(0)=0
FilterData(0)="MTEXT"
FilterType(1)=1
FilterData(1)="*The*"
sstext.SelectByPolygonmode,pointsArray,FilterType,FilterData
EndSub
<$endrange>:,<$endrange>,<$endrange>:,<$endrange>:,">
ActiveX/VBA>AutoCAD >>>
AutoCAD
“MY_APP”
SubCh4_FilterXdata()
DimsstextAsAcadSelectionSet
DimmodeAsInteger
DimpointsArray(0To11)AsDouble
mode=acSelectionSetWindowPolygon
pointsArray(0)=-12#:pointsArray(1)=-7#:pointsArray(2)=0
pointsArray(3)=-12#:pointsArray(4)=10#:pointsArray(5)=0
pointsArray(6)=10#:pointsArray(7)=10#:pointsArray(8)=0
pointsArray(9)=10#:pointsArray(10)=-7#:pointsArray(11)=0
DimFilterType(1)AsInteger
DimFilterData(1)AsVariant
Setsstext=ThisDrawing.SelectionSets.Add("SS9")
FilterType(0)=0
FilterData(0)="Circle"
FilterType(1)=1001
FilterData(1)="MY_APP"
sstext.SelectByPolygonmode,pointsArray,FilterType,FilterData
EndSub
ActiveX/VBA>AutoCAD >>
“SS10”
SubGetObjInSet()
DimselsetAsAcadSelectionSet
Setselset=ThisDrawing.SelectionSets("SS10")
MsgBox("Selectionset"&selset.Name&"contains"&_
selset.Count&"items")
EndSub
SelectionSetsForEachSelectionSets
SubListSelectionSets()
DimselsetCollectionAsAcadSelectionSets
DimselsetAsAcadSelectionSet
DimentAsObject
Dimi,jAsInteger
SetselsetCollection=ThisDrawing.SelectionSets
'
i=0
ForEachselsetInselsetCollection
MsgBox"Selectionset"&CStr(i)&"is:"&selset.Name
'
j=0
ForEachentInselset
MsgBox"Item"&CStr(j+1)&"in"&selset.Name_
&"is:"&ent.EntityName
j=j+1
Next
i=i+1
Next
EndSub
ActiveX/VBA>AutoCAD >>
RemoveItems
RemoveItems
Clear
Clear
Erase
Erase
Delete
DeleteDelete
<$nopage>:
ActiveX/VBA>AutoCAD >
Update
ActiveX/VBA>AutoCAD >>
AutoCAD
ActiveX/VBA>AutoCAD >>>
PurgeAll
ThisDrawing.PurgeAll
ActiveX/VBA>AutoCAD >>>
AutoCAD0CONTINUOUS
255AutoCADMicrosoftWindowsAutoCAD(<>)(/\)(")(:)(;)(?)(,)(*)(|)(=)(')Unicode
Name
“NewLayer”“MyLayer”
SubCh4_RenamingLayer()
'
DimlayerObjAsAcadLayer
SetlayerObj=ThisDrawing.Layers.Add("NewLayer")
'
layerObj.Name="MyLayer"
EndSub
ActiveX/VBA>AutoCAD >>
“”
ActiveX/VBA>AutoCAD >>>
Copy
ActiveX/VBA>AutoCAD >>>
CopyObjectsCopy
CopyObjectsOwner
Circle
CircleCopyObjects
SubCh4_CopyCircleObjects()
DimDOC1AsAcadDocument
DimcircleObj1AsAcadCircle
DimcircleObj2AsAcadCircle
DimcircleObj1CopyAsAcadCircle
DimcircleObj2CopyAsAcadCircle
DimcenterPoint(0To2)AsDouble
Dimradius1AsDouble
Dimradius2AsDouble
Dimradius1CopyAsDouble
Dimradius2CopyAsDouble
DimobjCollection(0To1)AsObject
DimretObjectsAsVariant
'Circle
centerPoint(0)=0:centerPoint(1)=0:centerPoint(2)=0
radius1=5#:radius2=7#
radius1Copy=1#:radius2Copy=2#
'
SetDOC1=ThisDrawing.Application.Documents.Add
'
SetcircleObj1=DOC1.ModelSpace.AddCircle_
(centerPoint,radius1)
SetcircleObj2=DOC1.ModelSpace.AddCircle_
(centerPoint,radius2)
ZoomAll
'
'CopyObjects
SetobjCollection(0)=circleObj1
SetobjCollection(1)=circleObj2
'
'
retObjects=DOC1.CopyObjects(objCollection)
'
'
SetcircleObj1Copy=retObjects(0)
SetcircleObj2Copy=retObjects(1)
circleObj1Copy.radius=radius1Copy
circleObj1Copy.Color=acRed
circleObj2Copy.radius=radius2Copy
circleObj2Copy.Color=acRed
ZoomAll
EndSub
CircleCopyObjects
SubCh4_Copy_to_New_Drawing()
DimDOC0AsAcadDocument
DimcircleObj1AsAcadCircle,circleObj2AsAcadCircle
DimcenterPoint(0To2)AsDouble
Dimradius1AsDouble,radius2AsDouble
Dimradius1CopyAsDouble,radius2CopyAsDouble
DimobjCollection(0To1)AsObject
DimretObjectsAsVariant
'Circle
centerPoint(0)=0:centerPoint(1)=0:centerPoint(2)=0
radius1=5#:radius2=7#
radius1Copy=1#:radius2Copy=2#
'
SetcircleObj1=ThisDrawing.ModelSpace.AddCircle_
(centerPoint,radius1)
SetcircleObj2=ThisDrawing.ModelSpace.AddCircle_
(centerPoint,radius2)
ThisDrawing.Application.ZoomAll
'
SetDOC0=ThisDrawing.Application.ActiveDocument
'
'
'
'CopyObjects
SetobjCollection(0)=circleObj1
SetobjCollection(1)=circleObj2
'
DimDoc1MSpaceAsAcadModelSpace
DimDOC1AsAcadDocument
SetDOC1=Documents.Add
SetDoc1MSpace=DOC1.ModelSpace
'A
'
retObjects=DOC0.CopyObjects(objCollection,Doc1MSpace)
DimcircleObj1CopyAsAcadCircle,circleObj2CopyAsAcadCircle
'
'
SetcircleObj1Copy=retObjects(0)
SetcircleObj2Copy=retObjects(1)
circleObj1Copy.radius=radius1Copy
circleObj1Copy.Color=acRed
circleObj2Copy.radius=radius2Copy
circleObj2Copy.Color=acRed
ThisDrawing.Application.ZoomAll
MsgBox"Circlescopied."
EndSub
ActiveX/VBA>AutoCAD >>
OffsetAutoCAD“”“”AutoCAD X,Y,ZWCS
“”
SubCh4_OffsetPolyline()
'
DimplineObjAsAcadLWPolyline
Dimpoints(0To11)AsDouble
points(0)=1:points(1)=1
points(2)=1:points(3)=2
points(4)=2:points(5)=2
points(6)=3:points(7)=2
points(8)=4:points(9)=4
points(10)=4:points(11)=1
SetplineObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
plineObj.Closed=True
ZoomAll
'
DimoffsetObjAsVariant
offsetObj=plineObj.Offset(0.25)
ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>
MirrorUCS XY
AutoCADmirrorErase
TextMIRRTEXTMIRRTEXT(1)TextMIRRTEXT(0)GetVariableSetVariableMIRRTEXT
Viewport
“”
SubCh4_MirrorPolyline()
'
DimplineObjAsAcadLWPolyline
Dimpoints(0To11)AsDouble
points(0)=1:points(1)=1
points(2)=1:points(3)=2
points(4)=2:points(5)=2
points(6)=3:points(7)=2
points(8)=4:points(9)=4
points(10)=4:points(11)=1
SetplineObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
plineObj.Closed=True
ZoomAll
'
Dimpoint1(0To2)AsDouble
Dimpoint2(0To2)AsDouble
point1(0)=0:point1(1)=4.25:point1(2)=0
point2(0)=4:point2(1)=4.25:point2(2)=0
'
DimmirrorObjAsAcadLWPolyline
SetmirrorObj=plineObj.Mirror(point1,point2)
DimcolAsNewAcadAcCmColor
Callcol.SetRGB(125,175,235)
mirrorObj.TrueColor=col
ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>
“”
ActiveX/VBA>AutoCAD >>>
ArrayPolar10WCS
AutoCADAutoCAD
AutoCADARRAY“”
(4,4,0)180
SubCh4_ArrayingACircle()
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2#:center(1)=2#:center(2)=0#
radius=1
SetcircleObj=ThisDrawing.ModelSpace._
AddCircle(center,radius)
ZoomAll
'
DimnoOfObjectsAsInteger
DimangleToFillAsDouble
DimbasePnt(0To2)AsDouble
noOfObjects=4
angleToFill=3.14'180
basePnt(0)=4#:basePnt(1)=4#:basePnt(2)=0#
'(3,3,0)
'
'
DimretObjAsVariant
retObj=circleObj.ArrayPolar_
(noOfObjects,angleToFill,basePnt)
ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>>
ArrayRectangular
11
AutoCAD0 X YSnapRotationAngle
55
SubCh4_ArrayRectangularExample()
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2#:center(1)=2#:center(2)=0#
radius=0.5
SetcircleObj=ThisDrawing.ModelSpace._
AddCircle(center,radius)
ZoomAll
'
DimnumberOfRowsAsLong
DimnumberOfColumnsAsLong
DimnumberOfLevelsAsLong
DimdistanceBwtnRowsAsDouble
DimdistanceBwtnColumnsAsDouble
DimdistanceBwtnLevelsAsDouble
numberOfRows=5
numberOfColumns=5
numberOfLevels=2
distanceBwtnRows=1
distanceBwtnColumns=1
distanceBwtnLevels=1
'
DimretObjAsVariant
retObj=circleObj.ArrayRectangular_
(numberOfRows,numberOfColumns,numberOfLevels,_
distanceBwtnRows,distanceBwtnColumns,distanceBwtnLevels)
ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>
“”
ActiveX/VBA>AutoCAD >>>
Move
X
SubCh4_MoveCircle()
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2#:center(1)=2#:center(2)=0#
radius=0.5
SetcircleObj=ThisDrawing.ModelSpace._
AddCircle(center,radius)
ZoomAll
'
'x
'
Dimpoint1(0To2)AsDouble
Dimpoint2(0To2)AsDouble
point1(0)=0:point1(1)=0:point1(2)=0
point2(0)=2:point2(1)=0:point2(2)=0
'
circleObj.Movepoint1,point2
circleObj.Update
EndSub
ActiveX/VBA>AutoCAD >>
RotateWCS
“”
(4,4.25,0)45
SubCh4_RotatePolyline()
'
DimplineObjAsAcadLWPolyline
Dimpoints(0To11)AsDouble
points(0)=1:points(1)=2
points(2)=1:points(3)=3
points(4)=2:points(5)=3
points(6)=3:points(7)=3
points(8)=4:points(9)=4
points(10)=4:points(11)=2
SetplineObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
plineObj.Closed=True
ZoomAll
'(4,4.25,0)
'45
DimbasePoint(0To2)AsDouble
DimrotationAngleAsDouble
basePoint(0)=4:basePoint(1)=4.25:basePoint(2)=0
rotationAngle=0.7853981'45degrees
'
plineObj.RotatebasePoint,rotationAngle
plineObj.Update
EndSub
ActiveX/VBA>AutoCAD >>
Delete
ActiveXAutomationDeleteModelSpaceLayersDictionaries
SubCh4_DeletePolyline()
'
DimlwpolyObjAsAcadLWPolyline
Dimvertices(0To5)AsDouble
vertices(0)=2:vertices(1)=4
vertices(2)=4:vertices(3)=2
vertices(4)=6:vertices(5)=4
SetlwpolyObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(vertices)
ZoomAll
'
lwpolyObj.Delete
ThisDrawing.RegenacActiveViewport
EndSub
ActiveX/VBA>AutoCAD >>
ScaleEntity XY ZWCS101
“”
0.5
SubCh4_ScalePolyline()
'
DimplineObjAsAcadLWPolyline
Dimpoints(0To11)AsDouble
points(0)=1:points(1)=2
points(2)=1:points(3)=3
points(4)=2:points(5)=3
points(6)=3:points(7)=3
points(8)=4:points(9)=4
points(10)=4:points(11)=2
SetplineObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
plineObj.Closed=True
ZoomAll
'
DimbasePoint(0To2)AsDouble
DimscalefactorAsDouble
basePoint(0)=4:basePoint(1)=4.25:basePoint(2)=0
scalefactor=0.5
'
plineObj.ScaleEntitybasePoint,scalefactor
plineObj.Update
EndSub
<$nopage>:
ActiveX/VBA>AutoCAD >>
4x4TransformBy
R=T=
R00 R01 R02 T0
R10 R11 R12 T1
R20 R21 R22 T2
0 0 0 1
tMatrix(0,0,0)90
tMatrix(0,0)=0.0
tMatrix(0,1)=-1.0
tMatrix(0,2)=0.0
tMatrix(0,3)=0.0
tMatrix(1,0)=1.0
tMatrix(1,1)=0.0
tMatrix(1,2)=0.0
tMatrix(1,3)=0.0
tMatrix(2,0)=0.0
tMatrix(2,1)=0.0
tMatrix(2,2)=1.0
tMatrix(2,3)=0.0
tMatrix(3,0)=0.0
tMatrix(3,1)=0.0
tMatrix(3,2)=0.0
tMatrix(3,3)=1.0
TransformBy( tMatrix)( anObj)
anObj.TransformBytMatrix
90
SubCh4_TransformBy()
'
DimlineObjAsAcadLine
DimstartPt(0To2)AsDouble
DimendPt(0To2)AsDouble
startPt(0)=2
startPt(1)=1
startPt(2)=0
endPt(0)=5
endPt(1)=1
endPt(2)=0
SetlineObj=ThisDrawing.ModelSpace._
AddLine(startPt,endPt)
ZoomAll
'transMat
'
'(0,0,0)90
DimtransMat(0To3,0To3)AsDouble
transMat(0,0)=0#:transMat(0,1)=-1#
transMat(0,2)=0#:transMat(0,3)=0#
transMat(1,0)=1#:transMat(1,1)=0#
transMat(1,2)=0#:transMat(1,3)=0#
transMat(2,0)=0#:transMat(2,1)=0#
transMat(2,2)=1#:transMat(2,3)=0#
transMat(3,0)=0#:transMat(3,1)=0#
transMat(3,2)=0#:transMat(3,3)=1#
'
lineObj.TransformBytransMat
lineObj.Update
EndSub
(0,0,0)90
0.0 -1.0 0.0 0.0
1.0 0.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
(5,5,0)45
0.707107 -0.707107 0.0 5.0
0.707107 0.707107 0.0 -2.071068
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
(10,10,0)
1.0 0.0 0.0 10.0
0.0 1.0 0.0 10.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
(0,0,0)10,10
10.0 0.0 0.0 0.0
0.0 10.0 0.0 0.0
0.0 0.0 10.0 0.0
0.0 0.0 0.0 1.0
(2,2,0)10,10
10.0 0.0 0.0 -18.0
0.0 10.0 0.0 -18.0
0.0 0.0 10.0 0.0
0.0 0.0 0.0 1.0
ActiveX/VBA>AutoCAD >>
StartPointEndPointStartAngleEndAngleUpdate
“”
SubCh4_LengthenLine()
'
DimlineObjAsAcadLine
DimstartPoint(0To2)AsDouble
DimendPoint(0To2)AsDouble
startPoint(0)=0
startPoint(1)=0
startPoint(2)=0
endPoint(0)=1
endPoint(1)=1
endPoint(2)=1
SetlineObj=ThisDrawing.ModelSpace._
AddLine(startPoint,endPoint)
lineObj.Update
'4,4,4
'
endPoint(0)=4
endPoint(1)=4
endPoint(2)=4
lineObj.endPoint=endPoint
lineObj.Update
EndSub
ActiveX/VBA>AutoCAD >>
“”
SubCh4_ExplodePolyline()
DimplineObjAsAcadLWPolyline
Dimpoints(0To11)AsDouble
'
points(0)=1:points(1)=1
points(2)=1:points(3)=2
points(4)=2:points(5)=2
points(6)=3:points(7)=2
points(8)=4:points(9)=4
points(10)=4:points(11)=1
'
SetplineObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
'
'
plineObj.SetBulge3,-0.5
plineObj.Update
'
DimexplodedObjectsAsVariant
explodedObjects=plineObj.Explode
'
'
'
DimIAsInteger
ForI=0ToUBound(explodedObjects)
explodedObjects(I).Update
MsgBox"ExplodedObject"&I&":"&_
explodedObjects(I).ObjectName
explodedObjects(I).Update
Next
EndSub
ActiveX/VBA>AutoCAD >>
AutoCADBSPLINETYPE
LightweightPolylinePolyline
Closed
Coordinates
AddVertex
SetBulge
SetWidth
“”
SubCh4_EditPolyline()
DimplineObjAsAcadLWPolyline
Dimpoints(0To9)AsDouble
'
points(0)=1:points(1)=1
points(2)=1:points(3)=2
points(4)=2:points(5)=2
points(6)=3:points(7)=2
points(8)=4:points(9)=4
'
SetplineObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
'3
plineObj.SetBulge3,-0.5
'
DimnewVertex(0To1)AsDouble
newVertex(0)=4:newVertex(1)=1
'
plineObj.AddVertex5,newVertex
'
plineObj.SetWidth4,0.1,0.5
'
plineObj.Closed=True
plineObj.Update
EndSub
ActiveX/VBA>AutoCAD >>
ControlPoints
EndTangent
FitPoints
FitTolerance
Knots
StartTangent
AddFitPoint
DeleteFitPoint
ElevateOrder
GetFitPoint
FitPoints
Reverse
SetControlPoint
SetFitPoint
FitPoints
SetWeight
Area
Closed
IsPeriodic
IsPlanar
IsRational
NumberOfControlPoints
NumberOfFitPoints
“”
SubCh4_ChangeSplineControlPoint()
'
DimsplineObjAsAcadSpline
DimstartTan(0To2)AsDouble
DimendTan(0To2)AsDouble
DimfitPoints(0To8)AsDouble
startTan(0)=0.5:startTan(1)=0.5:startTan(2)=0
endTan(0)=0.5:endTan(1)=0.5:endTan(2)=0
fitPoints(0)=1:fitPoints(1)=1:fitPoints(2)=0
fitPoints(3)=5:fitPoints(4)=5:fitPoints(5)=0
fitPoints(6)=10:fitPoints(7)=0:fitPoints(8)=0
SetsplineObj=ThisDrawing.ModelSpace._
AddSpline(fitPoints,startTan,endTan)
splineObj.Update
'
DimcontrolPoint(0To2)AsDouble
controlPoint(0)=0
controlPoint(1)=3
controlPoint(2)=0
splineObj.SetControlPoint0,controlPoint
splineObj.Update
EndSub
ActiveX/VBA>AutoCAD >>
AssociativeHatchHatchAddHatch
Evaluate
“”
ActiveX/VBA>AutoCAD >>>
AppendInnerLoop
AppendOuterLoop
InsertLoopAt
SubCh4_AppendInnerLoopToHatch()
DimhatchObjAsAcadHatch
DimpatternNameAsString
DimPatternTypeAsLong
DimbAssociativityAsBoolean
'
patternName="ANSI31"
PatternType=0
bAssociativity=True
SethatchObj=ThisDrawing.ModelSpace._
AddHatch(PatternType,patternName,bAssociativity)
'
DimouterLoop(0To1)AsAcadEntity
Dimcenter(0To2)AsDouble
DimradiusAsDouble
DimstartAngleAsDouble
DimendAngleAsDouble
center(0)=5:center(1)=3:center(2)=0
radius=3
startAngle=0
endAngle=3.141592
SetouterLoop(0)=ThisDrawing.ModelSpace._
AddArc(center,radius,startAngle,endAngle)
SetouterLoop(1)=ThisDrawing.ModelSpace._
AddLine(outerLoop(0).startPoint,outerLoop(0).endPoint)
'Hatch
hatchObj.AppendOuterLoop(outerLoop)
'
DiminnerLoop(0)AsAcadEntity
center(0)=5:center(1)=4.5:center(2)=0
radius=1
SetinnerLoop(0)=ThisDrawing.ModelSpace._
AddCircle(center,radius)
'
hatchObj.AppendInnerLoop(innerLoop)
'
hatchObj.Evaluate
ThisDrawing.RegenTrue
EndSub
ActiveX/VBA>AutoCAD >>>
AutoCAD“”“”
PatternAngle
PatternDouble
PatternName
PatternScale
PatternSpace
SetPattern
2
SubCh4_ChangeHatchPatternSpace()
DimhatchObjAsAcadHatch
DimpatternNameAsString
DimPatternTypeAsLong
DimbAssociativityAsBoolean
'
patternName="ANSI31"
PatternType=0
bAssociativity=True
'Hatch
SethatchObj=ThisDrawing.ModelSpace._
AddHatch(PatternType,patternName,bAssociativity)
'
DimouterLoop(0To0)AsAcadEntity
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=5
center(1)=3
center(2)=0
radius=3
SetouterLoop(0)=ThisDrawing.ModelSpace._
AddCircle(center,radius)
hatchObj.AppendOuterLoop(outerLoop)
hatchObj.Evaluate
'2
'
hatchObj.patternSpace=hatchObj.patternSpace+2
hatchObj.Evaluate
ThisDrawing.RegenTrue
EndSub
ActiveX/VBA>AutoCAD >
“”
ActiveX/VBA>AutoCAD > >
CENTER
LayersLinetypes
“”
ActiveX/VBA>AutoCAD > >>
LayersLinetypes
Layers
Layers
SubCh4_IteratingLayers()
DimlayerNamesAsString
DimentryAsAcadLayer
layerNames=""
ForEachentryInThisDrawing.Layers
layerNames=layerNames+entry.Name+vbCrLf
Next
MsgBox"Thelayersinthisdrawingare:"+_
vbCrLf+layerNames
EndSub
ActiveX/VBA>AutoCAD > >>
LayersAddLayers
Name($)(-)(_)
“”
SubCh4_NewLayer()
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2:center(1)=2:center(2)=0
radius=1
SetcircleObj=ThisDrawing.ModelSpace._
AddCircle(center,radius)
'
DimcolAsNewAcadAcCmColor
col.ColorMethod=AutoCAD.acColorMethodForeground
'
DimlayColorAsAcadAcCmColor
SetlayColor=
AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")
CalllayColor.SetRGB(122,199,25)
ThisDrawing.ActiveLayer.TrueColor=layColor
col.ColorMethod=AutoCAD.acColorMethodByLayer
'“”
'
'
circleObj.Color=acByLayer
circleObj.Update
EndSub
ActiveX/VBA>AutoCAD > >>
ActiveLayer
DimnewlayerAsAcadLayer
Setnewlayer=ThisDrawing.Layers.Add("LAYER1")
ThisDrawing.ActiveLayer=newlayer
ActiveX/VBA>AutoCAD > >>
AutoCAD
LayerOn TRUE FALSE
SubCh4_LayerInvisible()
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2:center(1)=2:center(2)=0
radius=1
SetcircleObj=ThisDrawing.ModelSpace._
AddCircle(center,radius)
'“ABC”
DimlayerObjAsAcadLayer
SetlayerObj=ThisDrawing.Layers.Add("ABC")
'“ABC”
circleObj.Layer="ABC"
circleObj.Update
'“ABC”
layerObj.LayerOn=False
ThisDrawing.RegenacActiveViewport
EndSub
ActiveX/VBA>AutoCAD > >>
AutoCAD“”AutoCAD
Freeze TRUE FALSE
“ABC”
SubCh4_LayerFreeze()
'“ABC”
DimlayerObjAsAcadLayer
SetlayerObj=ThisDrawing.Layers.Add("ABC")
'“ABC”
layerObj.Freeze=True
EndSub
ActiveX/VBA>AutoCAD > >>
Lock TRUE FALSE
“ABC”
SubCh4_LayerLock()
'“ABC”
DimlayerObjAsAcadLayer
SetlayerObj=ThisDrawing.Layers.Add("ABC")
'“ABC”
layerObj.Lock=True
EndSub
ActiveX/VBA>AutoCAD > >>
AcCmColorRGBACI1255
TrueColor
BYBLOCKBYLAYER
acByBlockAutoCAD
acByLayer
ActiveX/VBA>AutoCAD > >>
Linetype
ActiveX/VBA>AutoCAD > >>
Delete
0
DEFPOINTS
ActiveX/VBA>AutoCAD > >
AcCmColorAcCmColorRGBAcCmColor
AutoCAD(ACI)1255
ACIACI25517
17
1
2
3
4
5
6
7 /
8255(7)
“”
ActiveX/VBA>AutoCAD > >
LINLoad
“”
AutoCAD
AutoCAD
acad.lin“CENTER”
SubCh4_LoadLinetype()
OnErrorGoToERRORHANDLER
DimlinetypeNameAsString
linetypeName="CENTER"
'acad.lin“CENTER”
ThisDrawing.Linetypes.LoadlinetypeName,"acad.lin"
ExitSub
ERRORHANDLER:
MsgBoxErr.Description
EndSub
ActiveX/VBA>AutoCAD > >>
ActiveLinetype
ThisDrawing.ActiveLinetype=ThisDrawing._
Linetypes.Item("CONTINUOUS")
“”
ActiveX/VBA>AutoCAD > >>
NameLIN
ActiveX/VBA>AutoCAD > >>
DeleteCONTINUOUS
“”
ActiveX/VBA>AutoCAD > >>
ASCIIDescription
47
ThisDrawing.ActiveLinetype.Description="ExteriorWall"
ActiveX/VBA>AutoCAD > >>
AutoCAD1.0
LinetypeScale
CELTSCALELTSCALEAutoCADActiveXAutomationSetVariable
“”
SubCh4_ChangeLinetypeScale()
'
SetcurrLineType=ThisDrawing.ActiveLinetype
'Border
'
'Border
OnErrorResumeNext'
ThisDrawing.ActiveLinetype=ThisDrawing.Linetypes.Item("BORDER")
IfErr.Number=-2145386476Then
'
ThisDrawing.Linetypes.Load"BORDER","acad.lin"
ThisDrawing.ActiveLinetype=_
ThisDrawing.Linetypes.Item("BORDER")
EndIf
OnErrorGoTo0'
'Circle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
DimcircleObjAsAcadCircle
center(0)=2
center(1)=2
center(2)=0
radius=4
SetcircleObj=ThisDrawing.ModelSpace.AddCircle(center,radius)
circleObj.Update
MsgBox("Hereisthecirclewiththeoriginallinetype")
'3
circleObj.LinetypeScale=3#
circleObj.Update
MsgBox("Hereisthecirclewiththenewlinetype")
'
ThisDrawing.ActiveLinetype=currLineType
EndSub
ActiveX/VBA>AutoCAD > >
ActiveX/VBA>AutoCAD > > >
LayerLayer
“ABC”
SubCh4_MoveObjectNewLayer()
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2:center(1)=2:center(2)=0
radius=1
SetcircleObj=ThisDrawing.ModelSpace._
AddCircle(center,radius)
'“ABC”
DimlayerObjAsAcadLayer
SetlayerObj=ThisDrawing.Layers.Add("ABC")
'“ABC”
circleObj.Layer="ABC"
circleObj.Update
EndSub
ActiveX/VBA>AutoCAD > > >
TrueColorAcCmColorRGBACI1255RGB
SubCh4_ColorCircle()
DimcolorAsAcadAcCmColor
Setcolor=_
AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")
Callcolor.SetRGB(80,100,244)
DimcircleObjAsAcadCircle
DimcenterPoint(0To2)AsDouble
DimradiusAsDouble
centerPoint(0)=0#:centerPoint(1)=0#:centerPoint(2)=0#
radius=5#
SetcircleObj=_
ThisDrawing.ModelSpace.AddCircle(centerPoint,radius)
circleObj.TrueColor=color
ZoomAll
EndSub
ActiveX/VBA>AutoCAD > > >
LinetypeLinetype
Load
“”
acad.lin“CENTER”“CENTER”
SubCh4_ChangeCircleLinetype()
OnErrorResumeNext
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2:center(1)=2:center(2)=0
radius=1
SetcircleObj=ThisDrawing.ModelSpace._
AddCircle(center,radius)
DimlinetypeNameAsString
linetypeName="CENTER"
'acad.lin“CENTER”
ThisDrawing.Linetypes.LoadlinetypeName,"acad.lin"
IfErr.Description<>""ThenMsgBoxErr.Description
'“CENTER”
circleObj.Linetype="CENTER"
circleObj.Update
EndSub
<$nopage>, <$endrange>:,::,::,::,:,::,:,:,Export:,Import:,::,::,">
ActiveX/VBA>AutoCAD >
LayerStateManagerActiveX
“”AutoCADLayerStateManager
ActiveX/VBA>AutoCAD >>
AutoCAD
AutoCADLayersAutoCAD
Layers
ACAD_LAYERSTATEDictionary
ACAD_LAYERSTATEXRecordAutoCADXRecordAutoCAD
AutoCADXRecordXRecordACAD_LAYERSTATE
ActiveXXRecordLayerStateManager
SubCh4_ListStates()
OnErrorResumeNext
DimoLSMDictAsAcadDictionary
DimXRecAsObject
DimlayerstateNamesAsString
layerstateNames=""
'ACAD_LAYERSTATES
'Layers
SetoLSMDict=ThisDrawing.Layers._
GetExtensionDictionary.Item("ACAD_LAYERSTATES")
'
'XRecord
ForEachXRecInoLSMDict
layerstateNames=layerstateNames+XRec.Name+vbCrLf
NextXRec
MsgBox"Thesavedlayersettingsinthisdrawingare:"+_
vbCrLf+layerstateNames
EndSub
<$endrange>:,::,::,::,:,::,:,:,Export:,Import:,::,::,">
ActiveX/VBA>AutoCAD >>
LayerStateManager
LayerStateManagerAutoCADUtilityLayerStateManager
Delete
Export
Import
Rename
Restore
Save
SetDataBase
AutoCADLayerStateManager
LayerStateManagerGetInterfaceObject
DimoLSMAsAcadLayerStateManager
SetoLSM=ThisDrawing.Application._
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
LayerStateManagerSetDatabaseLayerStateManager
oLSM.SetDatabaseThisDrawing.Database
<$endrange>:,::,::,::,">
ActiveX/VBA>AutoCAD >>LayerStateManager >
SaveSave
Layer
acLsAll
acLsColor Color
acLsFrozen
acLsLineType Linetype
acLsLineWeight
acLsLocked
acLsNewViewport
acLsNone
acLsOn
acLsPlot
acLsPlotStyle
ColorLinetype
SubCh4_SaveLayerColorAndLinetype()
DimoLSMAsAcadLayerStateManager
'LayerStateManager
SetoLSM=ThisDrawing.Application._
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
'LayerStateManager
oLSM.SetDatabaseThisDrawing.Database
oLSM.Save"ColorLinetype",acLsColor+acLsLineType
EndSub
ColorLinetype OldColorLinetype
SubCh4_RenameLayerSettings()
DimoLSMAsAcadLayerStateManager
SetoLSM=ThisDrawing.Application._
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabaseThisDrawing.Database
oLSM.Rename"ColorLinetype","OldColorLinetype"
EndSub
ColorLinetype.
SubCh4_DeleteColorAndLinetype()
DimoLSMAsAcadLayerStateManager
SetoLSM=ThisDrawing.Application._
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabaseThisDrawing.Database
oLSM.Delete"ColorLinetype"
EndSub
ActiveX/VBA>AutoCAD >>LayerStateManager >
Restore“ColorLinetype”“ColorLinetype”“ColorLinetype”“ColorLinetype”“ColorLinetype””
“ColorLinetype”“ColorLinetype”
SubCh4_RestoreLayerSettings()
DimoLSMAsAcadLayerStateManager
SetoLSM=ThisDrawing.Application._
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabaseThisDrawing.Database
oLSM.Restore"ColorLinetype"
EndSub
ActiveX/VBA>AutoCAD >>LayerStateManager >
LayerStateManagerExportImport
Restore
ExportAutoCAD. .lasAutoCAD
Import
Restore
Colortype.las
SubCh4_ExportLayerSettings()
DimoLSMAsAcadLayerStateManager
SetoLSM=ThisDrawing.Application._
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabaseThisDrawing.Database
oLSM.Export"ColorLinetype","c:\mydocuments\ColorLType.las"
EndSub
Colortype.las
SubCh4_ImportLayerSettings()
DimoLSMAsAcadLayerStateManager
SetoLSM=ThisDrawing.Application._
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabaseThisDrawing.Database
'
'
'
'
OnErrorResumeNext
oLSM.Import"c:\mydocuments\ColorLType.las"
IfErr.Number=-2145386359Then
'
MsgBox("Oneormorelinetypesspecifiedintheimported"+_
"settingsisnotdefinedinyourdrawing")
EndIf
OnErrorGoTo0
EndSub
<$nopage>
ActiveX/VBA>AutoCAD >
AutoCAD
“”
Unicode
ActiveX/VBA>AutoCAD >>
AutoCADAutoCAD
TrueTypeUnicode
ActiveX/VBA>AutoCAD >>>
AddTextStyleTextStylesAddTextStyleAutoCADActiveXAutomation
($)(_)(-)AutoCADAutoCADStyle n n11
TextStyleTextStyle
FontFile
BigFontFile
ASCII
Height
Width
ObliqueAngle
TextGenerationFlag
RegenUpdate
ActiveX/VBA>AutoCAD >>>
TextStyleFontFileAutoCADSHX
“PlayBill”SetFontPlayBill
SubCh4_UpdateTextFont()
MsgBox("Lookatthetextnow...")
DimtypeFaceAsString
DimSavetypeFaceAsString
DimBoldAsBoolean
DimItalicAsBoolean
DimcharSetAsLong
DimPitchandFamilyAsLong
'
'SetFont
ThisDrawing.ActiveTextStyle.GetFonttypeFace,_
Bold,Italic,charSet,PitchandFamily
'
SavetypeFace=typeFace
typeFace="PlayBill"
ThisDrawing.ActiveTextStyle.SetFonttypeFace,_
Bold,Italic,charSet,PitchandFamily
ThisDrawing.RegenacActiveViewport
MsgBox("Nowseehowitlooksafterchangingthefont...")
'
ThisDrawing.ActiveTextStyle.SetFontSavetypeFace,_
Bold,Italic,charSet,PitchandFamily
ThisDrawing.RegenacActiveViewport
EndSub
ActiveX/VBA>AutoCAD >>>
TrueType
TrueTypeTEXTFILLTEXTFILL1ExportPostScript®PostScript
ActiveX/VBA>AutoCAD >>>
Unicode
AutoCADUnicodeUnicode65,535AutoCADSHXUnicode
ASCIIAutoCADFontFileBigFontFile
AutoCAD
FontFileBigFontFile
SubCh4_ChangeFontFiles()
ThisDrawing.ActiveTextStyle.BigFontFile=_
"C:/AutoCAD/Fonts/bigfont.shx"
ThisDrawing.ActiveTextStyle.fontFile=_
"C:/AutoCAD/Fonts/italic.shx"
EndSub
ActiveX/VBA>AutoCAD >>>
TrueType
TrueType
TrueTypeyjpgq
Height
Text
SubCh4_ChangeTextHeight()
DimtextObjAsAcadText
DimtextStringAsString
DiminsertionPoint(0To2)AsDouble
DimheightAsDouble
'Text
textString="Hello,World."
insertionPoint(0)=3
insertionPoint(1)=3
insertionPoint(2)=0
height=0.5
'Text
SettextObj=ThisDrawing.ModelSpace._
AddText(textString,insertionPoint,height)
'Height1
textObj.height=1
textObj.Update
EndSub
ActiveX/VBA>AutoCAD >>>
90ObliqueAngle
Text45
SubCh4_ObliqueText()
DimtextObjAsAcadText
DimtextStringAsString
DiminsertionPoint(0To2)AsDouble
DimheightAsDouble
'Text
textString="Hello,World."
insertionPoint(0)=3
insertionPoint(1)=3
insertionPoint(2)=0
height=0.5
'Text
SettextObj=ThisDrawing.ModelSpace._
AddText(textString,insertionPoint,height)
'ObliqueAngle
'45.707
textObj.ObliqueAngle=0.707
textObj.Update
EndSub
ActiveX/VBA>AutoCAD >>>
TextGenerationFlagacTextFlagUpsideDown
acTextFlagBackward+acTextFlagUpsidedown
TextGenerationFlag
SubCh4_ChangingTextGenerationFlag()
DimtextObjAsAcadText
DimtextStringAsString
DiminsertionPoint(0To2)AsDouble
DimheightAsDouble
'Text
textString="Hello,World."
insertionPoint(0)=3
insertionPoint(1)=3
insertionPoint(2)=0
height=0.5
SettextObj=ThisDrawing.ModelSpace._
AddText(textString,insertionPoint,height)
'TextGenerationFlag
textObj.TextGenerationFlag=acTextFlagBackward
textObj.Update
EndSub
ActiveX/VBA>AutoCAD >>
Text
ActiveX/VBA>AutoCAD >>>
AddText
UnicodeWCS
(2,2,0)
SubCh4_CreateText()
DimtextObjAsAcadText
DimtextStringAsString
DiminsertionPoint(0To2)AsDouble
DimheightAsDouble
'Text
textString="Hello,World."
insertionPoint(0)=2
insertionPoint(1)=2
insertionPoint(2)=0
height=0.5
SettextObj=ThisDrawing.ModelSpace._
AddText(textString,insertionPoint,height)
textObj.Update
EndSub
ActiveX/VBA>AutoCAD >>>
TextTextText
TextStyleNameTextUpdate
Text
Alignment
InsertionPoint
ObliqueAngle
Rotation
ScaleFactor
TextAlignmentPoint
TextGenerationFlag
TextString
Update
AutoCAD ActiveXandVBAReference“Textobject”
ActiveX/VBA>AutoCAD >>>
Alignment
TextPointPoint
SubCh4_TextAlignment()
DimtextObjAsAcadText
DimtextStringAsString
DiminsertionPoint(0To2)AsDouble
DimheightAsDouble
'Text
textString="Hello,World."
insertionPoint(0)=3
insertionPoint(1)=3
insertionPoint(2)=0
height=0.5
'Text
SettextObj=ThisDrawing.ModelSpace._
AddText(textString,insertionPoint,height)
'
'
DimpointObjAsAcadPoint
DimalignmentPoint(0To2)AsDouble
alignmentPoint(0)=3
alignmentPoint(1)=3
alignmentPoint(2)=0
SetpointObj=ThisDrawing.ModelSpace._
AddPoint(alignmentPoint)
pointObj.Color=acRed
'
ThisDrawing.SetVariable"PDMODE",2
'
textObj.Alignment=acAlignmentLeft
ThisDrawing.RegenacActiveViewport
MsgBox"TheTextobjectisnowalignedleft"
'
textObj.Alignment=acAlignmentCenter
'
'
textObj.TextAlignmentPoint=alignmentPoint
ThisDrawing.RegenacActiveViewport
MsgBox"TheTextobjectisnowcentered"
'
textObj.Alignment=acAlignmentRight
ThisDrawing.RegenacActiveViewport
MsgBox"TheTextobjectisnowalignedright"
EndSub
ActiveX/VBA>AutoCAD >>>
TextMIRRTEXT0
TextAutoCAD ActiveXandVBAReferenceText
ArrayPolar
ArrayRectangular
Copy
Text
Erase
Text
Mirror
Text
Move
Text
Rotate
Text
<$nopage>
ActiveX/VBA>AutoCAD >>
ActiveX/VBA>AutoCAD >>>
AddMTextMText
UnicodeWCS
MTextMText
MText ActiveXandVBAReferenceMText
(2,2,0)MText
SubCh4_CreateMText()
DimmtextObjAsAcadMText
DiminsertPoint(0To2)AsDouble
DimwidthAsDouble
DimtextStringAsString
insertPoint(0)=2
insertPoint(1)=2
insertPoint(2)=0
width=4
textString="Thisisatextstringforthemtextobject."
'
SetmtextObj=ThisDrawing.ModelSpace._
AddMText(insertPoint,width,textString)
ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>>
STANDARDText
AttachmentPointRotation
StyleNameMTextTrueTypeSHXTrueType
({})
ASCII
ASCII
{{\H1.5x;Bigtext}\A2;overtext\A1;/\A0;undertext}
“”
MText
SubCh4_FormatMText()
DimmtextObjAsAcadMText
DiminsertPoint(0To2)AsDouble
DimwidthAsDouble
DimtextStringAsString
insertPoint(0)=2
insertPoint(1)=2
insertPoint(2)=0
width=4
'ASCII
DimOBAsLong'OpenBracket{
DimCBAsLong'CloseBracket}
DimBSAsLong'\
DimFSAsLong'/
DimSCAsLong';
OB=Asc("{")
CB=Asc("}")
BS=Asc("\")
FS=Asc("/")
SC=Asc(";")
'
'
'{{\H1.5x;Bigtext}\A2;overtext\A1;/\A0;undertext}
textString=Chr(OB)+Chr(OB)+Chr(BS)+"H1.5x"_
+Chr(SC)+"Bigtext"+Chr(CB)+Chr(BS)+"A2"_
+Chr(SC)+"overtext"+Chr(BS)+"A1"+Chr(SC)_
+Chr(FS)+Chr(BS)+"A0"+Chr(SC)+"undertext"_
+Chr(CB)
'
SetmtextObj=ThisDrawing.ModelSpace._
AddMText(insertPoint,width,textString)
ZoomAll
EndSub
ActiveX/VBA>AutoCAD >>
Unicode
UnicodeASCII
Unicode
Unicode
Unicode
\U+00B0
\U+00B1 /
\U+2205
Unicode(%%)AutoCADPostScript nnn
%%nnn
VBVBA
DimpercentasLong
percent=ASC("%")
TextString=chr(percent)+chr(percent)+"nnn"
AutoCAD
%%o
%%u
%%d
%%p /
%%c
%%%
ActiveX/VBA>AutoCAD >>
AutoCAD
AutoCADASCIIPreferencesFontFileMap
“”
ActiveX/VBA>AutoCAD >>>
AutoCADAutoCAD simplex.shxPreferencesAltFontFile
AltFontFile txt.shxbigfont.shx
AutoCAD
ActiveX/VBA>AutoCAD >>
AutoCADAutoCAD
AutoCADActiveXAutomationPreferencesMainDictionaryCustomDictionary
“”
ActiveX/VBA>
ActiveXAutomation
ActiveX/VBA>>
X YAutoCAD ®
AutoCAD
“”
ActiveX/VBA>>>
““
ActiveX/VBA>>>
DIMAUNITDIMUPTDIMTOFLDIMFITDIMTIHDIMTOHDIMJUSTDIMTADSetVariableDIMAUNIT(3)
ThisDrawing.SetVariable"DIMAUNIT",3
“”
ActiveX/VBA>>>
AutoCAD
ActiveTextStyle
“”
ActiveX/VBA>>>
AutoCAD
“”
ActiveX/VBA>>>
DIMASSOCDIMASSOC2
“”
ActiveX/VBA>>
“”
ActiveX/VBA>>>
AddDimAlignedAddDimRotated
AddDimAligned
AddDimRotated
“”
ActiveX/VBA>>>
AddDimRadial
TextPositionDIMUPTDIMTOFLDIMFITDIMTIHDIMTOHDIMJUSTDIMTADGetVariableSetVariable
15AutoCAD
AddDimRadialAddDimDiametric
LeaderLengthChordPoint
“”
SubCh5_CreateRadialDimension()
DimdimObjAsAcadDimRadial
Dimcenter(0To2)AsDouble
DimchordPoint(0To2)AsDouble
DimleaderLenAsInteger
'
center(0)=0
center(1)=0
center(2)=0
chordPoint(0)=5
chordPoint(1)=5
chordPoint(2)=0
leaderLen=5
'
SetdimObj=ThisDrawing.ModelSpace._
AddDimRadial(center,chordPoint,leaderLen)
ZoomAll
EndSub
LeaderLengthLeaderLengthDXFLISPADSRX
ActiveX/VBA>>>
AddDimAngularAngleVertex
AngleVertex
“”
SubCh5_CreateAngularDimension()
DimdimObjAsAcadDimAngular
DimangVert(0To2)AsDouble
DimFirstPoint(0To2)AsDouble
DimSecondPoint(0To2)AsDouble
DimTextPoint(0To2)AsDouble
'
angVert(0)=0
angVert(1)=5
angVert(2)=0
FirstPoint(0)=1
FirstPoint(1)=7
FirstPoint(2)=0
SecondPoint(0)=1
SecondPoint(1)=3
SecondPoint(2)=0
TextPoint(0)=3
TextPoint(1)=5
TextPoint(2)=0
'
SetdimObj=ThisDrawing.ModelSpace._
AddDimAngular(angVert,FirstPoint,SecondPoint,TextPoint)
ZoomAll
EndSub
ActiveX/VBA>>>
X Y X X Y YAutoCAD(UCS)
AddDimOrdinate(A)(B) X Y TRUE X FALSE Y
“”
SubCh5_CreatingOrdinateDimension()
DimdimObjAsAcadDimOrdinate
DimdefiningPoint(0To2)AsDouble
DimleaderEndPoint(0To2)AsDouble
DimuseXAxisAsLong
'
definingPoint(0)=5
definingPoint(1)=5
definingPoint(2)=0
leaderEndPoint(0)=10
leaderEndPoint(1)=5
leaderEndPoint(2)=0
useXAxis=5
'
SetdimObj=ThisDrawing.ModelSpace._
AddDimOrdinate(definingPoint,_
leaderEndPoint,useXAxis)
ZoomAll
EndSub
ActiveX/VBA>>
AutoCAD
Rotation
StyleName
TextOverride
TextPosition
TextRotation
Measurement
ArrayPolar
ArrayRectangular
Copy
Erase
Mirror
Move
Rotate
ScaleEntity
“”
ActiveX/VBA>>>
TextOverride
SubCh5_OverrideDimensionText()
DimdimObjAsAcadDimAligned
Dimpoint1(0To2)AsDouble
Dimpoint2(0To2)AsDouble
Dimlocation(0To2)AsDouble
'
point1(0)=5#:point1(1)=3#:point1(2)=0#
point2(0)=10#:point2(1)=3#:point2(2)=0#
location(0)=7.5:location(1)=5#:location(2)=0#
'
SetdimObj=ThisDrawing.ModelSpace._
AddDimAligned(point1,point2,location)
'
dimObj.TextOverride="Thevalueis<>"
dimObj.Update
EndSub
ActiveX/VBA>>
AutoCADSTANDARDActiveDimStyle
“”
ActiveX/VBA>>>
Add
AutoCADActiveXAutomationStyleName
CopyFromDimStyleToleranceLeaderDocumentToleranceLeaderDocument
1.
2.
3.
4. DIMCLRD5
5.
SubCh5_CopyDimStyles()
DimnewStyle1AsAcadDimStyle
DimnewStyle2AsAcadDimStyle
DimnewStyle3AsAcadDimStyle
SetnewStyle1=ThisDrawing.DimStyles.Add_
("Style1copiedfromadim")
CallnewStyle1.CopyFrom(ThisDrawing.ModelSpace(0))
SetnewStyle2=ThisDrawing.DimStyles.Add_
("Style2copiedfromStyle1")
CallnewStyle2.CopyFrom(ThisDrawing.DimStyles.Item_
("Style1copiedfromadim"))
SetnewStyle2=ThisDrawing.DimStyles.Add_
("Style3copiedfromtherunningdrawingvalues")
CallnewStyle2.CopyFrom(ThisDrawing)
EndSub
DIMSTYLE1213
ActiveX/VBA>>>
AltRoundDistance
AngleFormat
Arrowhead1BlockArrowhead2Block
Arrowhead1TypeArrowhead2Type
ArrowheadSize
CenterMarkSize
CenterType
DecimalSeparator
DimensionLineColor
DimensionLineWeight
DimLine1SuppressDimLine2Suppress
DimLineInside
ExtensionLineColor
ExtensionLineExtend
ExtensionLineOffset
ExtensionLineWeight
ExtLine1EndPointExtLine2EndPoint
ExtLine1StartPointExtLine2StartPoint
ExtLine1SuppressExtLine2Suppress
ForceLineInside
FractionFormat
HorizontalTextPosition
LinearScaleFactor
PrimaryUnitsPrecision
SuppressLeadingZerosSuppressTrailingZeros
SuppressZeroFeetSuppressZeroInches
TextColor
TextGap
TextHeight
TextInside
TextInsideAlign
TextMovement
TextOutsideAlign
TextPosition
TextPrecision
TextPrefix
TextRotation
TextSuffix
ToleranceDisplay
ToleranceHeightScale
ToleranceJustification
ToleranceLowerLimit
TolerancePrecision
ToleranceSuppressLeadingZeros
ToleranceSuppressTrailingZeros
ToleranceUpperLimit
UnitsFormat
VerticalTextPosition
TextSuffix
SubCh5_AddTextSuffix()
DimdimObjAsAcadDimAligned
Dimpoint1(0To2)AsDouble
Dimpoint2(0To2)AsDouble
Dimlocation(0To2)AsDouble
DimsuffixAsString
'
point1(0)=0:point1(1)=5:point1(2)=0
point2(0)=5:point2(1)=5:point2(2)=0
location(0)=5:location(1)=7:location(2)=0
'
SetdimObj=ThisDrawing.ModelSpace._
AddDimAligned(point1,point2,location)
ThisDrawing.Application.ZoomAll
'
suffix=InputBox("Enteranewtextsuffixforthedimension"_
,"SetDimensionSuffix",":SUFFIX")
'
dimObj.TextSuffix=suffix
ThisDrawing.RegenacAllViewports
EndSub
ActiveX/VBA>>
AutoCAD
DIMLFAC0DIMLFACDIMLFAC01.0“”“”AutoCADDIMLFACAutoCADDIMLFAC
ActiveX/VBA>>
LeaderAutoCAD
“”
ActiveX/VBA>>>
15
AddLeader NULL
acLineNoArrowacLineWithArrowacSplineNoArrowacSplineWithArrow
SubCh5_CreateLeader()
DimleaderObjAsAcadLeader
Dimpoints(0To8)AsDouble
DimleaderTypeAsInteger
DimannotationObjectAsAcadObject
points(0)=0:points(1)=0:points(2)=0
points(3)=4:points(4)=4:points(5)=0
points(6)=4:points(7)=5:points(8)=0
leaderType=acLineWithArrow
SetannotationObject=Nothing
'
SetleaderObj=ThisDrawing.ModelSpace._
AddLeader(points,annotationObject,leaderType)
ZoomAll
EndSub
ActiveX/VBA>>>
ToleranceMTextBlockRef
AddLeader
ActiveX/VBA>>>
EraseAddWBlockLeader
MTextMText
SubCh5_AddAnnotation()
DimleaderObjAsAcadLeader
DimmtextObjAsAcadMText
Dimpoints(0To8)AsDouble
DiminsertionPoint(0To2)AsDouble
DimwidthAsDouble
DimleaderTypeAsInteger
DimannotationObjectAsObject
DimtextStringAsString,msgAsString
'MText
textString="Hello,World."
insertionPoint(0)=5
insertionPoint(1)=5
insertionPoint(2)=0
width=2
SetmtextObj=ThisDrawing.ModelSpace._
AddMText(insertionPoint,width,textString)
'
points(0)=0:points(1)=0:points(2)=0
points(3)=4:points(4)=4:points(5)=0
points(6)=4:points(7)=5:points(8)=0
leaderType=acLineWithArrow
'
'MText
SetannotationObject=mtextObj
SetleaderObj=ThisDrawing.ModelSpace._
AddLeader(points,annotationObject,leaderType)
ZoomAll
EndSub
ActiveX/VBA>>>
DIMCLRTDIMTXTDIMTXSTYMText
Evaluate
ActiveX/VBA>>>
ScaleEntityMoveMirrorRotateStyleName
ActiveX/VBA>>
“”
ActiveX/VBA>>>
AddTolerance
SubCh5_CreateTolerance()
DimtoleranceObjAsAcadTolerance
DimtextStringAsString
DiminsertionPoint(0To2)AsDouble
Dimdirection(0To2)AsDouble
'
textString="HereistheFeatureControlFrame"
insertionPoint(0)=5
insertionPoint(1)=5
insertionPoint(2)=0
direction(0)=1
direction(1)=1
direction(2)=0
'
SettoleranceObj=ThisDrawing.ModelSpace._
AddTolerance(textString,insertionPoint,direction)
ZoomAll
EndSub
ActiveX/VBA>>>
DIMCLRDDIMCLRTDIMGAPDIMTXTDIMTXTSTYSetVariable
<$nopage>MenuGroups: <$nopage>: <$startrange>InsertInMenuBar:,:,PopupMenuItem:AddSeparator,AddSeparator,Type,Label:,PopupMenuItem:,,:,:,PopupMenu:,:,<$nopage>, <$endrange>InsertInMenuBar:,:,PopupMenu:,PopupMenuItem:,Delete:,PopupMenuItem:Tag,PopupMenuItem:Label,PopupMenuItem:Caption,PopupMenuItem:Macro,PopupMenuItem:HelpString,PopupMenuItem:Enable,PopupMenuItem:Check,:,:,:,:,PopupMenuItem:Index,PopupMenuItem:Type,PopupMenuItem:Submenu,PopupMenuItem:Parent,PopupMenuItem:Parent,:,:,:,:,,InsertInMenuBar:,Toolbars:Add,Toolbars:Name,Name:,Toolbar:,Add:,,Toolbar:,AddToolbarButton,Toolbar:AddToolbarButton,ToolbarItem,ToolbarItem:,ToolbarItem:Name,Name:ToolbarItem,ToolbarItem:HelpString,HelpString:ToolbarItem,ToolbarItem:Macro,Macro:ToolbarItem,ToolbarItem:,,Toolbar:,AddToolbarButton:,ToolbarItem:,Toolbar:AddSeparator,Toolbar:Type,:,SetBitmaps,ToolbarItem:SetBitmaps,GetBitmaps,ToolbarItem:GetBitmaps,SetBitmaps:SmallIconName,SetBitmaps:LargeIconName,Type:,GetBitmaps:,ToolbarItem:,:AddToolbarButton,AddToolbarButton:,Toolbar:,,AddToolbarButton:,Toolbar:,ToolbarItem:,:,AttachToolbarToFlyout,,Visible:,Toolbar:Float,Float:,Toolbar:Dock,Dock:,Toolbar:Docked,Dock:,Toolbar:,ToolbarItem:,ToolbarItem:Tag,Tag:ToolbarItem,ToolbarItem:Name,Name:ToolbarItem,ToolbarItem:Macro,Macro:ToolbarItem,ToolbarItem:HelpString,HelpString:ToolbarItem,ToolbarItem:Index,Index:ToolbarItem,ToolbarItem:Type,Type:ToolbarItem,ToolbarItem:Flyout,Flyout:ToolbarItem,ToolbarItem:Parent,Parent:ToolbarItem,PopupMenuItem:,ToolbarItem:,:,:,:,PICKAUTO,PICKADD,:,:,:,:,:,:,,LAYER:,:LAYER,SELECT:,:SELECT,(\\):,:,:,:,:,:,:,:,,,ERASE:,:ERASE,ToolbarItem:,PopupMenuItem:,,,,:,
InsertInMenuBar:,:,:,<$nopage>
ActiveX/VBA>
AutoCADActiveXAutomationAutoCAD
AutoCADActiveX/VBA
MenuBarMenuGroups
ActiveX/VBA>>
MenuBarMenuGroups
AutoCAD®ActiveX®MenuBarMenuGroupsMenuBarAutoCAD
MenuGroupsAutoCADAutoCADAutoCADAutoCAD
PopupMenusToolbarsPopupMenusToolbars
PopupMenuToolbar
<$nopage>MenuGroups:
ActiveX/VBA>>
LoadAutoCAD acad.cui
ThisDrawing.Application.MenuGroups.Load"acad.cui"
Load BaseMenu TRUEAutoCADMENU
BaseMenuAutoCADMENULOADMenuGroupsInsertMenuInMenuBarInsertInMenuBar
ActiveXAutomationActiveXAutomation
ActiveX/VBA>>
ActiveX/VBA>>>
InsertMenuInMenuBarInsertInMenuBar—
InsertMenuInMenuBarPopupMenus
InsertInMenuBarPopupMenu
TestMenuOPEN
SubCh6_InsertMenu()
'
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application._
MenuGroups.Item(0)
'
DimnewMenuAsAcadPopupMenu
SetnewMenu=currMenuGroup.Menus.Add("TestMenu")
'
DimnewMenuItemAsAcadPopupMenuItem
DimopenMacroAsString
'“ESCESC_open”VB
'
openMacro=Chr(3)+Chr(3)+"_open"
SetnewMenuItem=newMenu.AddMenuItem(newMenu.Count+1,_
"Open",openMacro)
'
currMenuGroup.Menus.InsertMenuInMenuBar"TestMenu",""
EndSub
ActiveX/VBA>>>
RemoveMenuFromMenuBarRemoveFromMenuBar—
RemoveMenuFromMenuBarPopupMenus
currMenuGroup.Menus.RemoveMenuFromMenuBar("TestMenu")
RemoveFromMenuBarPopupMenu
ActiveX/VBA>>>
SubCh6_MoveMenu()
'
DimmoveMenuAsAcadPopupMenu
DimMyMenuBarAsAcadMenuBar
SetMyMenuBar=ThisDrawing.Application.menuBar
'moveMenu
'
SetmoveMenu=MyMenuBar.Item(0)
'
MyMenuBar.Item(0).RemoveFromMenuBar
'
'
moveMenu.InsertInMenuBar(MyMenuBar.count)
EndSub
<$nopage>: <$startrange>InsertInMenuBar:,:,PopupMenuItem:AddSeparator,AddSeparator,Type,Label:,PopupMenuItem:,,:,:,PopupMenu:,:,<$nopage>, <$endrange>InsertInMenuBar:,:,PopupMenu:,PopupMenuItem:,Delete:,PopupMenuItem:Tag,PopupMenuItem:Label,PopupMenuItem:Caption,PopupMenuItem:Macro,PopupMenuItem:HelpString,PopupMenuItem:Enable,PopupMenuItem:Check,:,:,:,:,PopupMenuItem:Index,PopupMenuItem:Type,PopupMenuItem:Submenu,PopupMenuItem:Parent,PopupMenuItem:Parent,:,:,:,:,,InsertInMenuBar:,">
ActiveX/VBA>>
AutoCADActiveX/VBAAutoCAD“”
999499AutoCAD
ShortcutMenuShortcutMenu TRUE
ActiveX/VBA>>>
AddPopupMenusPopupMenu
“POP0”AutoCAD
Add
Name
MenuGroups“TestMenu”
SubCh6_CreateMenu()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
DimnewMenuAsAcadPopupMenu
SetnewMenu=currMenuGroup.Menus.Add("TestMenu")
EndSub
<$nopage>: <$startrange>InsertInMenuBar:,">
ActiveX/VBA>>>
AddMenuItemPopupMenuItem
AddMenuItem IndexLabelTag Macro
IndexLabelTagMacro
ActiveX/VBA>>>>
Index
Index(0) IndexCountCount
(0)Count(6)“”“” Index(2)“”(2)
Index
ActiveX/VBA>>>>
Label
DIESEL
DIESEL&
DIESEL“&”“”
Label
ActiveX/VBA>>>>
Tag
(_)
TagString
<$startrange>InsertInMenuBar:,">
ActiveX/VBA>>>>
Macro
AutoLISPDIESELActiveX
Macro
“TestMenu”“Open”OPEN
SubCh6_AddAMenuItem()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
DimnewMenuAsAcadPopupMenu
SetnewMenu=currMenuGroup.Menus.Add("TestMenu")
'
DimnewMenuItemAsAcadPopupMenuItem
DimopenMacroAsString
'“ESCESC_open”VBA
openMacro=Chr(3)+Chr(3)+"_open"
SetnewMenuItem=newMenu.AddMenuItem_
(newMenu.count+1,"Open",openMacro)
'
newMenu.InsertInMenuBar_
(ThisDrawing.Application.menuBar.count+1)
EndSub
ActiveX/VBA>>>
AddSeparatorPopupMenuItemPopupMenuItemacSeparatorType
AddSeparator Index Index(0)
ActiveX/VBA>>>
AutoCADActiveX/VBALabel&ASCIIChr(Asc("&"))+"Edit"“Edit”“E”
“TestMenu”“Open”“S”“TestMenu”“O”“Open”
SubCh6_AddAMenuItem()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
DimnewMenuAsAcadPopupMenu
SetnewMenu=currMenuGroup.Menus.Add_
("Te"+Chr(Asc("&"))+"stMenu")
'
DimnewMenuItemAsAcadPopupMenuItem
DimopenMacroAsString
'“ESCESC_open”VBA
openMacro=Chr(3)+Chr(3)+"_open"
SetnewMenuItem=newMenu.AddMenuItem_
(newMenu.count+1,Chr(Asc("&"))_
+"Open",openMacro)
'
newMenu.InsertInMenuBar_
(ThisDrawing.Application.menuBar.count+1)
EndSub
<$nopage>, <$endrange>InsertInMenuBar:,">
ActiveX/VBA>>>
AddSubmenuPopupMenuItemPopupMenuItemacSubmenu
AddSubmenu IndexLabel Tag
Index(0) IndexCountCount
LabelDIESEL“&”“”
Tag(_)
AddSubmenuPopupMenuItemPopupMenu
“TestMenu”“OpenFile”“Open”
SubCh6_AddASubMenu()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
DimnewMenuAsAcadPopupMenu
SetnewMenu=currMenuGroup.Menus.Add("TestMenu")
'
DimFileSubMenuAsAcadPopupMenu
SetFileSubMenu=newMenu.AddSubMenu("","OpenFile")
'
DimnewMenuItemAsAcadPopupMenuItem
DimopenMacroAsString
'“ESCESC_open”VB
openMacro=Chr(3)+Chr(3)+"_open"
SetnewMenuItem=FileSubMenu.AddMenuItem_
(newMenu.count+1,"Open",openMacro)
'
newMenu.InsertInMenuBar_
(ThisDrawing.Application.menuBar.count+1)
EndSub
ActiveX/VBA>>>
Delete
CUIMenuGroup.LoadPreferences.Profiles.ActiveProfileDocument.SendCommandMenuloadCUI
SubCh6_DeleteMenuItem()
DimLastMenuAsAcadPopupMenu
SetLastMenu=ThisDrawing.Application.menuBar._
Item(ThisDrawing.Application.menuBar.count-1)
'
DimnewMenuItemAsAcadPopupMenuItem
DimopenMacroAsString
'“ESCESC_open”VB
openMacro=Chr(3)+Chr(3)+"_open"
SetnewMenuItem=LastMenu.AddMenuItem_
(LastMenu.count+1,"Open",openMacro)
'
newMenuItem.Delete
EndSub
ActiveX/VBA>>>
TagString
(_)TagString
Label
DIESELLabel
Caption
DIESELLabelCaption
AutoLISPDIESELActiveXMacro
HelpString
AutoCADHelpString
Enable
EnableEnableDIESEL
Check
CheckCheckDIESEL
Index
001
Type
Type acMenuItem acMenuSeparator
acSubMenu
SubMenu
SubMenu acSubMenuPopupMenu acSubMenu
Parent
ParentPopupMenu
“TestMenu”Enable
SubCh6_DisableMenuItem()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
DimnewMenuAsAcadPopupMenu
SetnewMenu=currMenuGroup.Menus.Add("TestMenu")
'
DimMenuEnableAsAcadPopupMenuItem
DimMenuDisableAsAcadPopupMenuItem
DimMenuSeparatorAsAcadPopupMenuItem
DimopenMacroAsString
'“ESCESC_open”VB
openMacro=Chr(3)+Chr(3)+"_open"
SetMenuEnable=newMenu.AddMenuItem_
(newMenu.count+1,"OpenEnabled",openMacro)
SetMenuSeparator=newMenu.AddSeparator("")
SetMenuDisable=newMenu.AddMenuItem_
(newMenu.count+1,"OpenDisabled",openMacro)
'
MenuDisable.Enable=False
'
newMenu.InsertInMenuBar_
(ThisDrawing.Application.menuBar.count+1)
EndSub
ActiveX/VBA>>
AutoCADActiveX/VBA
ActiveX/VBA>>>
AddToolbarsToolbar
Add(-)(_)
Name
MenuGroups“TestToolbar”
SubCh6_CreateToolbar()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
DimnewToolbarAsAcadToolbar
SetnewToolbar=currMenuGroup.Toolbars.Add("TestToolbar")
EndSub
ActiveX/VBA>>>
AddToolbarButtonToolbarItem
AddToolbarButton IndexNameHelpStringMacroFlyoutButton
Index
Index(0) IndexCountCount
Index
Name
(-)(_) Name
HelpString
AutoCAD HelpString
AutoLISPDIESELActiveX Macro
FlyoutButton
FlyoutButton TRUE FALSE
OPEN
SubCh6_AddButton()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
DimnewToolbarAsAcadToolbar
SetnewToolbar=currMenuGroup.Toolbars.Add("TestToolbar")
'
DimnewButtonAsAcadToolbarItem
DimopenMacroAsString
'“ESCESC_open”VB
openMacro=Chr(3)+Chr(3)+"_open"
SetnewButton=newToolbar.AddToolbarButton_
("","NewButton","Openafile.",openMacro)
EndSub
ActiveX/VBA>>>
AddSeparatorToolbarItemToolbarItemacSeparatorType
AddSeparator IndexIndex(0)
ActiveX/VBA>>>
SetBitmapsGetBitmaps
SetBitmaps SmallIconName LargeIconName
SmallIconName
16×15ID(-)(_). bmpSupport
LargeIconName
24×22ID(-)(_). bmpSupport
SubCh6_GetButtonImages()
DimButtonAsAcadToolbarItem
DimToolbar0AsAcadToolbar
DimMenuGroup0AsAcadMenuGroup
DimSmallButtonNameAsString
DimLargeButtonNameAsString
DimmsgAsString
DimButtonTypeAsString
'
SetMenuGroup0=ThisDrawing.Application._
MenuGroups.Item(0)
SetToolbar0=MenuGroup0.Toolbars.Item(0)
'
SmallButtonName=""
LargeButtonName=""
'
'
msg="Toolbar:"+Toolbar0.Name+vbCrLf
Toolbar0.Visible=True
'
'
'
'
ForEachButtonInToolbar0
ButtonType=Choose(Button.Type+1,"Button",_
"Separator","Control","Flyout")
msg=msg&ButtonType&":"
IfButton.Type=acToolbarButtonOr_
Button.Type=acToolbarFlyoutThen
Button.GetBitmapsSmallButtonName,_
LargeButtonName
msg=msg+SmallButtonName+","_
+LargeButtonName
EndIf
msg=msg+vbCrLf
NextButton
'
MsgBoxmsg
EndSub
ActiveX/VBA>>>
AddToolbarButtonToolbarItem
AddToolbarButton IndexNameHelpStringMacroFlyoutButton FlyoutButton TRUE
SubCh6_AddFlyoutButton()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application._
MenuGroups.Item(0)
'
DimFirstToolbarAsAcadToolbar
SetFirstToolbar=currMenuGroup.Toolbars._
Add("FirstToolbar")
'
DimFlyoutButtonAsAcadToolbarItem
SetFlyoutButton=FirstToolbar.AddToolbarButton_
("","Flyout","Demonstratesaflyoutbutton",_
"OPEN",True)
'
'
DimSecondToolbarAsAcadToolbar
SetSecondToolbar=currMenuGroup.Toolbars._
Add("SecondToolbar")
'
DimnewButtonAsAcadToolbarItem
DimopenMacroAsString
'“ESCESC_open”VB
openMacro=Chr(3)+Chr(3)+"_open"
SetnewButton=SecondToolbar.AddToolbarButton_
("","NewButton","Openafile.",openMacro)
'
'
FlyoutButton.AttachToolbarToFlyoutcurrMenuGroup.Name,_
SecondToolbar.Name
'
FirstToolbar.Visible=True
SecondToolbar.Visible=False
EndSub
ActiveX/VBA>>>
FloatFloat TopLeft NumberFloatRowsTop Left
NumberFloatRows1
DockDock SideRow ColumnSideRow Column
DockStatusDockStatus TRUE FALSE
SubCh6_DockToolbar()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application._
MenuGroups.Item(0)
'
DimnewToolbarAsAcadToolbar
SetnewToolbar=currMenuGroup.Toolbars._
Add("TestToolbar")
'
'
DimnewButton1AsAcadToolbarItem
DimnewButton2AsAcadToolbarItem
DimnewButton3AsAcadToolbarItem
DimopenMacroAsString
'“ESCESC_open”VB
openMacro=Chr(3)+Chr(3)+"_open"
SetnewButton1=newToolbar.AddToolbarButton_
("","NewButton1","Openafile.",openMacro)
SetnewButton2=newToolbar.AddToolbarButton_
("","NewButton2","Openafile.",openMacro)
SetnewButton3=newToolbar.AddToolbarButton_
("","NewButton3","Openafile.",openMacro)
'
newToolbar.Visible=True
'
newToolbar.DockacToolbarDockLeft
EndSub
ActiveX/VBA>>>
Delete
ActiveX/VBA>>>
Tagstring
(_)TagString
Name
AutoCADName
AutoLISPDIESELActiveXMacro
HelpString
AutoCADHelpString
Index
001Index
Type
acButton acToolButtonSeparator
acFlyout acControl
Type
Flyout
acFlyoutToolbar
acFlyout NULL
Flyout
Parent
ToolbarParent
ActiveX/VBA>>
AutoLISPDIESELActiveX
AutoCADAutoCAD
PICKADDPICKAUTO10AutoCADASCII
ActiveX/VBA>>>
ASCII
VBVBAASCIIMacroASCII
ASCII
; chr(59) ENTER
^M chr(13) ENTER
^| chr(94)+chr(124)
TAB
SPACEBAR chr(32)
\ chr(92)
_ chr(95) AutoCAD
+ chr(43)
=* chr(61)+chr(42)
*^C^C chr(42)+chr(3)+chr(3)
$ chr(36) DIESEL
^B chr(2) (CTRL+B)
^C chr(3) (CTRL+C)
ESC chr(3) (ESC)
^D chr(4) (CTRL+D)
^E chr(5) (CTRL+E)
^G chr(7) (CTRL+G)
^H chr(8) BACKSPACE
^O chr(15) (CTRL+O)
^P chr(16) MENUECHO
^Q chr(17) (CTRL+Q)
^T chr(20) (CTRL+T)
^V chr(22) (CTRL+V)
^Z chr(26)SPACEBAR
ActiveX/VBA>>>
AutoCADAutoCAD lineSPACEBAR
line
ENTERTEXTDIMENTER
(;)AutoCADENTER
(\)(+)(;)AutoCAD
erase\;
ERASEAutoCAD(;)ENTER
ucs
ucs;
text\.40DRAFTInc;;;MainSt.;;;City,State;
ucs[(N)/(M)/(G)/(P)/(R)/(S)/(D)/(A)/?/(W)]<>:
ucs(;)“”
(;;;)TEXT
ASCIIASCII ASCII
ActiveX/VBA>>>
(\)
circle\1
layeroff\;
1(\)LAYERLAYERENTER(;)
SELECT
select\changeprevious;propertiescolorred;
SELECTCHANGE“”
(\)(/) /direct/file
X/Y/Z
SELECT
ActiveX/VBA>>>
^C^CESC^CDIM^C^C^C^CAutoCAD
ActiveX/VBA>>>
AutoCAD(null)
*^C^CESC
*C^C^C
*^C^CMOVESingle
*^C^CCOPYSingle
*^C^CERASESingle
*^C^CSTRETCHSingleCrossing
*^C^CROTATESingle
*^C^CSCALESingle
ActiveX/VBA>>>
*^C^CERASEsingle
ERASEAutoCAD
ActiveX/VBA>>
HelpString
HelpString
“TestMenu”“Open”HelpString
SubCh6_AddHelp()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
DimnewMenuAsAcadPopupMenu
SetnewMenu=currMenuGroup.Menus.Add_
("Te"+Chr(Asc("&"))+"stMenu")
'
DimnewMenuItemAsAcadPopupMenuItem
DimopenMacroAsString
'“ESCESC_open”VBA
openMacro=Chr(3)+Chr(3)+"_open"
'
SetnewMenuItem=newMenu.AddMenuItem_
(newMenu.count+1,Chr(Asc("&"))_
+"Open",openMacro)
'
newMenuItem.HelpString="OpensanAutoCADdrawingfile."
'
newMenu.InsertInMenuBar_
(ThisDrawing.Application.menuBar.count+1)
EndSub
<$nopage>
ActiveX/VBA>>
AutoCADSHIFT
AutoCADShortcutMenu TRUE
POP0
“OpenDWG”
SubCh6_AddMenuItemToshortcutMenu()
DimcurrMenuGroupAsAcadMenuGroup
SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
'
'shortcutMenu
DimscMenuAsAcadPopupMenu
DimentryAsAcadPopupMenu
ForEachentryIncurrMenuGroup.Menus
Ifentry.shortcutMenu=TrueThen
SetscMenu=entry
EndIf
Nextentry
'
DimnewMenuItemAsAcadPopupMenuItem
DimopenMacroAsString
'“ESCESC_open”VBA
openMacro=Chr(3)+Chr(3)+"_open"
SetnewMenuItem=scMenu.AddMenuItem_
("",Chr(Asc("&"))_
+"OpenDWG",openMacro)
EndSub
ActiveX/VBA>
AutoCADBeginOpenAutoCAD
AutoCAD
ActiveX/VBA>>
AutoCAD
AutoCAD®
AutoCADAutoCADARXLISP
“”ARXLISP
BeginOpen
ActiveX/VBA>>
AutoCADAutoCADAutoCAD
OPENBeginCommandBeginOpenEndOpenEndCommandBeginEndBeginCommandBeginOpenEndCommandEndOpenBeginCommandEndCommandBeginOpenEndOpen
object1object2object1ObjectErasedobject2object2ObjectErased
AutoCADGetPointGetEntityGetKeywordSendCommand
AutoCADBeginModalEndModalActivateDeactivateBeginRightClick
AutoCAD
BeginOpenAutoCAD
AutoCAD
ActiveX/VBA>>
AutoCADVBAVBAVBAActiveX ®
Automation
AppActivate
“”
AppDeactivate
“”
ARXLoaded
ObjectARX
ARXUnloaded
ObjectARX
BeginCommand
BeginFileDrop
“”
BeginLISP
AutoCADLISP
BeginModal
BeginOpen
AutoCAD
BeginPlot
AutoCAD
BeginQuit
AutoCAD
BeginSave
AutoCAD
EndCommand
EndLISP
LISP
EndModal
EndOpen
AutoCAD
EndPlot
EndSave
AutoCAD
LISPCancelled
LISP
NewDrawing
SysVarChanged
WindowChanged
“”
WindowMovedOrResized
“”
ActiveX/VBA>>>
AcadApplicationEventClassModuleVBAWithEvents
Application
1. VBAIDE“”“”
2. “”
3. “”EventClass-Module
4. F7“” “”“”
5. “”
PublicWithEventsAppAsAcadApplication
“”“”“”
Application
Application
1. “”
DimXAsNewEventClassModule
2.
SubInitializeEvents()
SetX.App=ThisDrawing.Application
EndSub
3. InitializeEvents
CallInitializeEvents
InitializeEventsAppApplication
AutoCAD
AutoCAD“”/“”/“”BeginFileDropCancel
PublicWithEventsACADAppAsAcadApplication
SubExample_AcadApplication_Events()
'(ACADApp)
'AcadApplication
'
'
'ThisDocument
'
'
SetACADApp=GetObject(,"AutoCAD.Application.17")
EndSub
PrivateSubACADApp_BeginFileDrop_
(ByValFileNameAsString,CancelAsBoolean)
'ApplicationBeginFileDrop
'
'AutoCAD
'
'
'
'1)
'ACADApp
'
'2)AutoCADAutoCAD
'AutoCAD
'
'Cancel
'FileName
'
IfMsgBox("AutoCADisabouttoload"&FileName&vbCrLf_
&"Doyouwanttocontinueloadingthisfile?",_
vbYesNoCancel+vbQuestion)<>vbYesThen
Cancel=True
EndIf
EndSub
ActiveX/VBA>>
AutoCADVBAVBAVBActiveXAutomation
Activate
“”
BeginDocClose
BeginCommand
BeginDoubleClick
BeginLISP
AutoCADLISP
BeginPlot
AutoCAD
BeginRightClick
“”
BeginSave
AutoCAD
BeginShortcutMenuCommand
“”“”
BeginShortcutMenuDefault
“”“”
BeginShortcutMenuEdit
“”“”
BeginShortcutMenuGrip
“”“”
BeginShortcutMenuOsnap
“”“”
Deactivate
“”
EndCommand
EndLISP
LISP
EndPlot
EndSave
AutoCAD
EndShortcutMenu
LayoutSwitched
LISPCancelled
LISP
ObjectAdded
ObjectErased
ObjectModified
SelectionChanged
WindowChanged
“”
WindowMovedOrResized
“”
VBAVBAVBA
ActiveX/VBA>>>
VBA
AcadDocumentVBVBAEventClassModuleVBAWithEvents
Document
1. VBAIDE“”“”
2. “”
3. “”EventClass-Module
4. F7“” “”“”
5. “”
PublicWithEventsDocAsAcadDocument
“”“”“”
Document
Document
1. “”
DimXAsNewEventClassModule
2.
ubInitializeEvents()
SetX.Doc=ThisDrawing
EndSub
3. InitializeApp
CallInitializeEvents
InitializeEventsDocDocument
ActiveX/VBA>>>
VBA
“”“”DocDoc“”
ActiveX/VBA>>>
VBA
VBAVBA“”“”“AcadDocument”“”
VBA
BeginShortcutMenuDefault“OpenDWG”EndShortcutMenu
PrivateSubAcadDocument_BeginShortcutMenuDefault_
(ShortcutMenuAsAutoCAD.IAcadPopupMenu)
OnErrorResumeNext
'
DimnewMenuItemAsAcadPopupMenuItem
DimopenMacroAsString
openMacro=Chr(vbKeyEscape)+Chr(vbKeyEscape)+"_open"
SetnewMenuItem=ShortcutMenu.AddMenuItem_
(0,Chr(Asc("&"))_
+"OpenDWG",openMacro)
EndSub
PrivateSubAcadDocument_EndShortcutMenu_
(ShortcutMenuAsAutoCAD.IAcadPopupMenu)
OnErrorResumeNext
ShortcutMenu.Item("OpenDWG").Delete
EndSub
ActiveX/VBA>>
AutoCADVBAVBAVBAActiveXAutomation
Modified
ActiveX/VBA>>>
AcadObjectEventClassModuleVBAWithEvents
Circle
1. VBAIDE“”“”
2. “”
3. “”EventClass-Module
4. F7“” “”“”
5. “”
PublicWithEventsObjectAsAcadCircle
“”“”“”
Circle
Automation
1. “”
DimXAsNewEventClassModule
2. “MyCircle”
SubInitializeEvents()
DimMyCircleAsAcadCircle
DimcenterPoint(0To2)AsDouble
DimradiusAsDouble
centerPoint(0)=0#:centerPoint(1)=0#:centerPoint(2)=0#
radius=5#
SetMyCircle=ThisDrawing.ModelSpace.AddCircle(centerPoint,radius)
SetX.Object=MyCircle
EndSub
3. InitializeApp
CallInitializeEvents
InitializeEventsCircleCircleVBAModifiedVBA
AutoCADCreatePLineWithEvents
PublicWithEventsPLineAsAcadLWPolyline
SubCreatePLineWithEvents()
'
Dimpoints(0To9)AsDouble
points(0)=1:points(1)=1
points(2)=1:points(3)=2
points(4)=2:points(5)=2
points(6)=3:points(7)=3
points(8)=3:points(9)=2
SetPLine=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
PLine.Closed=True
ThisDrawing.Application.ZoomAll
EndSub
PrivateSubPLine_Modified_
(ByValpObjectAsAutoCAD.IAcadObject)
'
'modified
'
'
OnErrorGoToERRORHANDLER
MsgBox"Theareaof"&pObject.ObjectName&"is:"_
&pObject.Area
ExitSub
ERRORHANDLER:
MsgBoxErr.Description
EndSub
ActiveX/VBA>
(3D)(2D)AutoCAD
ActiveX/VBA>>
(WCS)WCS X Y
“”
Z
SubCh8_Polyline_2D_3D()
Dimpline2DObjAsAcadLWPolyline
Dimpline3DObjAsAcadPolyline
Dimpoints2D(0To5)AsDouble
Dimpoints3D(0To8)AsDouble
'
points2D(0)=1:points2D(1)=1
points2D(2)=1:points2D(3)=2
points2D(4)=2:points2D(5)=2
'
points3D(0)=1:points3D(1)=1:points3D(2)=0
points3D(3)=2:points3D(4)=1:points3D(5)=0
points3D(6)=2:points3D(7)=2:points3D(8)=0
'
Setpline2DObj=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points2D)
pline2DObj.Color=acRed
pline2DObj.Update
'
Setpline3DObj=ThisDrawing.ModelSpace._
AddPolyline(points3D)
pline3DObj.Color=acBlue
pline3DObj.Update
'
Dimget2DptsAsVariant
Dimget3DptsAsVariant
get2Dpts=pline2DObj.Coordinates
get3Dpts=pline3DObj.Coordinates
'
MsgBox("2Dpolyline(red):"&vbCrLf&_
get2Dpts(0)&","&get2Dpts(1)&vbCrLf&_
get2Dpts(2)&","&get2Dpts(3)&vbCrLf&_
get2Dpts(4)&","&get2Dpts(5))
MsgBox("3Dpolyline(blue):"&vbCrLf&_
get3Dpts(0)&","&get3Dpts(1)&","&_
get3Dpts(2)&vbCrLf&_
get3Dpts(3)&","&get3Dpts(4)&","&_
get3Dpts(5)&vbCrLf&_
get3Dpts(6)&","&get3Dpts(7)&","&_
get3Dpts(8))
EndSub
ActiveX/VBA>>
(UCS)(0,0,0) XY ZUCSUCS
UCSUCSIconAtOriginUCSUCSUCSUCSIconOnUCSORGWCS
Add X YUCS
AutoCAD®ActiveXAutomationGetUCSMatrixUCSWCS
UCSDocumentActiveUCSUCSUCSUCSUCSUCSActiveUCS
UCS “”
UCSUCS
UCSUCSWCSUCS
SubCh8_NewUCS()
'
DimucsObjAsAcadUCS
Dimorigin(0To2)AsDouble
DimxAxisPnt(0To2)AsDouble
DimyAxisPnt(0To2)AsDouble
'UCS
origin(0)=4:origin(1)=5:origin(2)=3
xAxisPnt(0)=5:xAxisPnt(1)=5:xAxisPnt(2)=3
yAxisPnt(0)=4:yAxisPnt(1)=6:yAxisPnt(2)=3
'UCS
'UserCoordinatesSystems
SetucsObj=ThisDrawing.UserCoordinateSystems._
Add(origin,xAxisPnt,yAxisPnt,"New_UCS")
'UCS
ThisDrawing.ActiveViewport.UCSIconAtOrigin=True
ThisDrawing.ActiveViewport.UCSIconOn=True
'UCSUCS
ThisDrawing.ActiveUCS=ucsObj
MsgBox"ThecurrentUCSis:"&ThisDrawing.ActiveUCS.Name_
&vbCrLf&"Pickapointinthedrawing."
'WCSUCS
DimWCSPntAsVariant
DimUCSPntAsVariant
WCSPnt=ThisDrawing.Utility.GetPoint(,"Enterapoint:")
UCSPnt=ThisDrawing.Utility.TranslateCoordinates_
(WCSPnt,acWorld,acUCS,False)
MsgBox"TheWCScoordinatesare:"&WCSPnt(0)&","_
&WCSPnt(1)&","&WCSPnt(2)&vbCrLf&_
"TheUCScoordinatesare:"&UCSPnt(0)&","_
&UCSPnt(1)&","&UCSPnt(2)
EndSub
ActiveX/VBA>>
TranslateCoordinates OriginalPoint
Disp TRUEOriginalPoint OriginalPoint OriginalPoint From ToAutoCAD
WCS
WCSWCSActiveXWCS
UCS
(UCS)UCSAutoCADAutoLISPUCS*WCSOCSDCSAutoCADTranslateCoordinatesUCS
OCS
PolylineLightweightPolylineWCSUCSDCSWCSUCSDCSOCSAutoCADVBAReferenceOCSOCSTranslateCoordinatesOCS
DCS
DCSAutoCADTARGET ZDCSAutoCAD
PSDCS
DCSDCS X Y Disp FALSE ZPSDCS
OCSWCS
OCSWCSOCSWCSTranslateCoordinatesOCS
SubCh8_TranslateCoordinates()
'
DimplineObjAsAcadPolyline
Dimpoints(0To14)AsDouble
'
points(0)=1:points(1)=1:points(2)=0
points(3)=1:points(4)=2:points(5)=0
points(6)=2:points(7)=2:points(8)=0
points(9)=3:points(10)=2:points(11)=0
points(12)=4:points(13)=4:points(14)=0
'
SetplineObj=ThisDrawing.ModelSpace.AddPolyline(points)
'
'XY
DimfirstVertexAsVariant
firstVertex=plineObj.Coordinate(0)
'elevation
'Z
firstVertex(2)=plineObj.Elevation
'
'
'
DimplineNormal(0To2)AsDouble
plineNormal(0)=0#
plineNormal(1)=1#
plineNormal(2)=2#
plineObj.Normal=plineNormal
'OCSWCS
DimcoordinateWCSAsVariant
coordinateWCS=ThisDrawing.Utility.TranslateCoordinates_
(firstVertex,acOCS,acWorld,False,plineNormal)
'
MsgBox"Thefirstvertexhasthefollowingcoordinates:"_
&vbCrLf&"OCS:"&firstVertex(0)&","&_
firstVertex(1)&","&firstVertex(2)&vbCrLf&_
"WCS:"&coordinateWCS(0)&","&_
coordinateWCS(1)&","&coordinateWCS(2)
EndSub
ActiveX/VBA>>
AutoCAD
“”
ActiveX/VBA>>>
AutoCAD
XY Z
XYUCS
Add3DPoly
“”
ActiveX/VBA>>>
PolygonMesh
Add3DMesh M N
PolygonMeshMCloseNClose
“”
4×4
SubCh8_Create3DMesh()
DimmeshObjAsAcadPolygonMesh
DimmSize,nSize,CountAsInteger
Dimpoints(0To47)AsDouble
'
points(0)=0:points(1)=0:points(2)=0
points(3)=2:points(4)=0:points(5)=1
points(6)=4:points(7)=0:points(8)=0
points(9)=6:points(10)=0:points(11)=1
points(12)=0:points(13)=2:points(14)=0
points(15)=2:points(16)=2:points(17)=1
points(18)=4:points(19)=2:points(20)=0
points(21)=6:points(22)=2:points(23)=1
points(24)=0:points(25)=4:points(26)=0
points(27)=2:points(28)=4:points(29)=1
points(30)=4:points(31)=4:points(32)=0
points(33)=6:points(34)=4:points(35)=0
points(36)=0:points(37)=6:points(38)=0
points(39)=2:points(40)=6:points(41)=1
points(42)=4:points(43)=6:points(44)=0
points(45)=6:points(46)=6:points(47)=0
mSize=4:nSize=4
'
SetmeshObj=ThisDrawing.ModelSpace._
Add3DMesh(mSize,nSize,points)
'
'
DimNewDirection(0To2)AsDouble
NewDirection(0)=-1
NewDirection(1)=-1
NewDirection(2)=1
ThisDrawing.ActiveViewport.direction=NewDirection
ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport
ZoomAll
EndSub
ActiveX/VBA>>>
AddPolyfaceMesh
ActiveXandVBAReferenceAddPolyfaceMesh
SubCh8_CreatePolyfaceMesh()
'
Dimvertex(0To17)AsDouble
vertex(0)=4:vertex(1)=7:vertex(2)=0
vertex(3)=5:vertex(4)=7:vertex(5)=0
vertex(6)=6:vertex(7)=7:vertex(8)=0
vertex(9)=4:vertex(10)=6:vertex(11)=0
vertex(12)=5:vertex(13)=6:vertex(14)=0
vertex(15)=6:vertex(16)=6:vertex(17)=1
'
DimFaceList(0To7)AsInteger
FaceList(0)=1
FaceList(1)=2
FaceList(2)=5
FaceList(3)=4
FaceList(4)=2
FaceList(5)=3
FaceList(6)=6
FaceList(7)=5
'
DimpolyfaceMeshObjAsAcadPolyfaceMesh
SetpolyfaceMeshObj=ThisDrawing.ModelSpace.AddPolyfaceMesh_
(vertex,FaceList)
'
'
DimNewDirection(0To2)AsDouble
NewDirection(0)=-1
NewDirection(1)=-1
NewDirection(2)=1
ThisDrawing.ActiveViewport.direction=NewDirection
ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport
ZoomAll
EndSub
ActiveX/VBA>>>
3DSolid
AddBoxAddConeAddCylinderAddEllipticalConeAddEllipticalCylinderAddExtrudedSolidAddExtrudedSolidAlongPathAddRevolvedSolidAddSolidAddSphereAddTorusAddWedge
MomentOfInertiaPrincipalDirectionsPrincipalMomentsProductOfInertiaRadiiOfGyrationVolume
ContourlinesPerSurfaceRenderSmoothness
“”
SubCh8_CreateWedge()
DimwedgeObjAsAcad3DSolid
Dimcenter(0To2)AsDouble
DimlengthAsDouble
DimwidthAsDouble
DimheightAsDouble
'
center(0)=5#:center(1)=5#:center(2)=0
length=10#:width=15#:height=20#
'
SetwedgeObj=ThisDrawing.ModelSpace._
AddWedge(center,length,width,height)
'
DimNewDirection(0To2)AsDouble
NewDirection(0)=-1
NewDirection(1)=-1
NewDirection(2)=1
ThisDrawing.ActiveViewport.direction=NewDirection
ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport
ZoomAll
EndSub
ActiveX/VBA>>
ActiveX/VBA>>>
RotateWCSRotate3DRotate3DWCS
RotateRotate3D
“”
30
SubCh8_Rotate_3DBox()
DimboxObjAsAcad3DSolid
DimlengthAsDouble
DimwidthAsDouble
DimheightAsDouble
Dimcenter(0To2)AsDouble
'
center(0)=5:center(1)=5:center(2)=0
length=5
width=7
height=10
'
SetboxObj=ThisDrawing.ModelSpace._
AddBox(center,length,width,height)
'
DimrotatePt1(0To2)AsDouble
DimrotatePt2(0To2)AsDouble
DimrotateAngleAsDouble
rotatePt1(0)=-3:rotatePt1(1)=4:rotatePt1(2)=0
rotatePt2(0)=-3:rotatePt2(1)=-4:rotatePt2(2)=0
rotateAngle=30
rotateAngle=rotateAngle*3.141592/180#
'
boxObj.Rotate3DrotatePt1,rotatePt2,rotateAngle
ZoomAll
EndSub
ActiveX/VBA>>>
ArrayRectangular X Y
“”
SubCh8_CreateRectangularArray()
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=2:center(1)=2:center(2)=0
radius=0.5
SetcircleObj=ThisDrawing.ModelSpace._
AddCircle(center,radius)
'
DimnumberOfRowsAsLong
DimnumberOfColumnsAsLong
DimnumberOfLevelsAsLong
DimdistanceBwtnRowsAsDouble
DimdistanceBwtnColumnsAsDouble
DimdistanceBwtnLevelsAsDouble
numberOfRows=4
numberOfColumns=4
numberOfLevels=3
distanceBwtnRows=1
distanceBwtnColumns=1
distanceBwtnLevels=4
'
DimretObjAsVariant
retObj=circleObj.ArrayRectangular_
(numberOfRows,numberOfColumns,_
numberOfLevels,distanceBwtnRows,_
distanceBwtnColumns,distanceBwtnLevels)
ZoomAll
EndSub
ActiveX/VBA>>>
Mirror3D
“”
SubCh8_MirrorABox3D()
'
DimboxObjAsAcad3DSolid
DimlengthAsDouble
DimwidthAsDouble
DimheightAsDouble
Dimcenter(0To2)AsDouble
center(0)=5#:center(1)=5#:center(2)=0
length=5#:width=7:height=10#
'(3DSolid)
SetboxObj=ThisDrawing.ModelSpace._
AddBox(center,length,width,height)
'
DimmirrorPt1(0To2)AsDouble
DimmirrorPt2(0To2)AsDouble
DimmirrorPt3(0To2)AsDouble
mirrorPt1(0)=1.25:mirrorPt1(1)=0:mirrorPt1(2)=0
mirrorPt2(0)=1.25:mirrorPt2(1)=2:mirrorPt2(2)=0
mirrorPt3(0)=1.25:mirrorPt3(1)=2:mirrorPt3(2)=2
'
DimmirrorBoxObjAsAcad3DSolid
SetmirrorBoxObj=boxObj.Mirror3D_
(mirrorPt1,mirrorPt2,mirrorPt3)
mirrorBoxObj.Color=acRed
ZoomAll
EndSub
ActiveX/VBA>>
BooleanCheckInterference
SectionSolidSliceSolid
SubCh8_FindInterferenceBetweenSolids()
'
DimboxObjAsAcad3DSolid
DimlengthAsDouble
DimwidthAsDouble
DimheightAsDouble
Dimcenter(0To2)AsDouble
center(0)=5:center(1)=5:center(2)=0
length=5
width=7
height=10
'
'
SetboxObj=ThisDrawing.ModelSpace._
AddBox(center,length,width,height)
boxObj.Color=acWhite
'
DimcylinderObjAsAcad3DSolid
DimcylinderRadiusAsDouble
DimcylinderHeightAsDouble
center(0)=0:center(1)=0:center(2)=0
cylinderRadius=5
cylinderHeight=20
'
'
SetcylinderObj=ThisDrawing.ModelSpace.AddCylinder_
(center,cylinderRadius,cylinderHeight)
cylinderObj.Color=acCyan
'
'
'
DimsolidObjAsAcad3DSolid
SetsolidObj=boxObj.CheckInterference(cylinderObj,True)
solidObj.Color=acRed
ZoomAll
EndSub
3DSolid
SubCh8_SliceABox()
'
DimboxObjAsAcad3DSolid
DimlengthAsDouble
DimwidthAsDouble
DimheightAsDouble
Dimcenter(0To2)AsDouble
center(0)=5#:center(1)=5#:center(2)=0
length=5#:width=7:height=10#
'(3DSolid)
SetboxObj=ThisDrawing.ModelSpace._
AddBox(center,length,width,height)
boxObj.Color=acWhite
'
DimslicePt1(0To2)AsDouble
DimslicePt2(0To2)AsDouble
DimslicePt3(0To2)AsDouble
slicePt1(0)=1.5:slicePt1(1)=7.5:slicePt1(2)=0
slicePt2(0)=1.5:slicePt2(1)=7.5:slicePt2(2)=10
slicePt3(0)=8.5:slicePt3(1)=2.5:slicePt3(2)=10
'
DimsliceObjAsAcad3DSolid
SetsliceObj=boxObj.SliceSolid_
(slicePt1,slicePt2,slicePt3,True)
sliceObj.Color=acRed
ZoomAll
EndSub
ActiveX/VBA>
AutoCAD
ActiveX/VBA>>
ActiveX/VBA>>
“”
ActiveX ®AutomationModelSpacePaperSpace
“”
ActiveX/VBA>>>
ActiveXLayoutBlockLayoutAutoCADBlock
LayoutBlockBlockBlockBlockLayoutBlockLayoutLayout
ActiveX/VBA>>>
PlotConfigurationLayoutLayoutBlockPlotConfigurationBlock
ActiveX/VBA>>>
Layout
ActiveX/VBA>>>>
CanonicalMediaName
PaperUnits acInchesacMillimeters acPixels
ActiveX/VBA>>>>
PlotOrigin(0,0)CenterPlot TRUE
ActiveX/VBA>>>>
PlotType
acDisplay
acExtents
acLimits
acView
ViewToPlot
acWindow
SetWindowToPlot
acLayout
acLayout
ActiveX/VBA>>>>
UseStandardScale TRUEStandardScale
UseStandardScale FALSESetCustomScale
StandardScale acScaleToFit
ActiveX/VBA>>>>
1:1AE
ScaleLineweights TRUE FALSE
ActiveX/VBA>>>>
ConfigName
ActiveX/VBA>>
ActiveXAutomationViewport
ActiveXAutomationPViewport
“”“”
ActiveX/VBA>>>
PViewportActiveSpacePViewportViewport
PViewport“”
ViewportActiveSpace acModelSpacePViewportActiveSpace acModelSpace acPaperSpace
PViewportViewportActiveSpace
PViewport ActiveSpace=acPaperspace
PViewport ActiveSpace=acModelspace
ActiveSpace=acModelspace
AutoCAD ®ActiveXAutomationActiveSpaceTILEMODEThisDrawing.ActiveSpace=acModelSpaceTILEMODE =
on ThisDrawing.ActiveSpace=acPaperSpaceTILEMODE=off
MSpaceAutoCADMSPACEPSPACEThisDrawing.MSpace=TRUEMSPACEThisDrawing.MSpace=FALSEPSPACE
MSpace TRUEDisplayDisplayAutoCAD“”ActiveXAutomation
MSpace TRUEPViewportDisplayMSpace
ActiveX/VBA>>>
1. ActiveSpace acPaperSpace
ThisDrawing.ActiveSpace=acPaperSpace
2. MSpace FALSE
ThisDrawing.MSpace=FALSE
AutoCAD(UCS)
ActiveX/VBA>>>
1. Display
ThisDrawing.ActivePViewport.DisplayTRUE
2. MSpace TRUE
ThisDrawing.MSpace=TRUE
ActiveSpace acModelSpace
ThisDrawing.ActiveSpace=acModelSpace
ActiveX/VBA>>>
AddPViewportActiveSpaceTILEMODE0
PViewportDirectionLensLengthGridOnLayerLinetypeLinetypeScale
AutoCAD
SubCh9_SwitchToPaperSpace()
'
ThisDrawing.ActiveSpace=acPaperSpace
'
DimnewVportAsAcadPViewport
Dimcenter(0To2)AsDouble
center(0)=3.25
center(1)=3
center(2)=0
SetnewVport=ThisDrawing.PaperSpace._
AddPViewport(center,6,5)
'
DimviewDir(0To2)AsDouble
viewDir(0)=1
viewDir(1)=1
viewDir(2)=1
newVport.direction=viewDir
'
newVport.DisplayTrue
'
ThisDrawing.MSpace=True
'newVport
'
ThisDrawing.ActivePViewport=newVport
'
ZoomExtents
'
ThisDrawing.MSpace=False
'
ZoomExtents
EndSub
AutoCAD
ViewportDisplay( FALSE)Display(TRUE)
“”
SubCh9_FourPViewports()
DimtopVport,frontVportAsAcadPViewport
DimrightVport,isoVportAsAcadPViewport
Dimpt(0To2)AsDouble
DimviewDir(0To2)AsDouble
ThisDrawing.ActiveSpace=acPaperSpace
ThisDrawing.MSpace=True
'PViewporttopVport
pt(0)=2.5:pt(1)=5.5:pt(2)=0
SettopVport=ThisDrawing.ActivePViewport
'Direction
topVport.center=pt
topVport.width=2.5
topVport.height=2.5
topVport.DisplayTrue
ThisDrawing.MSpace=True
ThisDrawing.ActivePViewport=topVport
ZoomExtents
ZoomScaled0.5,acZoomScaledRelativePSpace
'frontVport
pt(0)=2.5:pt(1)=2.5:pt(2)=0
SetfrontVport=ThisDrawing.PaperSpace._
AddPViewport(pt,2.5,2.5)
viewDir(0)=0:viewDir(1)=1:viewDir(2)=0
frontVport.direction=viewDir
frontVport.DisplayacOn
ThisDrawing.MSpace=True
ThisDrawing.ActivePViewport=frontVport
ZoomExtents
ZoomScaled0.5,acZoomScaledRelativePSpace
'rightVport
pt(0)=5.5:pt(1)=5.5:pt(2)=0
SetrightVport=ThisDrawing.PaperSpace._
AddPViewport(pt,2.5,2.5)
viewDir(0)=1:viewDir(1)=0:viewDir(2)=0
rightVport.direction=viewDir
rightVport.DisplayacOn
ThisDrawing.MSpace=True
ThisDrawing.ActivePViewport=rightVport
ZoomExtents
ZoomScaled0.5,acZoomScaledRelativePSpace
'isoVport
pt(0)=5.5:pt(1)=2.5:pt(2)=0
SetisoVport=ThisDrawing.PaperSpace._
AddPViewport(pt,2.5,2.5)
viewDir(0)=1:viewDir(1)=1:viewDir(2)=1
isoVport.direction=viewDir
isoVport.DisplayacOn
ThisDrawing.MSpace=True
ThisDrawing.ActivePViewport=isoVport
ZoomExtents
ZoomScaled0.5,acZoomScaledRelativePSpace
'
ThisDrawing.RegenTrue
EndSub
ActiveX/VBA>>>
Viewport
1. ActiveViewport
Thisdrawing.ActiveViewport=MyViewportObject
2.
ActiveSpace FALSEMSpace
ActiveX/VBA>>>
—
(1:4)
ZoomScaled
acZoomScaledRelativePSpace20.5
ActiveX/VBA>>>
PSLTSCALE
PSLTSCALE
SetVariablePSLTSCALE
ActiveX/VBA>>>
“”“”“”“”
PViewportShadePlot
ViewportLayoutPlotHidden TRUE FALSE
ActiveX/VBA>>
BACKGROUNDPLOT0
ActiveXAutomationLayoutPlotLayoutPlot
ActiveX/VBA>>>
Plot
PlotToFile
PlotToDevice
DisplayPlotPreview
QuietErrorMode
ActiveX/VBA>>>
00,0Layout
PlotToDevice
SubCh9_PrintModelSpace()
'
IfThisDrawing.ActiveSpace=acPaperSpaceThen
ThisDrawing.MSpace=True
ThisDrawing.ActiveSpace=acModelSpace
EndIf
'
ThisDrawing.ModelSpace.Layout.PlotType=acExtents
ThisDrawing.ModelSpace.Layout._
StandardScale=acScaleToFit
'1
ThisDrawing.Plot.NumberOfCopies=1
'
ThisDrawing.Plot.PlotToDevice
EndSub
ConfigNamePlotToDevicePC3
ActiveX/VBA>>>
“”
<$nopage> <$nopage>: <$nopage>BlockReference: <$nopage>,
ActiveX/VBA>
AutoCAD
AutoCAD
<$nopage>
ActiveX/VBA>>
AutoCAD ®AutoCAD
ActiveX/VBA>>>
IDAddRasterRasterRaster
Raster
RasterAutoCAD11AutoCAD1AutoCADDPI
AutoCADAutoCAD1501:600AutoCAD11AddRasterAutoCAD
AutoCADAutoCAD
watch.jpgsample imageName
SubCh10_AttachingARaster()
DiminsertionPoint(0To2)AsDouble
DimscalefactorAsDouble
DimrotationAngleAsDouble
DimimageNameAsString
DimrasterObjAsAcadRasterImage
imageName="C:/ProgramFiles/AutoCADDirectory/sample/watch.jpg'
insertionPoint(0)=5
insertionPoint(1)=5
insertionPoint(2)=0
scalefactor=2
rotationAngle=0
OnErrorGoToERRORHANDLER
'
SetrasterObj=ThisDrawing.ModelSpace.AddRaster_
(imageName,insertionPoint,_
scalefactor,rotationAngle)
ZoomAll
ExitSub
ERRORHANDLER:
MsgBoxErr.Description
EndSub
ActiveX/VBA>>>
Raster
ActiveX/VBA>>>>
ImageFileAutoCAD
AutoCADImageFileAutoCAD\images\tree.tga c:\myproject\images\tree.tga tree.tgaPreferencesSetProjectFilePathAutoCAD
ImageFile
ImageFile
ActiveX/VBA>>>>
AutoCAD
RasterImageFileImageFileNameName
<$nopage>
ActiveX/VBA>>>
AutoCAD
ActiveX/VBA>>>>
ClippingEnabled
ActiveX/VBA>>>>
Layer
Color
Linetype
ActiveX/VBA>>>>
ScaleEntity
Rotate
Origin
Width
Height
ImageWidth
ImageHeight
ShowRotation
ActiveX/VBA>>>>
ImageVisibilityFALSEImageVisibilityTRUE
<$nopage>
ActiveX/VBA>>>>
ColorTransparency
ActiveX/VBA>>>>
AutoCAD
Brightness
Contrast
Fade
ActiveX/VBA>>>
1. ClippingEnabled
2. ClipBoundary
ActiveX/VBA>>>>
ActiveX/VBA>>>>
ClippingEnabledFALSEClippingEnabledTRUE
ActiveX/VBA>>>>>
sample downtown.jpgimageName
SubCh10_ClippingRasterBoundary()
DiminsertionPoint(0To2)AsDouble
DimscalefactorAsDouble
DimrotationAngleAsDouble
DimimageNameAsString
DimrasterObjAsAcadRasterImage
imageName="C:\AutoCAD\sample\downtown.jpg"
insertionPoint(0)=5
insertionPoint(1)=5
insertionPoint(2)=0
scalefactor=2
rotationAngle=0
OnErrorGoToERRORHANDLER
'
SetrasterObj=ThisDrawing.ModelSpace.AddRaster_
(imageName,insertionPoint,_
scalefactor,rotationAngle)
ZoomAll
'
DimclipPoints(0To9)AsDouble
clipPoints(0)=6:clipPoints(1)=6.75
clipPoints(2)=7:clipPoints(3)=6
clipPoints(4)=6:clipPoints(5)=5
clipPoints(6)=5:clipPoints(7)=6
clipPoints(8)=6:clipPoints(9)=6.75
'
rasterObj.ClipBoundaryclipPoints
'
rasterObj.ClippingEnabled=True
ThisDrawing.RegenacActiveViewport
ExitSub
ERRORHANDLER:
MsgBoxErr.Description
EndSub
<$nopage>: <$nopage>BlockReference:
ActiveX/VBA>>
AutoCAD
AutoCAD
<$nopage>: <$nopage>BlockReference:
ActiveX/VBA>>>
AutoCAD
“”
ActiveX/VBA>>>>
Add
WBlockAutoCAD
“”
<$nopage>:
ActiveX/VBA>>>>
InsertBlockInsertBlockXYZ
AutoCADInsertBlock
Name
AutoCAD(0,0,0)SetVariableINSBASEAutoCAD
PaperSpacePaperSpaceAddPaperSpace
AddMInsertBlockInsertBlockMInsertBlock
“”
SubCh10_InsertingABlock()
'
DimblockObjAsAcadBlock
DiminsertionPnt(0To2)AsDouble
insertionPnt(0)=0
insertionPnt(1)=0
insertionPnt(2)=0
SetblockObj=ThisDrawing.Blocks.Add_
(insertionPnt,"CircleBlock")
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=0
center(1)=0
center(2)=0
radius=1
SetcircleObj=blockObj.AddCircle(center,radius)
'
DimblockRefObjAsAcadBlockReference
insertionPnt(0)=2
insertionPnt(1)=2
insertionPnt(2)=0
SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_
(insertionPnt,"CircleBlock",1#,1#,1#,0)
ZoomAll
MsgBox"Thecirclebelongsto"&blockRefObj.ObjectName
EndSub
WCS(UCS)XYUCS
<$nopage>BlockReference:
ActiveX/VBA>>>>
Explode
SubCh10_ExplodingABlock()
'
DimblockObjAsAcadBlock
DiminsertionPnt(0To2)AsDouble
insertionPnt(0)=0
insertionPnt(1)=0
insertionPnt(2)=0
SetblockObj=ThisDrawing.Blocks.Add_
(insertionPnt,"CircleBlock")
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=0
center(1)=0
center(2)=0
radius=1
SetcircleObj=blockObj.AddCircle(center,radius)
'
DimblockRefObjAsAcadBlockReference
insertionPnt(0)=2
insertionPnt(1)=2
insertionPnt(2)=0
SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_
(insertionPnt,"CircleBlock",1#,1#,1#,0)
ZoomAll
MsgBox"Thecirclebelongsto"&blockRefObj.ObjectName
'
DimexplodedObjectsAsVariant
explodedObjects=blockRefObj.Explode
'
DimIAsInteger
ForI=0ToUBound(explodedObjects)
explodedObjects(I).Color=acRed
explodedObjects(I).Update
MsgBox"ExplodedObject"&I&":"_
&explodedObjects(I).ObjectName
explodedObjects(I).Color=acByLayer
explodedObjects(I).Update
Next
EndSub
ActiveX/VBA>>>>
Block
SubCh10_RedefiningABlock()
'
DimblockObjAsAcadBlock
DiminsertionPnt(0To2)AsDouble
insertionPnt(0)=0
insertionPnt(1)=0
insertionPnt(2)=0
SetblockObj=ThisDrawing.Blocks.Add_
(insertionPnt,"CircleBlock")
'
DimcircleObjAsAcadCircle
Dimcenter(0To2)AsDouble
DimradiusAsDouble
center(0)=0
center(1)=0
center(2)=0
radius=1
SetcircleObj=blockObj.AddCircle(center,radius)
'
DimblockRefObjAsAcadBlockReference
insertionPnt(0)=2
insertionPnt(1)=2
insertionPnt(2)=0
SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_
(insertionPnt,"CircleBlock",1#,1#,1#,0)
ZoomAll
'
'
circleObj.radius=3
blockRefObj.Update
EndSub
ActiveX/VBA>>>
AutoCAD
“”
ActiveX/VBA>>>>
AddAttribute
acAttributeModeNormal
acAttributeModeInvisible
ATTDISP“”
acAttributeModeConstant
acAttributeModeVerify
acAttributeModePreset
acAttributeModeInvisible+acAttributeModeConstant
TagacAttributeModeConstant
AutoCAD
InsertBlock
SubCh10_CreatingAnAttribute()
'
DimblockObjAsAcadBlock
DiminsertionPnt(0To2)AsDouble
insertionPnt(0)=0
insertionPnt(1)=0
insertionPnt(2)=0
SetblockObj=ThisDrawing.Blocks.Add_
(insertionPnt,"BlockWithAttribute")
'
DimattributeObjAsAcadAttribute
DimheightAsDouble
DimmodeAsLong
DimpromptAsString
DiminsertionPoint(0To2)AsDouble
DimtagAsString
DimvalueAsString
height=1
mode=acAttributeModeVerify
prompt="NewPrompt"
insertionPoint(0)=5
insertionPoint(1)=5
insertionPoint(2)=0
tag="NewTag"
value="NewValue"
SetattributeObj=blockObj.AddAttribute(height,mode,_
prompt,insertionPoint,tag,value)
'
'
DimblockRefObjAsAcadBlockReference
insertionPnt(0)=2
insertionPnt(1)=2
insertionPnt(2)=0
SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_
(insertionPnt,"BlockWithAttribute",1#,1#,1#,0)
EndSub
ActiveX/VBA>>>>
Attribute
Alignment
Backward
FieldLength
Height
InsertionPoint
Mode
PromptString
Rotation
ScaleFactor
TagString
ArrayPolar
ArrayRectangular
Copy
Erase
Mirror
Move
Rotate
ScaleEntity
SubCh10_RedefiningAnAttribute()
'
DimblockObjAsAcadBlock
DiminsertionPnt(0To2)AsDouble
insertionPnt(0)=0
insertionPnt(1)=0
insertionPnt(2)=0
SetblockObj=ThisDrawing.Blocks.Add_
(insertionPnt,"BlockWithAttribute")
'
DimattributeObjAsAcadAttribute
DimheightAsDouble
DimmodeAsLong
DimpromptAsString
DiminsertionPoint(0To2)AsDouble
DimtagAsString
DimvalueAsString
height=1
mode=acAttributeModeVerify
prompt="NewPrompt"
insertionPoint(0)=5
insertionPoint(1)=5
insertionPoint(2)=0
tag="NewTag"
value="NewValue"
SetattributeObj=blockObj.AddAttribute(height,mode,_
prompt,insertionPoint,tag,value)
'
'
DimblockRefObjAsAcadBlockReference
insertionPnt(0)=2
insertionPnt(1)=2
insertionPnt(2)=0
SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_
(insertionPnt,"BlockWithAttribute",1#,1#,1#,0)
'
attributeObj.Backward=True
attributeObj.Update
EndSub
ActiveX/VBA>>>>
GetAttributesGetConstantAttributesGetAttributesGetConstantAttributes
TagStringTextString
TagStringTextString
“”
SubCh10_GettingAttributes()
'
DimblockObjAsAcadBlock
DiminsertionPnt(0To2)AsDouble
insertionPnt(0)=0
insertionPnt(1)=0
insertionPnt(2)=0
SetblockObj=ThisDrawing.Blocks.Add_
(insertionPnt,"TESTBLOCK")
'
DimattributeObjAsAcadAttribute
DimheightAsDouble
DimmodeAsLong
DimpromptAsString
DiminsertionPoint(0To2)AsDouble
DimtagAsString
DimvalueAsString
height=1#
mode=acAttributeModeVerify
prompt="AttributePrompt"
insertionPoint(0)=5
insertionPoint(1)=5
insertionPoint(2)=0
tag="AttributeTag"
value="AttributeValue"
'
SetattributeObj=blockObj.AddAttribute_
(height,mode,prompt,_
insertionPoint,tag,value)
'
DimblockRefObjAsAcadBlockReference
insertionPnt(0)=2
insertionPnt(1)=2
insertionPnt(2)=0
SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_
(insertionPnt,"TESTBLOCK",1,1,1,0)
ZoomAll
'
DimvarAttributesAsVariant
varAttributes=blockRefObj.GetAttributes
'
'Msgbox
DimstrAttributesAsString
strAttributes=""
DimIAsInteger
ForI=LBound(varAttributes)ToUBound(varAttributes)
strAttributes=strAttributes+"Tag:"+_
varAttributes(I).TagString+vbCrLf+_
"Value:"+varAttributes(I).textString
Next
MsgBox"TheattributesforblockReference"+_
blockRefObj.Name&"are:"&vbCrLf_
&strAttributes
'
'SetAttributes
'
'
varAttributes(0).textString="NEWVALUE!"
'
DimnewvarAttributesAsVariant
newvarAttributes=blockRefObj.GetAttributes
'
strAttributes=""
ForI=LBound(varAttributes)ToUBound(varAttributes)
strAttributes=strAttributes+"Tag:"+_
newvarAttributes(I).TagString+vbCrLf+_
"Value:"+newvarAttributes(I).textString
Next
MsgBox"TheattributesforblockReference"&_
blockRefObj.Name&"are:"&vbCrLf_
&strAttributes
EndSub
<$nopage>,
ActiveX/VBA>>
“”
ActiveX/VBA>>>
AutoCAD
ActiveX/VBA>>>
AutoCADAutoCADAutoCADVISRETAINAutoCAD
AttachExternalReferenceAttachExternalReferenceExternalReference
“”
“Sample”“ 3DHouse.dwg”PathName
SubCh10_AttachingExternalReference()
OnErrorGoToERRORHANDLER
DimInsertPoint(0To2)AsDouble
DiminsertedBlockAsAcadExternalReference
DimtempBlockAsAcadBlock
DimmsgAsString,PathNameAsString
'
InsertPoint(0)=1
InsertPoint(1)=1
InsertPoint(2)=0
PathName="C:/ProgramFiles/AutoCAD2008/sample/3DHouse.dwg"
'Block
GoSubListBlocks
'
SetinsertedBlock=ThisDrawing.ModelSpace._
AttachExternalReference(PathName,"XREF_IMAGE",_
InsertPoint,1,1,1,0,False)
ZoomAll
'Block
GoSubListBlocks
ExitSub
ListBlocks:
msg=vbCrLf'
ForEachtempBlockInThisDrawing.Blocks
msg=msg&tempBlock.Name&vbCrLf
Next
MsgBox"Thecurrentblocksinthisdrawingare:"&msg
Return
ERRORHANDLER:
MsgBoxErr.Description
EndSub
ActiveX/VBA>>>>
AttachExternalReferenceOverlayTRUE
ActiveX/VBA>>>
AutoCAD
Detach
“Sample”“ 3DHouse.dwg”PathName
SubCh10_DetachingExternalReference()
OnErrorGoToERRORHANDLER
'
DimxrefHomeAsAcadBlock
DimxrefInsertedAsAcadExternalReference
DiminsertionPnt(0To2)AsDouble
DimPathNameAsString
insertionPnt(0)=1
insertionPnt(1)=1
insertionPnt(2)=0
PathName="c:/AutoCAD2008/sample/3DHouse.dwg"
'
SetxrefInserted=ThisDrawing.ModelSpace._
AttachExternalReference(PathName,"XREF_IMAGE",_
insertionPnt,1,1,1,0,False)
ZoomAll
MsgBox"Theexternalreferenceisattached."
'
DimnameAsString
name=xrefInserted.name
ThisDrawing.Blocks.Item(name).Detach
MsgBox"Theexternalreferenceisdetached."
ExitSub
ERRORHANDLER:
MsgBoxErr.Description
EndSub
ActiveX/VBA>>>
Reload
“Sample”“ 3DHouse.dwg”PathName
SubCh10_ReloadingExternalReference()
OnErrorGoToERRORHANDLER
'
DimxrefHomeAsAcadBlock
DimxrefInsertedAsAcadExternalReference
DiminsertionPnt(0To2)AsDouble
DimPathNameAsString
insertionPnt(0)=1
insertionPnt(1)=1
insertionPnt(2)=0
PathName="c:/AutoCAD2008/sample/3DHouse.dwg"
'
SetxrefInserted=ThisDrawing.ModelSpace._
AttachExternalReference(PathName,"XREF_IMAGE",_
insertionPnt,1,1,1,0,False)
ZoomAll
MsgBox"Theexternalreferenceisattached."
'
ThisDrawing.Blocks.Item(xrefInserted.name).Reload
MsgBox"Theexternalreferenceisreloaded."
ExitSub
ERRORHANDLER:
MsgBoxErr.Description
EndSub
ActiveX/VBA>>>
UnloadAutoCAD
“Sample”“3DHouse.dwg”PathName
SubCh10_UnloadingExternalReference()
OnErrorGoToERRORHANDLER
'
DimxrefHomeAsAcadBlock
DimxrefInsertedAsAcadExternalReference
DiminsertionPnt(0To2)AsDouble
DimPathNameAsString
insertionPnt(0)=1
insertionPnt(1)=1
insertionPnt(2)=0
PathName="c:/AutoCAD2008/sample/3DHouse.dwg"
'
SetxrefInserted=ThisDrawing.ModelSpace._
AttachExternalReference(PathName,"XREF_IMAGE",_
insertionPnt,1,1,1,0,False)
ZoomAll
MsgBox"Theexternalreferenceisattached."
'
ThisDrawing.Blocks.Item(xrefInserted.name).Unload
MsgBox"Theexternalreferenceisunloaded."
ExitSub
ERRORHANDLER:
MsgBoxErr.Description
EndSub
ActiveX/VBA>>>
Bind
BindbPrefixNamebPrefixNameTRUE<blockname>$x$xbPrefixNameFALSEAutoCADbPrefixNameTRUE
“”
“Sample”“ 3DHouse.dwg”PathName
SubCh10_BindingExternalReference()
OnErrorGoToERRORHANDLER
'
DimxrefHomeAsAcadBlock
DimxrefInsertedAsAcadExternalReference
DiminsertionPnt(0To2)AsDouble
DimPathNameAsString
insertionPnt(0)=1
insertionPnt(1)=1
insertionPnt(2)=0
PathName="c:/AutoCAD2008/sample/3DHouse.dwg"
'
SetxrefInserted=ThisDrawing.ModelSpace._
AttachExternalReference(PathName,"XREF_IMAGE",_
insertionPnt,1,1,1,0,False)
ZoomAll
MsgBox"Theexternalreferenceisattached."
'
ThisDrawing.Blocks.Item(xrefInserted.name).BindFalse
MsgBox"Theexternalreferenceisbound."
ExitSub
ERRORHANDLER:
MsgBoxErr.Description
EndSub
ActiveX/VBA>>>
ActiveXAutomationAutoCADXCLIPSendCommandXCLIPAutoCAD
ActiveX/VBA>>>
XLOADCTLINDEXCTLAutoCAD“”
XRefDemandLoadacDemandLoadEnabledWithCopyAutoCADAutoCAD
SetVariableINDEXCTLINDEXCTL
0=
1=
2=
3=
AutoCADINDEXCTL0
“”
ActiveX/VBA>>
SubCh10_AttachXDataToSelectionSetObjects()
'
DimssetAsObject
Setsset=ThisDrawing.SelectionSets.Add("SS1")
'
sset.SelectOnScreen
'
DimappNameAsString,xdataStrAsString
appName="MY_APP"
xdataStr="Thisissomexdata"
DimxdataType(0To1)AsInteger
Dimxdata(0To1)AsVariant
'
'1001appName
xdataType(0)=1001
xdata(0)=appName
'1000
xdataType(1)=1000
xdata(1)=xdataStr
'
'
DimentAsObject
ForEachentInsset
ent.SetXDataxdataType,xdata
Nextent
EndSub
1000
SubCh10_ViewXData()
'
DimssetAsObject
Setsset=ThisDrawing.SelectionSets.Item("SS1")
'
DimxdataTypeAsVariant
DimxdataAsVariant
DimxdAsVariant
'
DimxdiAsInteger
xdi=0
'
'
DimmsgstrAsString
DimappNameAsString
DimentAsAcadEntity
appName="MY_APP"
ForEachentInsset
msgstr=""
xdi=0
'appName
ent.GetXDataappName,xdataType,xdata
'xdataType
'appName
IfVarType(xdataType)<>vbEmptyThen
ForEachxdInxdata
msgstr=msgstr&vbCrLf&xdataType(xdi)_
&":"&xd
xdi=xdi+1
Nextxd
EndIf
'msgstrNULL
Ifmsgstr=""Thenmsgstr=vbCrLf&"NONE"
MsgBoxappName&"xdataon"&ent.ObjectName&_
":"&vbCrLf&msgstr
Nextent
EndSub
<$nopage> <$nopage>
ActiveX/VBA>
VBA
AutoCADActiveX
MicrosoftVBAVBAVBA
VBAVBAVBAVBAVBAIDE
64
ActiveX/VBA>VBA >
VBA
VBAVBA
<$nopage> <$nopage>
ActiveX/VBA>VBA >
VBA
VisualBasic6VBA“”VisualBasic6VBA
UserForm——ShowModal
1. VBAIDE“”
2. “”“”
1. VBAIDE“”
2. “”“”ShowModalFalse
3. AcFocusCtrl( AcFocusCtrl.dll)AcFocusCtrl
ActiveX/VBA>VBA >VBA >
“”
AutoCAD ®
“”“”AutoCAD
<$nopage> <$nopage>
ActiveX/VBA>VBA >VBA >
ActiveX/VBA>VBA >VBA >>
SHIFT
1.
2.
1.
2.
3.
ActiveX/VBA>VBA >VBA >>
VBAVBAIDE“”
SHIFT
ActiveX/VBA>VBA >VBA >>
“”
1.
2. “”F4
3. “”
4.
Microsoft
ActiveX/VBA>VBA >VBA >>
“”“”“”
“”
ActiveX/VBA>VBA >VBA >
VBAShowShow
AutoCADAutoCADVBAHideHideAutoCADHide
HideShow
“UserForm1”
PublicSubMyApplication()
UserForm1.Show
EndSub
VBARUNAutoCAD
“UserForm1”
PublicSubMyAppHide()
UserForm1.Hide
EndSub
ActiveX/VBA>VBA >VBA >
VBALoadShow
Show
LoadShow
HideVBAShowHideLoadUnload
VBAShowHideLoadUnload
Show
Hide
Load
Unload Unload
ActiveX/VBA>VBA >VBA >
AutoCADVBAHideUnload
AutoCADAutoCADHideShow
ActiveX/VBA>VBA >
VBVBA
I/O
AutoCAD
AutoCAD
ActiveX/VBA>VBA >>
VBA
—
AutoCAD
ActiveX/VBA>VBA >>
VBVBA OnError
OnError
OnErrorResumeNext
OnErrorGoToLabel
OnErrorGoTo0
OnErrorResumeNextAutoCADOnErrorResumeNext
OnErrorGoToLabel
OnErrorResumeNext
OnErrorResumeNext
SubCh11_ColorEntities()
DimentryAsObject
OnErrorResumeNext
ForEachentryInThisDrawing.ModelSpace
entry.Color=acRed
Nextentry
EndSub
OnErrorGoTo
OnErrorGoToMyErrorHandling
SubCh11_ColorEntities2()
DimentryAsObject
OnErrorGoToMyErrorHandler
ForEachentryInThisDrawing.ModelSpace
entry.Color=acRed
Nextentry
'
ExitSub
MyErrorHandler:
Msgboxentry.EntityName+"isonalockedlayer."+_
"Thehandleis:"+entry.Handle
ResumeNext
EndSub
OnErrorGoTo0 OnErrorResumeNext OnError
GoToLabel OnErrorGoTo0
ActiveX/VBA>VBA >>
VBVBAErrNumberDescriptionSourceHelpFileHelpContextLastDLLErrorErrNumberDescriptionNumberDescription
Number
ActiveX/VBA>VBA >>
AutoCAD
AutoCADInitializeUserInput
ActiveX/VBA>VBA >
VBA
VBAVBAIDE“”“” “” “”
ActiveX/VBA>VBA >
VBA
AutoCADMacroVBAMacro
-VBARUNfilename.dvb!modulename.macroname
filename modulename macronameAutoCAD
ActiveX/VBA>VBA >
VBA
VBA
VBAAutoCAD acad.dvb
acad.dvb VBALOADAutoCADAutoLISPVBA myproj.dvbVBA notepad.exe acad.lsp
(defunS::STARTUP()
(command"_VBALOAD""myproj.dvb")
)
ActiveX/VBA>VBA >
VBA
acad.dvbAutoCADacad.lsp VBARUNdrawline drawline acad.dvb notepad.exeacad.lsp
(defunS::STARTUP()
(command"_-vbarun""drawline")
)
AcadStartupVBAVBA acad.dvb AcadStartup
ActiveX/VBA>VBA >
VBAIDE
“VBA”“VisualBasic”VBAVBAIDE
“VBA” VBALOAD“VBA”FILEDIAFILEDIA1
ActiveX/VBA>VBA >
AutoCADVBA
ThisDrawing ThisDrawing
AutoCADDocumentApplicationMenuBar
AutoCADAutoCADAutoCAD
ActiveX/VBA>VBA >
VBA
AutoCAD
VBA
VBA
VBA VBAVisualBasic6
ActiveX/VBA>VBA >>
VisualBasic6
VisualBasic6AutoCAD(EXE)
ActiveX/VBA>VBA >
64
Microsoft64VBA3264AutoCAD64AutoCADVBA3264“thunking”
VBA64AutoCAD32AutoCADVBAIDEAutoCAD
AutoCADVBAAutoCADObjectId32
ActiveX/VBA>VBA >64>
VBAAutoCAD
64326432DLL64EXEDLL6464
VB New64AutoCADCOMDLLVBA3264DLL
DimcolorAsAcadAcCmColor
Setcolor=NewAcadAcCmColor
DimcolAsNewAcadAcCmColor
color.SomeMethod()
DimcolorAsAcadAcCmColor
Setcolor=AcadApplication.GetInterfaceObject(“Autocad.AcCmColor.17”)
IDispatchAcadApplication.GetInterfaceObject(“ProgIdOfAcAnyObject”)
IUnknown AcSmSheetSetAcSmSheetMgr 64VBAVB.Net
ActiveX/VBA>VBA >64>
ObjectId
AutoCAD200864ID64( __int64)32VBA“32” ObjectID32()
64
VBAID32IDID64ID32IDVBAAutoCAD64ID
32ID
DimsplineObjAsAcadSpline
DimobjectIDAsLong
objectID=splineObj.objectID
DimtempObjAsAcadObject
SettempObj=ThisDrawing.ObjectIdToObject(objectID)
64
DimsplineObjAsAcadSpline
DimobjectIDAsLong
objectID=splineObj.objectID32
DimtempObjAsAcadObject
SettempObj=ThisDrawing.ObjectIdToObject32(objectID)
VBAIDID
DimsplineObjAsAcadSpline
DimobjectIDAsLong
objectID=splineObj.objectID
DimtempObjAsAcadObject
SettempObj=ThisDrawing.ObjectIdToObject(objectID)
64
DimsplineObjAsAcadSpline
DimobjectHandleAsString
objectHandle=splineObj.Handle
DimtempObjAsAcadObject
SettempObj=ThisDrawing.HandleToObject(objectHandle)
AutoCADVBAVBAVBAVB.Net
ActiveX/VBA>VBA >64>
32
AutoCAD200832
64VBA
GetBlockAttributeValue32 32ID
GetBlockTableRecordId32 32ID
GetDataLink32 32ID
GetFieldId32 32ID
GetGridLinetype32 32ID
Key32 64CopyObjectsID
ObjectID32 64ID
ObjectIDtoObject32 64ID
OwnerID32 64ID
SetBlockAttributeValue32 32ID
SetBlockTableRecordId32 32ID
SetDataLink32 32ID
SetFieldId32 32ID
SetGridLinetype32 32ID
Value32 64ID
ActiveX/VBA>
WindowsAPI
ActiveXAutoCADActiveXMicrosoftExcelMicrosoftWord
VisualLISPWindowsVBAWindowsAPI
ActiveX/VBA>WindowsAPI >
VisualLISP
VisualLISP®ActiveX ®ActiveXActiveXVisualLISPVBARUNVBA
ActiveXVBASendCommandVisualLISPActiveXVBAAutoCAD
VisualLISPActiveX AutoLISPDeveloper'sGuide
ActiveX/VBA>WindowsAPI >
Windows
AutoCAD®ActiveXActiveXMicrosoftExcelMicrosoftWordAutoCADAutoCADAutoCADAutoCADAutoCADMicrosoftExcel
AutoCADActiveXActiveXActiveX
AutoCADMicrosoft
ActiveX
1. ActiveX
2.
3. AutoCAD
ActiveX
ActiveX/VBA>WindowsAPI >Windows >
ActiveX
VBA
VBAIDEVBAIDE“”“”VBAMicrosoftExcelMicrosoftExcel
VBA
VBA
1. VBAIDE“”“”
2. “”
3. “”
ActiveX/VBA>WindowsAPI >Windows >
Dim Dim Dim Excel.Application
DimExcelAppObjasExcel.Application
SetNew SetExcelNewExcel
SetExcelAppObj=NewExcel.Application
New
ActiveX/VBA>WindowsAPI >Windows >
Excel
ExcelAppObj.Visible=TRUE
VBA
ActiveX/VBA>WindowsAPI >Windows >>
ApplicationQuitExcel
ExcelAppObj.Application.Quit
ExcelAutoCAD
Excel
1. sample/activeX/attrib.dwg
2. AutoCADVBAIDEVBAIDE
3. VBAIDE“” “”“MicrosoftExcel8.0”
4. VBA“”
SubCh12_Extract()
DimExcelAsExcel.Application
DimExcelSheetAsObject
DimExcelWorkbookAsObject
DimRowNumAsInteger
DimHeaderAsBoolean
DimelemAsAcadEntity
DimArray1AsVariant
DimCountAsInteger
'Excel
SetExcel=NewExcel.Application
'
SetExcelWorkbook=Excel.Workbooks.Add
SetExcelSheet=Excel.ActiveSheet
ExcelWorkbook.SaveAs"Attribute.xls"
RowNum=1
Header=False
'
'
ForEachelemInThisDrawing.ModelSpace
Withelem
'
'
IfStrComp(.EntityName,"AcDbBlockReference",1)_
=0Then
If.HasAttributesThen
'
Array1=.GetAttributes
'
'Excel
ForCount=LBound(Array1)ToUBound(Array1)
IfHeader=FalseThen
IfStrComp(Array1(Count).EntityName,_
"AcDbAttribute",1)=0Then
ExcelSheet.Cells(RowNum,_
Count+1).value=_
Array1(Count).TagString
EndIf
EndIf
NextCount
RowNum=RowNum+1
ForCount=LBound(Array1)ToUBound(Array1)
ExcelSheet.Cells(RowNum,Count+1).value_
=Array1(Count).textString
NextCount
Header=True
EndIf
EndIf
EndWith
Nextelem
Excel.Application.Quit
EndSub
ActiveX/VBA>WindowsAPI >
VBAWindowsAPI
Windows®APIWindows
WindowsAPIWindowsAPI
WindowsAPIAPI Declare Declare
DLL
DLL
DeclareVBAPrivate Declare
Declare Declare Declare
DeclareMicrosoft Win32api.txtVisualBasic6Office Declare
MicrosoftVBA DeclareMicrosoftWindowsAPIMircrosoftDeveloperNetworkCDWindowsAPIDanApplemanBasicProgrammer'sGuidetotheWin32APIVisualBasic6
<$nopage>:
ActiveX/VBA>
ActiveX/VBA
ActiveXVisualBasicforApplications(VBA)AutoCAD
AutoCADVBA
<$nopage>:
ActiveX/VBA>ActiveX/VBA >
AutoCAD ®VBA(VBAIDE)AutoCAD“”VBAIDEAutoCAD“”VBAIDEAutoCADVBAIDE
VBAIDE
1. AutoCAD
2. vbaideENTERVBAIDEVBAIDE“AutoCADVBA”VBAIDE
ActiveX/VBA>ActiveX/VBA >
AutoCAD: gardenpath
:
:
:
:
:
ActiveX/VBA>ActiveX/VBA >
GardenpathActiveX
1. vbaideENTER
2. VBAIDE“”“”“”
3. “”
Constpi=3.14159
'
Functiondtr(aAsDouble)AsDouble
dtr=(a/180)*pi
EndFunction
Functiondtr(aAsDouble)AsDoubleENTER
EndFunction Endpi3.14159 pi3.14159 dtr dtr a180piVBA
4. “” “Global1” gardenpath.dvb
1. dtr
'
Functiondistance(spAsVariant,epAsVariant)_
AsDouble
DimxAsDouble
DimyAsDouble
DimzAsDouble
x=sp(0)-ep(0)
y=sp(1)-ep(1)
z=sp(2)-ep(2)
distance=Sqr((Sqr((x^2)+(y^2))^2)+(z^2))
EndFunction
2.
ActiveX/VBA>ActiveX/VBA >
Gardenpath
Utility
gpuser
ActiveX/VBA>ActiveX/VBA >>
VBAIDE“” Constpi=3.14159
Privatesp(0To2)AsDouble
Privateep(0To2)AsDouble
PrivatehwidthAsDouble
PrivatetradAsDouble
PrivatetspacAsDouble
PrivatepangleAsDouble
PrivateplengthAsDouble
PrivatetotalwidthAsDouble
Privateangp90AsDouble
Privateangm90AsDouble
“”/“()”“()”()
ActiveX/VBA>ActiveX/VBA >>
gpuser
gpuser distance
'
PrivateSubgpuser()
DimvarRetAsVariant
varRet=ThisDrawing.Utility.GetPoint(_
,"Startpointofpath:")
sp(0)=varRet(0)
sp(1)=varRet(1)
sp(2)=varRet(2)
varRet=ThisDrawing.Utility.GetPoint(_
,"Endpointofpath:")
ep(0)=varRet(0)
ep(1)=varRet(1)
ep(2)=varRet(2)
hwidth=ThisDrawing.Utility._
GetDistance(sp,"Halfwidthofpath:")
trad=ThisDrawing.Utility._
GetDistance(sp,"Radiusoftiles:")
tspac=ThisDrawing.Utility._
GetDistance(sp,"Spacingbetweentiles:")
pangle=ThisDrawing.Utility.AngleFromXAxis(_
sp,ep)
totalwidth=2*hwidth
plength=distance(sp,ep)
angp90=pangle+dtr(90)
angm90=pangle-dtr(90)
EndSub
gpuser DimvarRetAsVariant varRet()
varRet=ThisDrawing.Utility.GetPoint(,"Start
pointofpath:")GetPointVBA
GetPoint ThisDrawing ThisDrawing( .) UtilityUtility GetPoint
GetPoint varRet sp
GetDistance( hwidth)( trad)( tspac)GetDistanceGetDistanceAutoCAD
pangleAngleFromXAxis2 plengthdistance angp90 angm90/90
gpuser
ActiveX/VBA>ActiveX/VBA >
gpuser
'
PrivateSubdrawout()
Dimpoints(0To9)AsDouble
DimplineAsAcadLWPolyline
DimvarRetAsVariant
varRet=ThisDrawing.Utility.PolarPoint(_
sp,angm90,hwidth)
points(0)=varRet(0)
points(1)=varRet(1)
points(8)=varRet(0)
points(9)=varRet(1)
varRet=ThisDrawing.Utility.PolarPoint(_
varRet,pangle,plength)
points(2)=varRet(0)
points(3)=varRet(1)
varRet=ThisDrawing.Utility.PolarPoint(_
varRet,angp90,totalwidth)
points(4)=varRet(0)
points(5)=varRet(1)
varRet=ThisDrawing.Utility.PolarPoint(_
varRet,pangle+dtr(180),plength)
points(6)=varRet(0)
points(7)=varRet(1)
Setpline=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
EndSub
AddLightweightPolyline
PolarPoint( sp)( hwidth)-90PolarPoint X Y
plength widthPolarPoint( varRet)
AddLightweightPolylineModelSpaceAutoCAD
ActiveX/VBA>ActiveX/VBA >
VBAIDE“” drawout
'
'
PrivateSubdrow(pdAsDouble,offsetAsDouble)
Dimpfirst(0To2)AsDouble
Dimpctile(0To2)AsDouble
Dimpltile(0To2)AsDouble
DimcirAsAcadCircle
DimvarRetAsVariant
varRet=ThisDrawing.Utility.PolarPoint(_
sp,pangle,pd)
pfirst(0)=varRet(0)
pfirst(1)=varRet(1)
pfirst(2)=varRet(2)
varRet=ThisDrawing.Utility.PolarPoint(_
pfirst,angp90,offset)
pctile(0)=varRet(0)
pctile(1)=varRet(1)
pctile(2)=varRet(2)
pltile(0)=pctile(0)
pltile(1)=pctile(1)
pltile(2)=pctile(2)
DoWhiledistance(pfirst,pltile)<(hwidth-trad)
Setcir=ThisDrawing.ModelSpace.AddCircle(_
pltile,trad)
varRet=ThisDrawing.Utility.PolarPoint(_
pltile,angp90,(tspac+trad+trad))
pltile(0)=varRet(0)
pltile(1)=varRet(1)
pltile(2)=varRet(2)
Loop
varRet=ThisDrawing.Utility.PolarPoint(_
pctile,angm90,tspac+trad+trad)
pltile(0)=varRet(0)
pltile(1)=varRet(1)
pltile(2)=varRet(2)
DoWhiledistance(pfirst,pltile)<(hwidth-trad)
Setcir=ThisDrawing.ModelSpace.AddCircle(_
pltile,trad)
varRet=ThisDrawing.Utility.PolarPoint(_
pltile,angm90,(tspac+trad+trad))
pltile(0)=varRet(0)
pltile(1)=varRet(1)
pltile(2)=varRet(2)
Loop
EndSub
'
PrivateSubdrawtiles()
DimpdistAsDouble
DimoffsetAsDouble
pdist=trad+tspac
offset=0
DoWhilepdist<=(plength-trad)
drowpdist,offset
pdist=pdist+((tspac+trad+trad)*Sin(dtr(60)))
Ifoffset=0Then
offset=(tspac+trad+trad)*Cos(dtr(60))
offset=0
EndIf
Loop
EndSub
drow
drowPolarPointPolarPoint WhileWhilePolarPoint( trad)( tspac) while
drawtiles drow While drow6060
drawtiles If06000
ActiveX/VBA>ActiveX/VBA >
GardenpathVBAIDE“” drawtiles
'
Subgardenpath()
DimsblipAsVariant
DimscmdeAsVariant
gpuser
sblip=ThisDrawing.GetVariable("blipmode")
scmde=ThisDrawing.GetVariable("cmdecho")
ThisDrawing.SetVariable"blipmode",0
ThisDrawing.SetVariable"cmdecho",0
drawout
drawtiles
ThisDrawing.SetVariable"blipmode",sblip
ThisDrawing.SetVariable"cmdecho",scmde
EndSub
path gpuserGetVariableBLIPMODECMDECHO sblip scmdeSetVariable0 drawoutdrawtilesSetVariable
gardenpath
ActiveX/VBA>ActiveX/VBA >
AutoCAD“”“” “”“”“ ThisDrawing.gardenpath”“”
VBAIDE gardenpathF8 gpusergpuserF8
gpuserF8GetPoint“” “”“”VBAIDE“”
F8GetPointGetPointAutoCADAutoCADGetPoint
GetPointF8AutoCAD
ActiveX/VBA>ActiveX/VBA >
“” “”“”“”AutoCAD: 2,2
: 9,8
: 2
: 0.2
: 0.1
Gardenpath
ActiveX/VBA>ActiveX/VBA >
GardenpathVBAIDE
gardenpath.dvb gpdialog.dvb gpdialog.dvbAutoCAD
“”
ActiveX/VBA>ActiveX/VBA >>
“”
VBAIDE
1. “”“”
2. (
)(
)(
)(
)
3.
1. “OptionButton1”“”“”OptionButton1
()=gp_polyCaption=PolygonControlTipText=PolygonTileShapeAccelerator=P
2. “OptionButton2”“”OptionButton2()=gp_circCaption=CircleControlTipText=CircleTileShapeAccelerator=I
1. “Label1”“”Label1()=label_tradCaption=Radiusoftiles
TabStop=True
2. “Label2”“”Label2()=label_tspacCaption=SpacebetweentilesTabStop=True
3. “Label3”“”Label3()=label_tsidesCaption=NumberofsidesTabStop=True
1. “TextBox1”“”TextBox1()=gp_trad
2. “TextBox2”“”TextBox2()=gp_tspac
3. “TextBox3”“”TextBox3()=gp_tsides
1. “CommandButton1”“”CommandButton1
()=acceptCaption=OKControlTipText=AccepttheoptionsAccelerator=ODefault=True
2. “CommandButton2”“”CommandButton2
()=cancelCaption=CancelControlTipText=CanceltheoperationAccelerator=C
3. “”()=gpDialogCaption=GardenPath
4.
ActiveX/VBA>ActiveX/VBA >>
“”
VBAIDE“”“ AutoCAD”“ ”“”“ AutoCAD”) ThisDrawing“ ”) gpDialog
“”“” gpDialog“”
“”
“” ThisDrawing“”
ActiveX/VBA>ActiveX/VBA >>
1. ThisDrawing
2. Declarations
PublictradAsDouble'
PublictspacAsDouble'
PublictsidesAsInteger'
PublictshapeAsString'
trad tspac tsides tshape
3. gpuser
trad=ThisDrawing.Utility._
GetDistance(sp,"Radiusoftiles:")
tspac=ThisDrawing.Utility._
GetDistance(sp,"Spacingbetweentiles:")
4. 3
LoadgpDialog
gpDialog.Show
5.
'
SubDrawShape(pltile)
DimangleSegmentAsDouble
DimcurrentAngleAsDouble
DimangleInRadiansAsDouble
DimcurrentSideAsInteger
DimvarRetAsVariant
DimaCircleAsAcadCircle
DimaPolygonAsAcadLWPolyline
ReDimpoints(1Totsides*2)AsDouble
'
SelectCasetshape
Case"Circle"
SetaCircle=ThisDrawing.ModelSpace._
AddCircle(pltile,trad)
Case"Polygon"
angleSegment=360/tsides
currentAngle=0
ForcurrentSide=0To(tsides-1)
angleInRadians=dtr(currentAngle)
varRet=ThisDrawing.Utility.PolarPoint(pltile,_
angleInRadians,trad)
points((currentSide*2)+1)=varRet(0)
points((currentSide*2)+2)=varRet(1)
currentAngle=currentAngle+angleSegment
NextcurrentSide
SetaPolygon=ThisDrawing.ModelSpace._
AddLightWeightPolyline(points)
aPolygon.Closed=True
EndSelect
EndSub
SelectCase tshape
6. drow
Setcir=ThisDrawing.ModelSpace.AddCircle(pltile,trad)
DrawShape(pltile)'
ActiveX/VBA>ActiveX/VBA >>
DrawShape
1. gpDialog“”
2.
PrivateSubgp_poly_Click()
gp_tsides.Enabled=True
ThisDrawing.tshape="Polygon"
EndSub
PrivateSubgp_circ_Click()
gp_tsides.Enabled=False
ThisDrawing.tshape="Circle"
EndSub
gp_poly_Click() gp_circ_Click()“ _Click”“”
3. PrivateSubgp_poly_Click()/ gp_poly Click DblClick gp_poly Click“” tshape
“ ” gp_circ Click tshape“ ”
4. “”
PrivateSubaccept_Click()
IfThisDrawing.tshape="Polygon"Then
ThisDrawing.tsides=CInt(gp_tsides.text)
If(ThisDrawing.tsides<3#)Or_
(ThisDrawing.tsides>1024#)Then
MsgBox"Enteravaluebetween3and"&_
"1024forthenumberofsides."
ExitSub
EndIf
EndIf
ThisDrawing.trad=CDbl(gp_trad.text)
ThisDrawing.tspac=CDbl(gp_tspac.text)
IfThisDrawing.trad<0#Then
MsgBox"Enterapositivevaluefortheradius."
ExitSub
EndIf
If(ThisDrawing.tspac<0#)Then
MsgBox"Enterapositivevalueforthespacing."
ExitSub
EndIf
GPDialog.Hide
EndSub
gp_tsides“Text” CInt31024“” CDbl
gpDialog.Hide
5. “”
PrivateSubcancel_Click()
UnloadMe
End
EndSub
Initialize
6.
PrivateSubUserForm_Initialize()
gp_circ.Value=True
gp_trad.Text=".2"
gp_tspac.Text=".1"
gp_tsides.Text="5"
gp_tsides.Enabled=False
ThisDrawing.tsides=5
EndSub
tsides tsides3 DrawShapepoints tsides
AutoCAD
ActiveX/VBA>
VisualLISPActiveX/VBA
VisualLISPActiveXVBAVisualLISPActiveXVBA
VisualLISPActiveX/VBA
ActiveX/VBA>VisualLISPActiveX/VBA >
VisualLISPActiveX/VBA
VisualLISPActiveX ®VBAVisualBasic6“AutoCAD.Application”ActiveXAutomationVisualBasic6
VisualLISPActiveX/VBA
AutoLISP ActiveXVBAVisualBasic6
+ +
- -
* *
/ /
= =
/= <>
< <
<= <=
/= <>
> >
>= >=
~
1+ +
1- -
abs Abs
acad_colordlg
acad_helpdlg HELP
acad_strlsort SORT
action_tile
add_list
ads AutoCAD.Application.ListADS
alert MsgBox
and
angle AutoCAD.Application.ActiveDocument.Utility.AngleFromXAxis
angtof AutoCAD.Application.ActiveDocument.Utility.AngleToReal
angtos AutoCAD.Application.ActiveDocument.Utility.AngleToString
append
apply
arx AutoCAD.Application.ListARX
arxload AutoCAD.Application.LoadARX
arxunload AutoCAD.Application.UnloadARX
ascii Asc
assoc
atan Atn
atof CDbl
atoi CInt
atom IS
atoms-family
autoarxload
autoload
Boole
boundp IS
car/cdr
chr Chr
client_data_tile
close AutoCAD.Application.Documents.Close
command AutoCAD.ActiveDocument.SendCommand
cond SelectCase
cons AutoCAD.Application.collection.Add<>
cos Cos
cvunit
defun End
dictadd AutoCAD.Application.ActiveDocument.Dictionaries.Add
dictnext AutoCAD.Application.ActiveDocument.Dictionaries.Item
dictremove AutoCAD.Application.ActiveDocument.Dictionaries.Dictionary.Delete
dictrename AutoCAD.Application.ActiveDocument.Dictionaries.Dictionary.Rename
dictsearch AutoCAD.Application.ActiveDocument.Dictionaries.Dictionary.GetNameGetObject
dimx_tiledimy_tile
distance AutoCAD.Application.Utility.GetDistance
distof
done_dialog
end_image
end_list
entdel AutoCAD.Application.ActiveDocument.collection_object.Delete
entget AutoCAD.Application.ActiveDocument.collection_object.property
entlast AutoCAD.Application.ActiveDocument.Modelspace.Item-1
entmake AutoCAD.Application.ActiveDocument.Modelspace.Add<>
entmakex AutoCAD.Application.ActiveDocument.Modelspace.Add<>
entmod
entnext AutoCAD.Application.ActiveDocument.collection.Item
entsel AutoCAD.Application.ActiveDocument.SelectionSets//
entupd AutoCAD.Application.ActiveDocument.Modelspace.object.Update
eq
equal Eqv
*error* Error//
eval
exit AutoCAD.Application.Quit
exp Exp
expand
expt ^
fill_image
findfile Dir
fix FixIntCint
float CDbl
foreach ForEach...Next
gc AutoCAD.Application.ActiveDocument.PurgeAll
gcd
get_attr
get_tile
getangle AutoCAD.Application.ActiveDocument.Utility.GetAngle
getcfg AutoCAD.Application.Preferences.property
getcname
getcorner AutoCAD.Application.ActiveDocument.Utility.GetCorner
getdist AutoCAD.Application.ActiveDocument.Utility.GetDistance
getenv AutoCAD.Application.Preferences.property
getfiled
getint AutoCAD.Application.ActiveDocument.Utility.GetInteger
getkword AutoCAD.Application.ActiveDocument.Utility.GetKeyword
getorient AutoCAD.Application.ActiveDocument.Utility.GetOrientation
getpoint AutoCAD.Application.ActiveDocument.Utility.GetPoint
getreal AutoCAD.Application.ActiveDocument.Utility.GetReal
getstring AutoCAD.Application.ActiveDocument.Utility.GetString
getvar AutoCAD.Application.GetVariable
graphscr AppActivateAutoCAD.Application.Caption
grclear Obsolete
grdraw
grread
grtext AutoCAD.Application.ActiveDocument.Utility.Prompt
grvecs
handent AutoCAD.Application.ActiveDocument.ModelSpace.object.Handle
help HELP
if If…Then…Else
initget AutoCAD.Application.ActiveDocument.Utility.InitializeUserInput
inters AutoCAD.Application.ActiveDocument.Modelspace.object.
IntersectWith
itoa Str
lambda
last arrayname(UBound(arrayname))
length UBound
list ReDim
listp IsArray
load_dialog
load AutomationAutoLISP
log Log
logand And
logior Or
lsh Imp
mapcar
max Max
mem
member
menucmd AutoCAD.Application.MenuBar
menugroup AutoCAD.Application.MenuGroup
min Min
minusp <0
mode_tile
namedobjdict AutoCAD.Application.ActiveDocument.Dictionaries
nentsel AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.SelectAtPoint
nentselp AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.SelectAtPoint
new_dialog
not
nth object(n)
null IsNull
numberp TypeName
open Open
or
osnap SetVariableOSMODE
polar AutoCAD.Application.ActiveDocument.Utility.PolarPoint
prin1 AutoCAD.Application.ActiveDocument.Utility.Prompt
princ AutoCAD.Application.ActiveDocument.Utility.Prompt
print AutoCAD.Application.ActiveDocument.Utility.Prompt
progn
prompt AutoCAD.Application.ActiveDocument.Utility.Prompt
quit AutoCAD.Application.Quit
quote
read
read-char Input
read-line
redraw AutoCAD.Application.ActiveDocument.Modelspace.object.Update
regapp AutoCAD.Application.ActiveDocument.RegisteredApplications.Add
rem Mod
repeat For…Each,While,
reverse
rtos AutoCAD.Application.ActiveDocument.Utility.RealToString
set Set
set_tile
setcfg AutoCAD.Application.Preferences.property
setfunhelp
setq Set
setvar AutoCAD.Application.SetVariable
sin Sin
setview AutoCAD.Application.ActiveDocument.Viewports.Viewport.SetView
slide_image
snvalid
sqrt Sqr
ssadd AutoCAD.Application.ActiveDocument.SelectionSets.Add
ssdel AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.Delete
ssget AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.SelectOnScreen
ssgetfirst
sslength AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.Count
ssmemb IDSelectionSet
ssname AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.Name
ssnamex
sssetfirst AutoCAD.Application.ActiveDocument.PickfirstSelectionSet
startapp Shell
start_dialog
start_image
start_list
strcase StrConv
strcat &
strlen Len
subst
substr Mid
tablet
tblnext AutoCAD.Application.ActiveDocument.collection_object.Item
tblobjname AutoCAD.Application.ActiveDocument.collection_object.Name
tblsearch AutoCAD.Application.ActiveDocument.collection_object.Name
term_dialog
terpri
textbox AutoCAD.Application.ActiveDocument.space.object.GetBoundingBox
textpage
textscr
trace
trans AutoCAD.Application.ActiveDocument.Utility.TranslateCoordinates
type TypeName
unload_dialog
untrace
vector_image
ver AutoCAD.Application.Version
vports AutoCAD.Application.ActiveDocument.Viewports
wcmatch Like
while While…Wend
write-char Print
write-line Print
xdroom
xdsize
zerop =0