activex automation :automation autocad ... · microsoft visual studio® .net autocad ... autocad...

589
<$nopage>ActiveX Automation :Automation <$nopage>AutoCAD <$nopage>Color : <$nopage>TrueColor : <$nopage>VB:Automation <$nopage>VBA:Automation <$nopage>Visual Basic for Applications <$nopage>Visual Basic <$nopage>Automation : AutoCAD 2004:<$nopage>:Automation <$nopage> ActiveX/VBA > ActiveX Automation AutoCAD Visual Basic for Applications AutoCAD ActiveX AutoCAD Visual Basic for Applications (VBA) AutoCAD ActiveX VBA Automation

Upload: vuonghuong

Post on 14-Jun-2018

531 views

Category:

Documents


21 download

TRANSCRIPT

Page 1: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 2: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADActiveX

AutoCAD®ActiveX®AutoCADAutoCADAutoCAD“”Microsoft®WordVBAExcelVBA

ADDAX_INTRO

AutoCADActiveX

AutoCADActiveXAutomationAutoLISP®C++AutoCAD

Windows®MicrosoftExcelWord

ActiveXAutoCADAutoCADActiveX

AutoCAD

Page 3: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADVisualBasicforApplications(VBA)

MicrosoftVBAVisualBasic6(VB)VBAVBVBAAutoCADAutoCAD

VBAVBAAutoCADMicrosoftWordExcelAutomation

VisualBasic6AutoCADVBA

AutoCADVBA

VBA

VBAAutoCAD

Microsoft64VBASDK(.dll)64AutoCADVBAVBA32COM64AutoCADVBAVBAAutoCADVBAVB.NET

VBAAutoCAD

Page 4: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>AutoCADVisualBasicforApplications(VBA)>

VBAAutoCAD

VBAAutoCADActiveXAutomationAutoCADAutoCADVBAVBAAutoCADActiveXAutomationAutoCADAutoCADActiveXAutomationVBAAutoCAD

AutoCADAcitveXVBAAutoCADAutoCADAutoCADAutoCADVBAAutoLISPAutoCADAutoCADVBAAutoLISP

AutoCADActiveXAutomationAutoCADVBAActiveXAutomation ActiveXandVBAReferenceAutoCADActiveXAutomationVBAutoCADVBAAutoCADActiveXAutomation

VBAAutoCADVBAMicrosoftVBAVBAIDE

F1

VBAIDE“”

VBAIDE“?”Microsoft.NETFramework

Page 5: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 6: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>AutoCADVisualBasicforApplications(VBA)>VBAAutoCAD >

AutoCADMicrosoftOfficeVBAAutoCAD

Page 7: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADActiveXVBA

AutoCADActiveX/VBAAutoCADAPI

VBAActiveXAutoLISP

AutoCAD

Windows ActiveXVBAWindows

VBA

AutoCADActiveXVBAVisualBasic6AutoCAD

Page 8: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADActiveXVBA“GettingStartedwithVBA”“DevelopApplicationswithVBA”VBAVBAActiveXVBA

Page 9: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

VisualBasic6VisualBasic6VisualBasic6MicorsoftVisualBasicforApplication(IDE)“”

Page 10: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

ActiveXandVBAReference800VBAActiveX

AutoCADSampleAutoCADMicrosoftExcel

VisualBasicforApplicationsAutoCADActiveX

ActiveXandVBADeveloper'sGuide ActiveXandVBAReferenceAutoCADVBAAutoCAD

1. VBA

2. AutoCAD

3. VBARUN“”

4. “”“”“”

Page 11: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

Automation

ActiveXAutomationAutoCADVisualBasicforApplications(VBA)VisualBasic6(VB)AutomationAutomation

AutoCAD“AutoCAD”

Page 12: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>Automation >

AutoCAD2008 ActiveXandVBAReferenceVBAIDE

SortentsTable

Table

TableStyle

AutoCAD2008Automation SheetSetObjectsReference

Page 13: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 14: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

PreferencesOutput PreferencesOutput AutomaticPlotLogDefaultPlotToFilePathContinuousPlotLog

Viewport Viewport ModelViewSheetViewLabelBlockIdHasSheetViewSyncModelView

View View CategoryNameLayoutIdLayerStateHasVpAssociation

Page 15: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>Automation >

VBAIDEVisualBasic6AutoCADAutomationAutoCAD2008

AutoCAD2008AutomationAutoCADAutomation“acax17enu.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”

AutoCAD2008AutomationCreateObjectGetObjectGetInterfaceObjectProgIDAutoCADAutomationCreateObjectCreateObject“AutoCAD.Application.17”AutomationProgIDProgID

Page 16: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage> <$nopage>:

ActiveX/VBA>

VBA

AutoCADVisualBasicforApplications(VBA)VBA(IDE)VBAAutoCADVBAIDEAutoCADVBAIDEVBAVBAVBAIDE

VBAVBA

VBAIDE

AutoCADVBAAutoCADVBA

Page 17: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>

VBA

AutoCAD®VBAAutoCAD

AutoCADAutoCADAutoCAD

AutoCADAutoCAD

AutoCAD

AutoCADVBAVisualBasic6VBAIDEIMPORTEXPORTVBAVBAIDE

VisualStudio.NETCOMAutomationAutoCAD

Page 18: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage> <$nopage>:

ActiveX/VBA>VBA>

VBA

VBAAutoCADVBAAutoCADVBA

VBA

“”AutoCADVBAMANVBA

Page 19: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage> <$nopage>:

ActiveX/VBA>VBA>VBA >

AutoCADDVB

AutoCAD acad.dvb

VBA

1. “VBA”“”“VBA”

2. “VBA”“VBA”DVB

3. “”

VBALOAD“VBA”

DVBWindowsAutoCAD

Page 20: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBA > >

DVBWindowsAutoCAD

Page 21: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBA >

VBA

“”VBAVBAUNLOAD

Page 22: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBA >

AutoCAD

1. VBA

2. “”

Page 23: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBA >

AutoCAD

1. VBA

2. “”

3. “VBA”“”“”“VBA”“”

Page 24: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBA >

VBA

1. VBA

2. “” ACADProjectVBAIDEVBAIDE

Page 25: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBA >

VBAVBAIDE

VBA

1. VBA

2. “”“”

3.

4. “”

Page 26: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>

“”

Page 27: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA> >

“”

“”VBAAutoCAD“”“”AutoCADVBARUN

“”

AutoCAD

AutoCAD

1. “”

2. “”

3. “”

“”

“”“”

“”“”

1. “”

Page 28: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

2. “”

3. “”“”

Page 29: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA> >

AutoCAD

“”

1. “”

2. “”

VBAIDE

“”“”

Page 30: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA> >

VBAIDE“”VBAIDE VBAIDE

1. “”

2. “”

Page 31: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA> >

VBAIDE“”

1. “”

2. “”

Page 32: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA> >

AutoCADVBA

VBA

VBA“”“”“”

VBAVBAIDE

VBA

AutoCADVBA

1. “”“” “”“VBA”

2. “VBA”“”“”

3. “”

4. “”

Page 33: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 34: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>

VBAIDE

AutoCADVBAVBAIDEVBAIDE

VBAIDE

VBAIDE

VBAIDE“”“” “VisualBasic”

VBAVBAIDE

Page 35: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >

VBAIDE“”VBAVBA

“”“”“”

“”“”“”CTRL+R

Page 36: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >

Page 37: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >>

VBAAutoCADVBAAutoCAD

Page 38: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >>

Page 39: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >>

Page 40: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >>

Page 41: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >>

Page 42: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >>

1. VBAIDE“”

2. “”“”“”“”“”

Page 43: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >

FRMBASCLS

“”“”“”

1. VBAIDE“”

2. “”“”“”

3. “”“”

Page 44: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >

VBAIDE“”“”

“”

1. VBAIDE“”

2. “”“”“”

3. “”“”“”

“”“”“”“”

Page 45: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >>

“”

“”“”“”

“”

“”

“”

“”“”“”

Page 46: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >>

“”

“”

“”“”“”“”“”VBAIDE

“”“”“”

“”

Page 47: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >

.dvb .dvbVBAIDE“”

AutoCAD

ACADProject

Project.dvb

1. VBAIDE“”

2. “”Name

1. VBAIDE“”“”

2. “”

Page 48: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 49: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >

AutoCADVBASAVESAVEVBAIDE“”VBAVBA“VBA”

VBAIDESAVE

VBA“”

AutoCADVBA

project.dvb project.dvb project.dvb

Page 50: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >

VBA

VBA

VBAIDE“” “”

AutoCADAutoCAD

VBA

MicrosoftVBAAutoCADMicrosoftVBAVBAIDE“”MicrosoftVBA

VBA

VBA

1. VBAIDE“”

2. “”“”“”

3. “”“”“”

4. “”“”

5. “”“”

Page 51: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >

VBAIDE

“”VBAIDE“”“”“”

“”“”“”“”“”

Page 52: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >VBAIDE >

“”“”“”

Page 53: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >VBAIDE >

“”

Page 54: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >VBAIDE >

“”VBA

Page 55: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>VBAIDE >VBAIDE >

“”

Page 56: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 57: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

8. 7

ThisDrawing.SaveAs("Hello.dwg")

9. VBAIDE“”“”AutoCAD“”“ Hello.dwg”

Page 58: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>

VBAIDEVBAMicrosoftMicrosoftVBAIDE“”“MicrosoftVisualBasic”

Page 59: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>

AutoCADVBA

.dvbVBA

AutoCADVBA

VBAAutoCAD

VBAAutoCAD

VBAIDE

ThisDrawing

ThisDrawingVBAThisDrawingAutoCADThisDrawing

VBAIDE

VBA

VBA

VBA

“”

“”VBA

Page 60: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 61: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA>

AutoCADVBA

VBAIDE

VBAIDEVBAIDEVBAIDEAutoCADAutoCAD

VBALOAD

VBAAutoCAD

VBARUN

“”AutoCADVBA

VBAUNLOAD

AutoCADVBAVBA“”

VBAMAN

VBA

VBASTMT

AutoCADVBA

Page 62: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage> <$nopage>:

ActiveX/VBA>

ActiveXAutomation

AutoCADActiveXAutomationAutoCADAutoCADActiveXAutomation

F1AutoCADActiveXAutomationVBAIDEF1

AutoCAD

Page 63: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>ActiveXAutomation>

AutoCAD

AutoCAD ®ActiveX®AutoCADAutoCADActiveX

AutoCAD

Application“”

Page 64: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 65: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ApplicationDocument

PreferencesPlotUtilityAutoCAD

Page 66: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>AutoCAD >

Application

ApplicationAutoCADActiveXAutomationApplication

ApplicationPreferencesPreferences“”DatabasePreferencesApplicationAutoCADApplicationADSARXAutoCAD

ApplicationAutoCADDocumentsAutoCADMenuBarMenuGroupsVBAIDEVBE

ApplicationActiveXApplication

Page 67: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>AutoCAD >

Document

DocumentAutoCADDocumentsAutoCADModelSpacePaperSpaceLayersLinetypesTextStylesDocumentPlotUtility

DocumentSummaryInfo

Page 68: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 69: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>AutoCAD >

AutoCADAddAdd<>AddLine

CountItem

Page 70: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>ActiveXAutomation>AutoCAD >

Add<Entityname>AutoCADLayerLinetypeColorHandleCenterRadiusArea

LayersLinetypesDimStylesSelectionSetsAdd

Page 71: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>AutoCAD >

PreferencesPlotUtility

Preferences“”“”DatabasePreferencesSetVariableGetVariable“”

Plot“”

UtilityAutoCADAutoCAD

Page 72: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>AutoCAD >

AutoCAD

AutomationAutoCADAutoCAD

AutomationAutoCADAutoCAD

Page 73: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>:

ActiveX/VBA>ActiveXAutomation>

VBAVBAAutoCAD

VBA ThisDrawingAutoCAD ThisDrawingDocument

ThisDrawingAutoCAD ThisDrawingAutoCAD

ThisDrawing.Save

Application

Page 74: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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."

Page 75: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

MsgBox"Therearenoobjectsinmodelspace."

EndIf

EndSub

Page 76: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>:

ActiveX/VBA>ActiveXAutomation>>

Application

DocumentApplicationApplicationApplicationDocument

ThisDrawingDocument

ThisDrawing.Application.Update

Page 77: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>

AutoCAD

ModelSpace

PaperSpace

Block

Blocks

Dictionaries

DimStyles

FileDependencies

“”

Groups

Hyperlinks

Page 78: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

Layers

Layouts

Linetypes

MenuBar

AutoCAD

MenuGroups

AutoCAD

PlotConfigurations

RegisteredApplications

SelectionSets

TextStyles

UCSs

(UCS)

Views

Viewports

Page 79: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 80: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>>

DocumentDocumentLayers

DimlayerCollectionasAcadLayers

SetlayerCollection=ThisDrawing.Layers

DocumentsMenuBarMenuGroupsApplicationApplicationMenuGroups

DimMenuGroupsCollectionasAcadMenuGroups

SetMenuGroupsCollection=ThisDrawing.Application.MenuGroups

Page 81: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>>

AddLayers

DimnewLayerasAcadLayer

SetnewLayer=ThisDrawing.Layers.Add("MyNewLayer")

Page 82: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 83: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

MsgBox"Thelayer'MyLayer'doesnotexist."

EndIf

EndSub

Page 84: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>>

DeleteABC

DimABCLayerasAcadLayer

SetABCLayer=ThisDrawing.Layers.Item("ABC")

ABCLayer.Delete

Page 85: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>

CircleCenterCircleOffsetCircleAutoCAD ActiveXandVBAReferenceCircle

Page 86: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>

Application

AutoCADAutoCAD

Page 87: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>

Automation

AutomationVBAIDEAutoCAD“ acax17enu.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”VBAIDEAcSmComponents171.0“ AcSmComponents17.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”

Page 88: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>

ActiveXAutomationAutoCADActiveXAutomation

Page 89: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>>

EmptyErrorNothing NULL VarType TypeName

VBA

Page 90: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>>

AutoCADActiveXAutomationAutoCADActiveXAutomationAutoCADActiveXAutomation

AutoCADVBAVBAActiveXAutomation

Page 91: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 92: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 93: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveXAutomation>

VBAVBA

AutoCAD2008COM“AutoCAD.Application.17”VBAVB

Page 94: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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")

Page 95: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 96: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 97: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>

AutoCAD

AutoCADAutoCAD

AutoCAD“”“”

AutoCAD

Page 98: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 99: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 100: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 101: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'CursorSize

acadPref.Display.CursorSize=100

EndSub

SubCh2_PrefsSetDisplay()

'DisplayScreenMenuDisplayScrollBars

'

'

'Preferences

DimacadPrefAsAcadPreferences

SetacadPref=ThisDrawing.Application.Preferences

'

acadPref.Display.DisplayScreenMenu=True

acadPref.Display.DisplayScrollBars=False

EndSub

Page 102: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >AutoCAD >

PreferencesDatabasePreferencesAutoCADObjectDBXAutoCAD

DatabasePreferencesDocument

Page 103: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

“”

“”

Page 104: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 105: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >

“”

AutoCAD“”“”

AutoCADActiveX“”“”

“”

Page 106: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 107: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

EndSub

Page 108: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >“” >

“”

AutoCAD“”AutoCAD“”

Page 109: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 110: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 111: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 112: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 113: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 114: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

SubCh3_DeleteViewFromCollection()

ThisDrawing.Views("View1").Delete

EndSub

Page 115: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >“” >

AutoCAD

UCS

“”

Page 116: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >“” >>

SplitacViewport2HorizontalacViewport2VerticalacViewport3Left

acViewport4

“”

SubCh3_SplitAViewport()

'

DimvportObjAsAcadViewport

SetvportObj=ThisDrawing.Viewports.Add("TEST_VIEWPORT")

'vportObj2

vportObj.SplitacViewport2Horizontal

'vportObj

ThisDrawing.ActiveViewport=vportObj

EndSub

Page 117: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

'

'

'

Page 118: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

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

Page 119: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 120: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >

(UCS)Regen

ActiveTextStyleActiveUCSActiveViewport

SubCh3_ResetActiveViewport()

'

'

ThisDrawing.ActiveViewport.GridOn=_

Not(ThisDrawing.ActiveViewport.GridOn)

'

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

EndSub

Page 121: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >

DocumentSetVariableGetVariableAutoCADMAXSORT

ThisDrawing.SetVariable"MAXSORT",100

Page 122: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>AutoCAD >

AutoCAD

AutoCADActiveXAutomationAutoCAD

“”

Page 123: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 124: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

“”

“”UCS“”“”

AutoCAD“”

AutoCAD“”

“”OrthoOn TRUE“” FALSE“”“”

ThisDrawing.ActiveViewport.OrthoOn=True

Page 125: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>AutoCAD >>

Page 126: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 127: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

BasePointDirectionVector

DimBPointAsVariant

DimVectorAsVariant

BPoint=xlineObj.basePoint

Vector=xlineObj.DirectionVector

Page 128: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

Page 129: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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&_

Page 130: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

"Thedirectionalvectorfortherayis:"&_

rayObj.DirectionVector(0)&","&_

rayObj.DirectionVector(1)&","&_

rayObj.DirectionVector(2),,"EditRay"

EndSub

Page 131: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 132: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

Area

BooleanArea

“”

Page 133: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 134: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

SetpolyObj=ThisDrawing.ModelSpace.AddLightWeightPolyline_

(vertices)

polyObj.Closed=True

ThisDrawing.Application.ZoomAll

'

MsgBox"Theareadefinedbythepointsis"&_

polyObj.Area,,"CalculateDefinedArea"

EndSub

Page 135: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >

UtilityDocumentAutoCAD

AutoCADGetStringGetPointGetIntegerInitializeUserInput NULL

/ (vbCrLf)

GetStringGetPointGetKeyword

Page 136: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

GetString

GetStringAutoCAD01ENTER

AutoCAD

“”ENTER retVal

SubCh3_GetStringFromUser()

DimretValAsString

retVal=ThisDrawing.Utility.GetString_

(1,vbCrLf&"Enteryourname:")

MsgBox"Thenameenteredwas:"&retVal

EndSub

GetStringInitializeUserInput

Page 137: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 138: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 139: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 140: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

returnString="Regular"'

EndIf

Err.Clear

Else'

returnString=returnInteger'

EndIf

'

MsgBoxreturnString,,"InitializeUserInputExample"

EndSub

Page 141: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >

AutoCAD

SendCommandAutoCADSendCommandASCIIENTERAutoLISPSendCommand

AutoCAD

(2,2,0)4ENTER

SubCh3_SendACommandToAutoCAD()

ThisDrawing.SendCommand"_Circle2,2,04"

ThisDrawing.SendCommand"_zooma"

EndSub

Page 142: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >

AutoCAD

AutoCAD“”“”“”“”

ActiveX

AutoCAD

DocumentsApplicationDocuments

DocumentsCountAutoCAD Documents.Count=0

AutoCAD Documents.Count>0

AutoCADVBA ThisDrawing ThisDrawing

ThisDrawing

AutoCADAutoCAD

Page 143: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >

AutoCAD(DXF) TMSATWMFImport

Page 144: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 145: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

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

Page 146: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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>

Page 147: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>

AutoCAD

Add

Page 148: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>:

ActiveX/VBA>AutoCAD >

AutoCAD ®ActiveXAutomationAutoCAD(1)(2)(3)(4)ActiveXAutomation

NewCreateObjectDimVBVBAAutoCADApplicationAutoCADAutoCADAddAdd< objectname

Point

Page 149: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 150: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 151: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

EndSub

Page 152: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 153: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

SetsplineObj=ThisDrawing.ModelSpace.AddSpline_

(fitPoints,startTan,endTan)

ZoomAll

EndSub

AutoCAD ActiveXandVBAReferenceSplineAddSpline

Page 154: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 155: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ThisDrawing.SetVariable"PDMODE",34

ThisDrawing.SetVariable"PDSIZE",1

ZoomAll

EndSub

Page 156: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 157: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 158: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

“”

Page 159: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 160: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 161: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

'

Page 162: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

RoundRoomObj.BooleanacSubtraction,PillarObj

'Area

MsgBox"Thecarpetareais:"&RoundRoomObj.Area

EndSub

Area

Page 163: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

Boolean acUnion acSubtraction

Page 164: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

acIntersection

Page 165: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

Hatch

“”Hatch

Page 166: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

Hatch

HatchHatch

HatchAddHatch

Page 167: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

AddHatchAssociativity TRUEAddHatchAssociativity FALSE

Page 168: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

AutoCAD

AutoCADAutoCADAutoCAD

Hatch

acHatchPatternTypePredefined

acad.pat

acHatchPatternTypeUserDefined

acHatchPatternTypeCustomDefined

PAT acad.pat

Page 169: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

Hatch

AppendOuterLoop

AppendInnerLoop

HatchHatchStyleHatchStyle

HatchStyle

Normal AutoCADHatchStyle

Outer

Ignore

Evaluate

Hatch

Page 170: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 171: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$startrange>:,<$startrange>,<$startrange>:,DXF,,,DXF,<$startrange>:,SelectionSet:,:,<$endrange>:,<$endrange>,<$endrange>:,<$endrange>:,:,:,RemoveItems:,Clear:,Erase:,Delete:,">

ActiveX/VBA>AutoCAD >

SelectionSets

Page 172: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

Add—

AutoCADDelete

ThisDrawing.SelectionSets.Item("NewSelectionSet").Delete

SubCh4_CreateSelectionSet()

DimselectionSet1AsAcadSelectionSet

SetselectionSet1=ThisDrawing.SelectionSets._

Add("NewSelectionSet")

EndSub

Page 173: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

AddItems

Select

SelectAtPoint

SelectByPolygon

SelectOnScreen

SubCh4_AddToASelectionSet()

'

DimssetAsAcadSelectionSet

Setsset=ThisDrawing.SelectionSets.Add("SS1")

'

'

'

sset.SelectOnScreen

EndSub

Page 174: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 175: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$startrange>:,<$startrange>,<$startrange>:,DXF,,,DXF,<$startrange>:,SelectionSet:,:,<$endrange>:,<$endrange>,<$endrange>:,<$endrange>:,">

ActiveX/VBA>AutoCAD >>

AutoCADSelectSelectAtPointSelectByPolygonSelectOnScreen

Page 176: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$startrange>:,SelectionSet:,:,">

ActiveX/VBA>AutoCAD >>>

DXF

DXF

DXF

0“Line”“Circle”“Arc”

2

8“Layer0”

600=1=

620256BYBLOCK256BYLAYER

67 /0=1=

Page 177: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 178: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 179: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

AutoCAD

-4DXF

"*"

"="

"!="

"/="

"<>"

"<"

"<="

">"

">="

"&" AND

"&="

Page 180: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

-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

Page 181: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 182: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

AutoCAD

#

@

.

*

?

~

[...]

[~...]

-

,

`

Page 183: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

(`)“*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

Page 184: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 185: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 186: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 187: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

RemoveItems

RemoveItems

Clear

Clear

Erase

Erase

Delete

DeleteDelete

Page 188: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>:

ActiveX/VBA>AutoCAD >

Update

Page 189: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

AutoCAD

Page 190: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

PurgeAll

ThisDrawing.PurgeAll

Page 191: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

AutoCAD0CONTINUOUS

255AutoCADMicrosoftWindowsAutoCAD(<>)(/\)(")(:)(;)(?)(,)(*)(|)(=)(')Unicode

Name

“NewLayer”“MyLayer”

SubCh4_RenamingLayer()

'

DimlayerObjAsAcadLayer

SetlayerObj=ThisDrawing.Layers.Add("NewLayer")

'

layerObj.Name="MyLayer"

EndSub

Page 192: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

“”

Page 193: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

Copy

Page 194: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 195: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

'

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

Page 196: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 197: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 198: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

offsetObj=plineObj.Offset(0.25)

ZoomAll

EndSub

Page 199: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 200: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 201: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

“”

Page 202: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 203: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

basePnt(0)=4#:basePnt(1)=4#:basePnt(2)=0#

'(3,3,0)

'

'

DimretObjAsVariant

retObj=circleObj.ArrayPolar_

(noOfObjects,angleToFill,basePnt)

ZoomAll

EndSub

Page 204: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 205: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

numberOfColumns=5

numberOfLevels=2

distanceBwtnRows=1

distanceBwtnColumns=1

distanceBwtnLevels=1

'

DimretObjAsVariant

retObj=circleObj.ArrayRectangular_

(numberOfRows,numberOfColumns,numberOfLevels,_

distanceBwtnRows,distanceBwtnColumns,distanceBwtnLevels)

ZoomAll

EndSub

Page 206: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

“”

Page 207: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 208: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

EndSub

Page 209: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 210: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

plineObj.RotatebasePoint,rotationAngle

plineObj.Update

EndSub

Page 211: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 212: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 213: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

basePoint(0)=4:basePoint(1)=4.25:basePoint(2)=0

scalefactor=0.5

'

plineObj.ScaleEntitybasePoint,scalefactor

plineObj.Update

EndSub

Page 214: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 215: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 216: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 217: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

(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

Page 218: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 219: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 220: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 221: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

Next

EndSub

Page 222: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

AutoCADBSPLINETYPE

LightweightPolylinePolyline

Closed

Coordinates

AddVertex

SetBulge

SetWidth

“”

SubCh4_EditPolyline()

DimplineObjAsAcadLWPolyline

Dimpoints(0To9)AsDouble

Page 223: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

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

Page 224: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

ControlPoints

EndTangent

FitPoints

FitTolerance

Knots

StartTangent

AddFitPoint

DeleteFitPoint

ElevateOrder

Page 225: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

GetFitPoint

FitPoints

Reverse

SetControlPoint

SetFitPoint

FitPoints

SetWeight

Area

Closed

IsPeriodic

IsPlanar

IsRational

NumberOfControlPoints

NumberOfFitPoints

Page 226: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

“”

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

Page 227: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

AssociativeHatchHatchAddHatch

Evaluate

“”

Page 228: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 229: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 230: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

AutoCAD“”“”

PatternAngle

PatternDouble

PatternName

PatternScale

PatternSpace

SetPattern

2

SubCh4_ChangeHatchPatternSpace()

DimhatchObjAsAcadHatch

DimpatternNameAsString

DimPatternTypeAsLong

DimbAssociativityAsBoolean

'

Page 231: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 232: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >

“”

Page 233: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >

CENTER

LayersLinetypes

“”

Page 234: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

LayersLinetypes

Layers

Layers

SubCh4_IteratingLayers()

DimlayerNamesAsString

DimentryAsAcadLayer

layerNames=""

ForEachentryInThisDrawing.Layers

layerNames=layerNames+entry.Name+vbCrLf

Next

MsgBox"Thelayersinthisdrawingare:"+_

vbCrLf+layerNames

EndSub

Page 235: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 236: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 237: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

ActiveLayer

DimnewlayerAsAcadLayer

Setnewlayer=ThisDrawing.Layers.Add("LAYER1")

ThisDrawing.ActiveLayer=newlayer

Page 238: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 239: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

AutoCAD“”AutoCAD

Freeze TRUE FALSE

“ABC”

SubCh4_LayerFreeze()

'“ABC”

DimlayerObjAsAcadLayer

SetlayerObj=ThisDrawing.Layers.Add("ABC")

'“ABC”

layerObj.Freeze=True

EndSub

Page 240: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

Lock TRUE FALSE

“ABC”

SubCh4_LayerLock()

'“ABC”

DimlayerObjAsAcadLayer

SetlayerObj=ThisDrawing.Layers.Add("ABC")

'“ABC”

layerObj.Lock=True

EndSub

Page 241: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

AcCmColorRGBACI1255

TrueColor

BYBLOCKBYLAYER

acByBlockAutoCAD

acByLayer

Page 242: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

Linetype

Page 243: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

Delete

0

DEFPOINTS

Page 244: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >

AcCmColorAcCmColorRGBAcCmColor

AutoCAD(ACI)1255

ACIACI25517

17

1

2

3

4

5

6

7 /

8255(7)

“”

Page 245: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 246: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 247: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

ActiveLinetype

ThisDrawing.ActiveLinetype=ThisDrawing._

Linetypes.Item("CONTINUOUS")

“”

Page 248: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

NameLIN

Page 249: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

DeleteCONTINUOUS

“”

Page 250: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >>

ASCIIDescription

47

ThisDrawing.ActiveLinetype.Description="ExteriorWall"

Page 251: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 252: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

MsgBox("Hereisthecirclewiththeoriginallinetype")

'3

circleObj.LinetypeScale=3#

circleObj.Update

MsgBox("Hereisthecirclewiththenewlinetype")

'

ThisDrawing.ActiveLinetype=currLineType

EndSub

Page 253: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD > >

Page 254: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 255: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 256: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 257: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>, <$endrange>:,::,::,::,:,::,:,:,Export:,Import:,::,::,">

ActiveX/VBA>AutoCAD >

LayerStateManagerActiveX

“”AutoCADLayerStateManager

Page 258: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

AutoCAD

AutoCADLayersAutoCAD

Layers

ACAD_LAYERSTATEDictionary

ACAD_LAYERSTATEXRecordAutoCADXRecordAutoCAD

AutoCADXRecordXRecordACAD_LAYERSTATE

ActiveXXRecordLayerStateManager

SubCh4_ListStates()

OnErrorResumeNext

DimoLSMDictAsAcadDictionary

DimXRecAsObject

DimlayerstateNamesAsString

layerstateNames=""

Page 259: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'ACAD_LAYERSTATES

'Layers

SetoLSMDict=ThisDrawing.Layers._

GetExtensionDictionary.Item("ACAD_LAYERSTATES")

'

'XRecord

ForEachXRecInoLSMDict

layerstateNames=layerstateNames+XRec.Name+vbCrLf

NextXRec

MsgBox"Thesavedlayersettingsinthisdrawingare:"+_

vbCrLf+layerstateNames

EndSub

Page 260: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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")

Page 261: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

LayerStateManagerSetDatabaseLayerStateManager

oLSM.SetDatabaseThisDrawing.Database

Page 262: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$endrange>:,::,::,::,">

ActiveX/VBA>AutoCAD >>LayerStateManager >

SaveSave

Layer

acLsAll

acLsColor Color

acLsFrozen

acLsLineType Linetype

acLsLineWeight

acLsLocked

acLsNewViewport

acLsNone

acLsOn

acLsPlot

acLsPlotStyle

Page 263: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 264: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 265: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 266: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

'

Page 267: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

'

'

OnErrorResumeNext

oLSM.Import"c:\mydocuments\ColorLType.las"

IfErr.Number=-2145386359Then

'

MsgBox("Oneormorelinetypesspecifiedintheimported"+_

"settingsisnotdefinedinyourdrawing")

EndIf

OnErrorGoTo0

EndSub

Page 268: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>AutoCAD >

AutoCAD

“”

Unicode

Page 269: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

AutoCADAutoCAD

TrueTypeUnicode

Page 270: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

AddTextStyleTextStylesAddTextStyleAutoCADActiveXAutomation

($)(_)(-)AutoCADAutoCADStyle n n11

TextStyleTextStyle

FontFile

BigFontFile

ASCII

Height

Width

ObliqueAngle

TextGenerationFlag

RegenUpdate

Page 271: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 272: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 273: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

TrueType

TrueTypeTEXTFILLTEXTFILL1ExportPostScript®PostScript

Page 274: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 275: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 276: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 277: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 278: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

Text

Page 279: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 280: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

TextTextText

TextStyleNameTextUpdate

Text

Alignment

InsertionPoint

ObliqueAngle

Rotation

ScaleFactor

TextAlignmentPoint

TextGenerationFlag

TextString

Update

Page 281: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

AutoCAD ActiveXandVBAReference“Textobject”

Page 282: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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"

'

Page 283: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

textObj.Alignment=acAlignmentCenter

'

'

textObj.TextAlignmentPoint=alignmentPoint

ThisDrawing.RegenacActiveViewport

MsgBox"TheTextobjectisnowcentered"

'

textObj.Alignment=acAlignmentRight

ThisDrawing.RegenacActiveViewport

MsgBox"TheTextobjectisnowalignedright"

EndSub

Page 284: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

TextMIRRTEXT0

TextAutoCAD ActiveXandVBAReferenceText

ArrayPolar

ArrayRectangular

Copy

Text

Erase

Text

Mirror

Text

Move

Text

Rotate

Text

Page 285: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>AutoCAD >>

Page 286: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 287: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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{

Page 288: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 289: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 290: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

%%o

%%u

%%d

%%p /

%%c

%%%

Page 291: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

AutoCAD

AutoCADASCIIPreferencesFontFileMap

“”

Page 292: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>>

AutoCADAutoCAD simplex.shxPreferencesAltFontFile

AltFontFile txt.shxbigfont.shx

AutoCAD

Page 293: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>AutoCAD >>

AutoCADAutoCAD

AutoCADActiveXAutomationPreferencesMainDictionaryCustomDictionary

“”

Page 294: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>

ActiveXAutomation

Page 295: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

X YAutoCAD ®

AutoCAD

“”

Page 296: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

““

Page 297: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

DIMAUNITDIMUPTDIMTOFLDIMFITDIMTIHDIMTOHDIMJUSTDIMTADSetVariableDIMAUNIT(3)

ThisDrawing.SetVariable"DIMAUNIT",3

“”

Page 298: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AutoCAD

ActiveTextStyle

“”

Page 299: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AutoCAD

“”

Page 300: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

DIMASSOCDIMASSOC2

“”

Page 301: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

“”

Page 302: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AddDimAlignedAddDimRotated

AddDimAligned

AddDimRotated

“”

Page 303: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AddDimRadial

TextPositionDIMUPTDIMTOFLDIMFITDIMTIHDIMTOHDIMJUSTDIMTADGetVariableSetVariable

15AutoCAD

AddDimRadialAddDimDiametric

LeaderLengthChordPoint

“”

SubCh5_CreateRadialDimension()

DimdimObjAsAcadDimRadial

Dimcenter(0To2)AsDouble

DimchordPoint(0To2)AsDouble

DimleaderLenAsInteger

'

center(0)=0

Page 304: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 305: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 306: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 307: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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._

Page 308: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

AddDimOrdinate(definingPoint,_

leaderEndPoint,useXAxis)

ZoomAll

EndSub

Page 309: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCAD

Rotation

StyleName

TextOverride

TextPosition

TextRotation

Measurement

ArrayPolar

ArrayRectangular

Page 310: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

Copy

Erase

Mirror

Move

Rotate

ScaleEntity

“”

Page 311: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 312: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADSTANDARDActiveDimStyle

“”

Page 313: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 314: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

EndSub

DIMSTYLE1213

Page 315: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AltRoundDistance

AngleFormat

Arrowhead1BlockArrowhead2Block

Arrowhead1TypeArrowhead2Type

ArrowheadSize

CenterMarkSize

CenterType

DecimalSeparator

DimensionLineColor

DimensionLineWeight

Page 316: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

DimLine1SuppressDimLine2Suppress

DimLineInside

ExtensionLineColor

ExtensionLineExtend

ExtensionLineOffset

ExtensionLineWeight

ExtLine1EndPointExtLine2EndPoint

ExtLine1StartPointExtLine2StartPoint

ExtLine1SuppressExtLine2Suppress

ForceLineInside

FractionFormat

HorizontalTextPosition

Page 317: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

LinearScaleFactor

PrimaryUnitsPrecision

SuppressLeadingZerosSuppressTrailingZeros

SuppressZeroFeetSuppressZeroInches

TextColor

TextGap

TextHeight

TextInside

TextInsideAlign

TextMovement

TextOutsideAlign

TextPosition

TextPrecision

Page 318: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

TextPrefix

TextRotation

TextSuffix

ToleranceDisplay

ToleranceHeightScale

ToleranceJustification

ToleranceLowerLimit

TolerancePrecision

ToleranceSuppressLeadingZeros

ToleranceSuppressTrailingZeros

ToleranceUpperLimit

UnitsFormat

VerticalTextPosition

Page 319: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 320: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCAD

DIMLFAC0DIMLFACDIMLFAC01.0“”“”AutoCADDIMLFACAutoCADDIMLFAC

Page 321: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

LeaderAutoCAD

“”

Page 322: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 323: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

ToleranceMTextBlockRef

AddLeader

Page 324: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 325: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ZoomAll

EndSub

Page 326: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

DIMCLRTDIMTXTDIMTXSTYMText

Evaluate

Page 327: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

ScaleEntityMoveMirrorRotateStyleName

Page 328: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

“”

Page 329: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 330: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

DIMCLRDDIMCLRTDIMGAPDIMTXTDIMTXTSTYSetVariable

Page 331: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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:,,,,:,

Page 332: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

InsertInMenuBar:,:,:,<$nopage>

ActiveX/VBA>

AutoCADActiveXAutomationAutoCAD

AutoCADActiveX/VBA

MenuBarMenuGroups

Page 333: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

MenuBarMenuGroups

AutoCAD®ActiveX®MenuBarMenuGroupsMenuBarAutoCAD

MenuGroupsAutoCADAutoCADAutoCADAutoCAD

PopupMenusToolbarsPopupMenusToolbars

PopupMenuToolbar

Page 334: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 335: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>MenuGroups:

ActiveX/VBA>>

LoadAutoCAD acad.cui

ThisDrawing.Application.MenuGroups.Load"acad.cui"

Load BaseMenu TRUEAutoCADMENU

BaseMenuAutoCADMENULOADMenuGroupsInsertMenuInMenuBarInsertInMenuBar

ActiveXAutomationActiveXAutomation

Page 336: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 337: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

Page 338: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 339: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

RemoveMenuFromMenuBarRemoveFromMenuBar—

RemoveMenuFromMenuBarPopupMenus

currMenuGroup.Menus.RemoveMenuFromMenuBar("TestMenu")

RemoveFromMenuBarPopupMenu

Page 340: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

SubCh6_MoveMenu()

'

DimmoveMenuAsAcadPopupMenu

DimMyMenuBarAsAcadMenuBar

SetMyMenuBar=ThisDrawing.Application.menuBar

'moveMenu

'

SetmoveMenu=MyMenuBar.Item(0)

'

MyMenuBar.Item(0).RemoveFromMenuBar

'

'

moveMenu.InsertInMenuBar(MyMenuBar.count)

EndSub

Page 341: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 342: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 343: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>: <$startrange>InsertInMenuBar:,">

ActiveX/VBA>>>

AddMenuItemPopupMenuItem

AddMenuItem IndexLabelTag Macro

IndexLabelTagMacro

Page 344: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

Index

Index(0) IndexCountCount

(0)Count(6)“”“” Index(2)“”(2)

Index

Page 345: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

Label

DIESEL

DIESEL&

DIESEL“&”“”

Label

Page 346: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

Tag

(_)

TagString

Page 347: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 348: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AddSeparatorPopupMenuItemPopupMenuItemacSeparatorType

AddSeparator Index Index(0)

Page 349: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 350: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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)

'

Page 351: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

newMenu.InsertInMenuBar_

(ThisDrawing.Application.menuBar.count+1)

EndSub

Page 352: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 353: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

TagString

(_)TagString

Label

DIESELLabel

Caption

DIESELLabelCaption

AutoLISPDIESELActiveXMacro

HelpString

AutoCADHelpString

Enable

EnableEnableDIESEL

Check

Page 354: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 355: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

EndSub

Page 356: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADActiveX/VBA

Page 357: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AddToolbarsToolbar

Add(-)(_)

Name

MenuGroups“TestToolbar”

SubCh6_CreateToolbar()

DimcurrMenuGroupAsAcadMenuGroup

SetcurrMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)

'

DimnewToolbarAsAcadToolbar

SetnewToolbar=currMenuGroup.Toolbars.Add("TestToolbar")

EndSub

Page 358: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AddToolbarButtonToolbarItem

AddToolbarButton IndexNameHelpStringMacroFlyoutButton

Index

Index(0) IndexCountCount

Index

Name

(-)(_) Name

HelpString

AutoCAD HelpString

AutoLISPDIESELActiveX Macro

FlyoutButton

FlyoutButton TRUE FALSE

OPEN

Page 359: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 360: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AddSeparatorToolbarItemToolbarItemacSeparatorType

AddSeparator IndexIndex(0)

Page 361: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

'

Page 362: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

'

'

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

Page 363: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 364: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

'

FlyoutButton.AttachToolbarToFlyoutcurrMenuGroup.Name,_

SecondToolbar.Name

'

FirstToolbar.Visible=True

SecondToolbar.Visible=False

EndSub

Page 365: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 366: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

newToolbar.Visible=True

'

newToolbar.DockacToolbarDockLeft

EndSub

Page 367: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

Delete

Page 368: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

Tagstring

(_)TagString

Name

AutoCADName

AutoLISPDIESELActiveXMacro

HelpString

AutoCADHelpString

Index

001Index

Type

acButton acToolButtonSeparator

acFlyout acControl

Type

Flyout

acFlyoutToolbar

Page 369: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

acFlyout NULL

Flyout

Parent

ToolbarParent

Page 370: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoLISPDIESELActiveX

AutoCADAutoCAD

PICKADDPICKAUTO10AutoCADASCII

Page 371: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 372: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

$ 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

Page 373: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 374: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

(\)

circle\1

layeroff\;

1(\)LAYERLAYERENTER(;)

SELECT

select\changeprevious;propertiescolorred;

SELECTCHANGE“”

(\)(/) /direct/file

X/Y/Z

SELECT

Page 375: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

^C^CESC^CDIM^C^C^C^CAutoCAD

Page 376: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AutoCAD(null)

*^C^CESC

*C^C^C

*^C^CMOVESingle

*^C^CCOPYSingle

*^C^CERASESingle

*^C^CSTRETCHSingleCrossing

*^C^CROTATESingle

*^C^CSCALESingle

Page 377: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

*^C^CERASEsingle

ERASEAutoCAD

Page 378: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 379: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 380: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>

AutoCADBeginOpenAutoCAD

AutoCAD

Page 381: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCAD

AutoCAD®

AutoCADAutoCADARXLISP

“”ARXLISP

BeginOpen

Page 382: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADAutoCADAutoCAD

OPENBeginCommandBeginOpenEndOpenEndCommandBeginEndBeginCommandBeginOpenEndCommandEndOpenBeginCommandEndCommandBeginOpenEndOpen

object1object2object1ObjectErasedobject2object2ObjectErased

AutoCADGetPointGetEntityGetKeywordSendCommand

AutoCADBeginModalEndModalActivateDeactivateBeginRightClick

AutoCAD

BeginOpenAutoCAD

AutoCAD

Page 383: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 384: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADVBAVBAVBAActiveX ®

Automation

AppActivate

“”

AppDeactivate

“”

ARXLoaded

ObjectARX

ARXUnloaded

ObjectARX

BeginCommand

BeginFileDrop

“”

BeginLISP

AutoCADLISP

BeginModal

BeginOpen

Page 385: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

AutoCAD

BeginPlot

AutoCAD

BeginQuit

AutoCAD

BeginSave

AutoCAD

EndCommand

EndLISP

LISP

EndModal

EndOpen

AutoCAD

EndPlot

EndSave

AutoCAD

LISPCancelled

LISP

NewDrawing

SysVarChanged

WindowChanged

Page 386: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

“”

WindowMovedOrResized

“”

Page 387: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 388: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 389: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADVBAVBAVBActiveXAutomation

Activate

“”

BeginDocClose

BeginCommand

BeginDoubleClick

BeginLISP

AutoCADLISP

BeginPlot

AutoCAD

BeginRightClick

“”

BeginSave

AutoCAD

BeginShortcutMenuCommand

Page 390: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

“”“”

BeginShortcutMenuDefault

“”“”

BeginShortcutMenuEdit

“”“”

BeginShortcutMenuGrip

“”“”

BeginShortcutMenuOsnap

“”“”

Deactivate

“”

EndCommand

EndLISP

LISP

EndPlot

EndSave

AutoCAD

EndShortcutMenu

LayoutSwitched

LISPCancelled

LISP

ObjectAdded

Page 391: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ObjectErased

ObjectModified

SelectionChanged

WindowChanged

“”

WindowMovedOrResized

“”

VBAVBAVBA

Page 392: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 393: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

CallInitializeEvents

InitializeEventsDocDocument

Page 394: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

VBA

“”“”DocDoc“”

Page 395: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 396: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCADVBAVBAVBAActiveXAutomation

Modified

Page 397: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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#

Page 398: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 399: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>

(3D)(2D)AutoCAD

Page 400: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

'

Page 401: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 402: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 403: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'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

Page 404: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 405: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 406: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

AutoCAD

“”

Page 407: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AutoCAD

XY Z

XYUCS

Add3DPoly

“”

Page 408: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 409: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

'

DimNewDirection(0To2)AsDouble

NewDirection(0)=-1

NewDirection(1)=-1

NewDirection(2)=1

ThisDrawing.ActiveViewport.direction=NewDirection

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

ZoomAll

EndSub

Page 410: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 411: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

NewDirection(1)=-1

NewDirection(2)=1

ThisDrawing.ActiveViewport.direction=NewDirection

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

ZoomAll

EndSub

Page 412: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 413: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

NewDirection(2)=1

ThisDrawing.ActiveViewport.direction=NewDirection

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

ZoomAll

EndSub

Page 414: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

Page 415: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 416: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 417: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 418: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

EndSub

Page 419: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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_

Page 420: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

(mirrorPt1,mirrorPt2,mirrorPt3)

mirrorBoxObj.Color=acRed

ZoomAll

EndSub

Page 421: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 422: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 423: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 424: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>

AutoCAD

Page 425: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

Page 426: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

“”

ActiveX ®AutomationModelSpacePaperSpace

“”

Page 427: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

ActiveXLayoutBlockLayoutAutoCADBlock

LayoutBlockBlockBlockBlockLayoutBlockLayoutLayout

Page 428: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

PlotConfigurationLayoutLayoutBlockPlotConfigurationBlock

Page 429: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

Layout

Page 430: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

CanonicalMediaName

PaperUnits acInchesacMillimeters acPixels

Page 431: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

PlotOrigin(0,0)CenterPlot TRUE

Page 432: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

PlotType

acDisplay

acExtents

acLimits

acView

ViewToPlot

acWindow

SetWindowToPlot

acLayout

acLayout

Page 433: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

UseStandardScale TRUEStandardScale

UseStandardScale FALSESetCustomScale

StandardScale acScaleToFit

Page 434: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

1:1AE

ScaleLineweights TRUE FALSE

Page 435: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

ConfigName

Page 436: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

ActiveXAutomationViewport

ActiveXAutomationPViewport

“”“”

Page 437: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

PViewportActiveSpacePViewportViewport

PViewport“”

ViewportActiveSpace acModelSpacePViewportActiveSpace acModelSpace acPaperSpace

PViewportViewportActiveSpace

PViewport ActiveSpace=acPaperspace

PViewport ActiveSpace=acModelspace

ActiveSpace=acModelspace

AutoCAD ®ActiveXAutomationActiveSpaceTILEMODEThisDrawing.ActiveSpace=acModelSpaceTILEMODE =

Page 438: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

on ThisDrawing.ActiveSpace=acPaperSpaceTILEMODE=off

MSpaceAutoCADMSPACEPSPACEThisDrawing.MSpace=TRUEMSPACEThisDrawing.MSpace=FALSEPSPACE

MSpace TRUEDisplayDisplayAutoCAD“”ActiveXAutomation

MSpace TRUEPViewportDisplayMSpace

Page 439: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

1. ActiveSpace acPaperSpace

ThisDrawing.ActiveSpace=acPaperSpace

2. MSpace FALSE

ThisDrawing.MSpace=FALSE

AutoCAD(UCS)

Page 440: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

1. Display

ThisDrawing.ActivePViewport.DisplayTRUE

2. MSpace TRUE

ThisDrawing.MSpace=TRUE

ActiveSpace acModelSpace

ThisDrawing.ActiveSpace=acModelSpace

Page 441: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 442: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

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

Page 443: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 444: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

Viewport

1. ActiveViewport

Thisdrawing.ActiveViewport=MyViewportObject

2.

ActiveSpace FALSEMSpace

Page 445: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

(1:4)

ZoomScaled

acZoomScaledRelativePSpace20.5

Page 446: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 447: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

PSLTSCALE

PSLTSCALE

SetVariablePSLTSCALE

Page 448: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

“”“”“”“”

PViewportShadePlot

ViewportLayoutPlotHidden TRUE FALSE

Page 449: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>

BACKGROUNDPLOT0

ActiveXAutomationLayoutPlotLayoutPlot

Page 450: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

Plot

PlotToFile

PlotToDevice

DisplayPlotPreview

QuietErrorMode

Page 451: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 452: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

“”

Page 453: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage> <$nopage>: <$nopage>BlockReference: <$nopage>,

ActiveX/VBA>

AutoCAD

AutoCAD

Page 454: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>>

AutoCAD ®AutoCAD

Page 455: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 456: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ZoomAll

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

Page 457: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

Raster

Page 458: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

ImageFileAutoCAD

AutoCADImageFileAutoCAD\images\tree.tga c:\myproject\images\tree.tga tree.tgaPreferencesSetProjectFilePathAutoCAD

ImageFile

ImageFile

Page 459: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

AutoCAD

RasterImageFileImageFileNameName

Page 460: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>>>

AutoCAD

Page 461: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

ClippingEnabled

Page 462: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

Layer

Color

Linetype

Page 463: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

ScaleEntity

Rotate

Origin

Width

Height

ImageWidth

ImageHeight

ShowRotation

Page 464: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

ImageVisibilityFALSEImageVisibilityTRUE

Page 465: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>

ActiveX/VBA>>>>

ColorTransparency

Page 466: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

AutoCAD

Brightness

Contrast

Fade

Page 467: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

1. ClippingEnabled

2. ClipBoundary

Page 468: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

Page 469: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

ClippingEnabledFALSEClippingEnabledTRUE

Page 470: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 471: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 472: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>: <$nopage>BlockReference:

ActiveX/VBA>>

AutoCAD

AutoCAD

Page 473: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>: <$nopage>BlockReference:

ActiveX/VBA>>>

AutoCAD

“”

Page 474: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

Add

WBlockAutoCAD

“”

Page 475: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 476: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 477: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$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

Page 478: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

'

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

Page 479: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 480: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

blockRefObj.Update

EndSub

Page 481: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AutoCAD

“”

Page 482: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

AddAttribute

acAttributeModeNormal

acAttributeModeInvisible

ATTDISP“”

acAttributeModeConstant

acAttributeModeVerify

acAttributeModePreset

acAttributeModeInvisible+acAttributeModeConstant

TagacAttributeModeConstant

AutoCAD

InsertBlock

Page 483: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 484: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

Attribute

Alignment

Backward

FieldLength

Height

InsertionPoint

Mode

PromptString

Rotation

ScaleFactor

TagString

Page 485: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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_

Page 486: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

(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

Page 487: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 488: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 489: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 490: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>,

ActiveX/VBA>>

“”

Page 491: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

AutoCAD

Page 492: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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:

Page 493: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

msg=vbCrLf'

ForEachtempBlockInThisDrawing.Blocks

msg=msg&tempBlock.Name&vbCrLf

Next

MsgBox"Thecurrentblocksinthisdrawingare:"&msg

Return

ERRORHANDLER:

MsgBoxErr.Description

EndSub

Page 494: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>>

AttachExternalReferenceOverlayTRUE

Page 495: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 496: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 497: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 498: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 499: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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:

Page 500: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

MsgBoxErr.Description

EndSub

Page 501: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

ActiveXAutomationAutoCADXCLIPSendCommandXCLIPAutoCAD

Page 502: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>>>

XLOADCTLINDEXCTLAutoCAD“”

XRefDemandLoadacDemandLoadEnabledWithCopyAutoCADAutoCAD

SetVariableINDEXCTLINDEXCTL

0=

1=

2=

3=

AutoCADINDEXCTL0

“”

Page 503: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 504: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 505: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage> <$nopage>

ActiveX/VBA>

VBA

AutoCADActiveX

MicrosoftVBAVBAVBA

VBAVBAVBAVBAVBAIDE

64

Page 506: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

VBA

VBAVBA

Page 507: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage> <$nopage>

ActiveX/VBA>VBA >

VBA

VisualBasic6VBA“”VisualBasic6VBA

UserForm——ShowModal

1. VBAIDE“”

2. “”“”

1. VBAIDE“”

Page 508: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

2. “”“”ShowModalFalse

3. AcFocusCtrl( AcFocusCtrl.dll)AcFocusCtrl

Page 509: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >VBA >

“”

AutoCAD ®

“”“”AutoCAD

Page 510: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage> <$nopage>

ActiveX/VBA>VBA >VBA >

Page 511: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >VBA >>

SHIFT

1.

2.

1.

2.

3.

Page 512: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >VBA >>

VBAVBAIDE“”

SHIFT

Page 513: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >VBA >>

“”

1.

2. “”F4

3. “”

4.

Microsoft

Page 514: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >VBA >>

“”“”“”

“”

Page 515: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >VBA >

VBAShowShow

AutoCADAutoCADVBAHideHideAutoCADHide

HideShow

“UserForm1”

PublicSubMyApplication()

UserForm1.Show

EndSub

VBARUNAutoCAD

“UserForm1”

PublicSubMyAppHide()

UserForm1.Hide

EndSub

Page 516: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >VBA >

VBALoadShow

Show

LoadShow

HideVBAShowHideLoadUnload

VBAShowHideLoadUnload

Show

Hide

Load

Unload Unload

Page 517: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >VBA >

AutoCADVBAHideUnload

AutoCADAutoCADHideShow

Page 518: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

VBVBA

I/O

AutoCAD

AutoCAD

Page 519: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >>

VBA

AutoCAD

Page 520: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 521: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ForEachentryInThisDrawing.ModelSpace

entry.Color=acRed

Nextentry

'

ExitSub

MyErrorHandler:

Msgboxentry.EntityName+"isonalockedlayer."+_

"Thehandleis:"+entry.Handle

ResumeNext

EndSub

OnErrorGoTo0 OnErrorResumeNext OnError

GoToLabel OnErrorGoTo0

Page 522: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >>

VBVBAErrNumberDescriptionSourceHelpFileHelpContextLastDLLErrorErrNumberDescriptionNumberDescription

Number

Page 523: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >>

AutoCAD

AutoCADInitializeUserInput

Page 524: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

VBA

VBAVBAIDE“”“” “” “”

Page 525: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

VBA

AutoCADMacroVBAMacro

-VBARUNfilename.dvb!modulename.macroname

filename modulename macronameAutoCAD

Page 526: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

VBA

VBA

VBAAutoCAD acad.dvb

acad.dvb VBALOADAutoCADAutoLISPVBA myproj.dvbVBA notepad.exe acad.lsp

(defunS::STARTUP()

(command"_VBALOAD""myproj.dvb")

)

Page 527: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

VBA

acad.dvbAutoCADacad.lsp VBARUNdrawline drawline acad.dvb notepad.exeacad.lsp

(defunS::STARTUP()

(command"_-vbarun""drawline")

)

AcadStartupVBAVBA acad.dvb AcadStartup

Page 528: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

VBAIDE

“VBA”“VisualBasic”VBAVBAIDE

“VBA” VBALOAD“VBA”FILEDIAFILEDIA1

Page 529: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

AutoCADVBA

ThisDrawing ThisDrawing

AutoCADDocumentApplicationMenuBar

AutoCADAutoCADAutoCAD

Page 530: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

VBA

AutoCAD

VBA

VBA

VBA VBAVisualBasic6

Page 531: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >>

VisualBasic6

VisualBasic6AutoCAD(EXE)

Page 532: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VBA >

64

Microsoft64VBA3264AutoCAD64AutoCADVBA3264“thunking”

VBA64AutoCAD32AutoCADVBAIDEAutoCAD

AutoCADVBAAutoCADObjectId32

Page 533: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 534: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 535: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

DimsplineObjAsAcadSpline

DimobjectHandleAsString

objectHandle=splineObj.Handle

DimtempObjAsAcadObject

SettempObj=ThisDrawing.HandleToObject(objectHandle)

AutoCADVBAVBAVBAVB.Net

Page 536: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 537: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

SetFieldId32 32ID

SetGridLinetype32 32ID

Value32 64ID

Page 538: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>

WindowsAPI

ActiveXAutoCADActiveXMicrosoftExcelMicrosoftWord

VisualLISPWindowsVBAWindowsAPI

Page 539: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>WindowsAPI >

VisualLISP

VisualLISP®ActiveX ®ActiveXActiveXVisualLISPVBARUNVBA

ActiveXVBASendCommandVisualLISPActiveXVBAAutoCAD

VisualLISPActiveX AutoLISPDeveloper'sGuide

Page 540: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>WindowsAPI >

Windows

AutoCAD®ActiveXActiveXMicrosoftExcelMicrosoftWordAutoCADAutoCADAutoCADAutoCADAutoCADMicrosoftExcel

AutoCADActiveXActiveXActiveX

AutoCADMicrosoft

ActiveX

1. ActiveX

2.

3. AutoCAD

ActiveX

Page 541: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>WindowsAPI >Windows >

ActiveX

VBA

VBAIDEVBAIDE“”“”VBAMicrosoftExcelMicrosoftExcel

VBA

VBA

1. VBAIDE“”“”

2. “”

3. “”

Page 542: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>WindowsAPI >Windows >

Dim Dim Dim Excel.Application

DimExcelAppObjasExcel.Application

SetNew SetExcelNewExcel

SetExcelAppObj=NewExcel.Application

New

Page 543: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>WindowsAPI >Windows >

Excel

ExcelAppObj.Visible=TRUE

VBA

Page 544: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 545: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 546: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>WindowsAPI >

VBAWindowsAPI

Windows®APIWindows

WindowsAPIWindowsAPI

WindowsAPIAPI Declare Declare

DLL

DLL

DeclareVBAPrivate Declare

Declare Declare Declare

DeclareMicrosoft Win32api.txtVisualBasic6Office Declare

MicrosoftVBA DeclareMicrosoftWindowsAPIMircrosoftDeveloperNetworkCDWindowsAPIDanApplemanBasicProgrammer'sGuidetotheWin32APIVisualBasic6

Page 547: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>:

ActiveX/VBA>

ActiveX/VBA

ActiveXVisualBasicforApplications(VBA)AutoCAD

AutoCADVBA

Page 548: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

<$nopage>:

ActiveX/VBA>ActiveX/VBA >

AutoCAD ®VBA(VBAIDE)AutoCAD“”VBAIDEAutoCAD“”VBAIDEAutoCADVBAIDE

VBAIDE

1. AutoCAD

2. vbaideENTERVBAIDEVBAIDE“AutoCADVBA”VBAIDE

Page 549: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveX/VBA >

AutoCAD: gardenpath

:

:

:

:

:

Page 550: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 551: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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.

Page 552: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveX/VBA >

Gardenpath

Utility

gpuser

Page 553: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveX/VBA >>

VBAIDE“” Constpi=3.14159

Privatesp(0To2)AsDouble

Privateep(0To2)AsDouble

PrivatehwidthAsDouble

PrivatetradAsDouble

PrivatetspacAsDouble

PrivatepangleAsDouble

PrivateplengthAsDouble

PrivatetotalwidthAsDouble

Privateangp90AsDouble

Privateangm90AsDouble

“”/“()”“()”()

Page 554: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 555: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

GetPoint varRet sp

GetDistance( hwidth)( trad)( tspac)GetDistanceGetDistanceAutoCAD

pangleAngleFromXAxis2 plengthdistance angp90 angm90/90

gpuser

Page 556: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 557: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's
Page 558: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)

Page 559: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 560: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

drawtiles If06000

Page 561: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 562: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveX/VBA >

AutoCAD“”“” “”“”“ ThisDrawing.gardenpath”“”

VBAIDE gardenpathF8 gpusergpuserF8

gpuserF8GetPoint“” “”“”VBAIDE“”

F8GetPointGetPointAutoCADAutoCADGetPoint

GetPointF8AutoCAD

Page 563: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveX/VBA >

“” “”“”“”AutoCAD: 2,2

: 9,8

: 2

: 0.2

: 0.1

Page 564: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

Gardenpath

Page 565: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveX/VBA >

GardenpathVBAIDE

gardenpath.dvb gpdialog.dvb gpdialog.dvbAutoCAD

“”

Page 566: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveX/VBA >>

“”

VBAIDE

1. “”“”

2. (

)(

)(

)(

)

Page 567: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

3.

1. “OptionButton1”“”“”OptionButton1

()=gp_polyCaption=PolygonControlTipText=PolygonTileShapeAccelerator=P

2. “OptionButton2”“”OptionButton2()=gp_circCaption=CircleControlTipText=CircleTileShapeAccelerator=I

1. “Label1”“”Label1()=label_tradCaption=Radiusoftiles

Page 568: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 569: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

()=cancelCaption=CancelControlTipText=CanceltheoperationAccelerator=C

3. “”()=gpDialogCaption=GardenPath

4.

Page 570: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>ActiveX/VBA >>

“”

VBAIDE“”“ AutoCAD”“ ”“”“ AutoCAD”) ThisDrawing“ ”) gpDialog

“”“” gpDialog“”

“”

“” ThisDrawing“”

Page 571: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 572: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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)'

Page 573: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 574: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

“ ” 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.

Page 575: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 576: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>

VisualLISPActiveX/VBA

VisualLISPActiveXVBAVisualLISPActiveXVBA

VisualLISPActiveX/VBA

Page 577: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

ActiveX/VBA>VisualLISPActiveX/VBA >

VisualLISPActiveX/VBA

VisualLISPActiveX ®VBAVisualBasic6“AutoCAD.Application”ActiveXAutomationVisualBasic6

VisualLISPActiveX/VBA

AutoLISP ActiveXVBAVisualBasic6

+ +

- -

* *

/ /

= =

/= <>

< <

<= <=

/= <>

> >

>= >=

Page 578: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

~

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

Page 579: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 580: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 581: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 582: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 583: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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.

Page 584: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 585: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 586: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 587: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 588: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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

Page 589: ActiveX Automation :Automation AutoCAD ... · Microsoft Visual Studio® .NET AutoCAD ... AutoCAD ActiveX/VBA AutoCAD API VBA ... ActiveX and VBA Developer's

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