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

Post on 14-Jun-2018

542 Views

Category:

Documents

21 Downloads

Preview:

Click to see full reader

TRANSCRIPT

<$nopage>ActiveXAutomation:Automation <$nopage>AutoCAD<$nopage>Color: <$nopage>TrueColor: <$nopage>VB:Automation<$nopage>VBA:Automation <$nopage>VisualBasicfor

Applications <$nopage>VisualBasic <$nopage>Automation:AutoCAD2004:<$nopage>:Automation <$nopage>

ActiveX/VBA>

ActiveXAutomationAutoCADVisualBasicforApplicationsAutoCADActiveXAutoCADVisualBasicforApplications(VBA)AutoCADActiveXVBA

Automation

ActiveX/VBA>>

AutoCADActiveX

AutoCAD®ActiveX®AutoCADAutoCADAutoCAD“”Microsoft®WordVBAExcelVBA

ADDAX_INTRO

AutoCADActiveX

AutoCADActiveXAutomationAutoLISP®C++AutoCAD

Windows®MicrosoftExcelWord

ActiveXAutoCADAutoCADActiveX

AutoCAD

ActiveX/VBA>>

AutoCADVisualBasicforApplications(VBA)

MicrosoftVBAVisualBasic6(VB)VBAVBVBAAutoCADAutoCAD

VBAVBAAutoCADMicrosoftWordExcelAutomation

VisualBasic6AutoCADVBA

AutoCADVBA

VBA

VBAAutoCAD

Microsoft64VBASDK(.dll)64AutoCADVBAVBA32COM64AutoCADVBAVBAAutoCADVBAVB.NET

VBAAutoCAD

ActiveX/VBA>>AutoCADVisualBasicforApplications(VBA)>

VBAAutoCAD

VBAAutoCADActiveXAutomationAutoCADAutoCADVBAVBAAutoCADActiveXAutomationAutoCADAutoCADActiveXAutomationVBAAutoCAD

AutoCADAcitveXVBAAutoCADAutoCADAutoCADAutoCADVBAAutoLISPAutoCADAutoCADVBAAutoLISP

AutoCADActiveXAutomationAutoCADVBAActiveXAutomation ActiveXandVBAReferenceAutoCADActiveXAutomationVBAutoCADVBAAutoCADActiveXAutomation

VBAAutoCADVBAMicrosoftVBAVBAIDE

F1

VBAIDE“”

VBAIDE“?”Microsoft.NETFramework

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

Microsoft.NETFramework

MicrosoftVisualStudio®.NETAutoCADAutomation

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

AutoCAD/ObjectDBXCommon17.0“ axdb17enu.tlb”“ C:\ProgramFiles\CommonFiles\AutodeskShared”

Autodesk.AutoCAD.Interop.dllAutoCADAutodesk.AutoCAD.Interop.Common.dllObjectDBXTMInteropAutomation.NET

MicrosoftVisualStudio.NETAutoCAD

DimobjAcadAsAutodesk.AutoCAD.Interop.AcadApplication

DimobjLineAsAutodesk.AutoCAD.Interop.Common.AcadLine

AutoCADNETLOAD.NET

AutoCAD.NETAutodeskDeveloperCenter

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

AutoCADMicrosoftOfficeVBAAutoCAD

ActiveX/VBA>>

AutoCADActiveXVBA

AutoCADActiveX/VBAAutoCADAPI

VBAActiveXAutoLISP

AutoCAD

Windows ActiveXVBAWindows

VBA

AutoCADActiveXVBAVisualBasic6AutoCAD

ActiveX/VBA>>

AutoCADActiveXVBA“GettingStartedwithVBA”“DevelopApplicationswithVBA”VBAVBAActiveXVBA

ActiveX/VBA>>

VisualBasic6VisualBasic6VisualBasic6MicorsoftVisualBasicforApplication(IDE)“”

ActiveX/VBA>>

ActiveXandVBAReference800VBAActiveX

AutoCADSampleAutoCADMicrosoftExcel

VisualBasicforApplicationsAutoCADActiveX

ActiveXandVBADeveloper'sGuide ActiveXandVBAReferenceAutoCADVBAAutoCAD

1. VBA

2. AutoCAD

3. VBARUN“”

4. “”“”“”

ActiveX/VBA>>

Automation

ActiveXAutomationAutoCADVisualBasicforApplications(VBA)VisualBasic6(VB)AutomationAutomation

AutoCAD“AutoCAD”

ActiveX/VBA>>Automation >

AutoCAD2008 ActiveXandVBAReferenceVBAIDE

SortentsTable

Table

TableStyle

AutoCAD2008Automation SheetSetObjectsReference

ActiveX/VBA>>Automation >

AutoCAD2004 AutoCAD2008

BeginClose BeginDocClose BeginDocClose

Layer Layer DescriptionUsed

Layers Layers GenerateUsageData

ModelSpacePaperSpaceBlock

ModelSpacePaperSpaceBlock

AddTablePathBlock

MTextText MTextText BackgroundFillMTextFieldCodeMTextText

Plot Plot BatchPlotProgressStartBatchModeMicrosoft.NETDisplayPlotPreview

PreferencesFiles PreferencesFiles PlotLogFilePathPageSetupOverridesTemplateFileQNewTemplateFile

PreferencesOutput PreferencesOutput AutomaticPlotLogDefaultPlotToFilePathContinuousPlotLog

Viewport Viewport ModelViewSheetViewLabelBlockIdHasSheetViewSyncModelView

View View CategoryNameLayoutIdLayerStateHasVpAssociation

ActiveX/VBA>>Automation >

VBAIDEVisualBasic6AutoCADAutomationAutoCAD2008

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

AutoCAD2008AutomationCreateObjectGetObjectGetInterfaceObjectProgIDAutoCADAutomationCreateObjectCreateObject“AutoCAD.Application.17”AutomationProgIDProgID

<$nopage> <$nopage>:

ActiveX/VBA>

VBA

AutoCADVisualBasicforApplications(VBA)VBA(IDE)VBAAutoCADVBAIDEAutoCADVBAIDEVBAVBAVBAIDE

VBAVBA

VBAIDE

AutoCADVBAAutoCADVBA

ActiveX/VBA>VBA>

VBA

AutoCAD®VBAAutoCAD

AutoCADAutoCADAutoCAD

AutoCADAutoCAD

AutoCAD

AutoCADVBAVisualBasic6VBAIDEIMPORTEXPORTVBAVBAIDE

VisualStudio.NETCOMAutomationAutoCAD

<$nopage> <$nopage>:

ActiveX/VBA>VBA>

VBA

VBAAutoCADVBAAutoCADVBA

VBA

“”AutoCADVBAMANVBA

<$nopage> <$nopage>:

ActiveX/VBA>VBA>VBA >

AutoCADDVB

AutoCAD acad.dvb

VBA

1. “VBA”“”“VBA”

2. “VBA”“VBA”DVB

3. “”

VBALOAD“VBA”

DVBWindowsAutoCAD

ActiveX/VBA>VBA>VBA > >

DVBWindowsAutoCAD

ActiveX/VBA>VBA>VBA >

VBA

“”VBAVBAUNLOAD

ActiveX/VBA>VBA>VBA >

AutoCAD

1. VBA

2. “”

ActiveX/VBA>VBA>VBA >

AutoCAD

1. VBA

2. “”

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

ActiveX/VBA>VBA>VBA >

VBA

1. VBA

2. “” ACADProjectVBAIDEVBAIDE

ActiveX/VBA>VBA>VBA >

VBAVBAIDE

VBA

1. VBA

2. “”“”

3.

4. “”

ActiveX/VBA>VBA>

“”

ActiveX/VBA>VBA> >

“”

“”VBAAutoCAD“”“”AutoCADVBARUN

“”

AutoCAD

AutoCAD

1. “”

2. “”

3. “”

“”

“”“”

“”“”

1. “”

2. “”

3. “”“”

ActiveX/VBA>VBA> >

AutoCAD

“”

1. “”

2. “”

VBAIDE

“”“”

ActiveX/VBA>VBA> >

VBAIDE“”VBAIDE VBAIDE

1. “”

2. “”

ActiveX/VBA>VBA> >

VBAIDE“”

1. “”

2. “”

ActiveX/VBA>VBA> >

AutoCADVBA

VBA

VBA“”“”“”

VBAVBAIDE

VBA

AutoCADVBA

1. “”“” “”“VBA”

2. “VBA”“”“”

3. “”

4. “”

ActiveX/VBA>VBA>

VBAIDE

AutoCADVBAVBAIDEVBAIDE

VBAIDE

VBAIDE

VBAIDE“”“” “VisualBasic”

VBAVBAIDE

ActiveX/VBA>VBA>VBAIDE >

VBAIDE“”VBAVBA

“”“”“”

“”“”“”CTRL+R

ActiveX/VBA>VBA>VBAIDE >

ActiveX/VBA>VBA>VBAIDE >>

VBAAutoCADVBAAutoCAD

ActiveX/VBA>VBA>VBAIDE >>

ActiveX/VBA>VBA>VBAIDE >>

ActiveX/VBA>VBA>VBAIDE >>

ActiveX/VBA>VBA>VBAIDE >>

ActiveX/VBA>VBA>VBAIDE >>

1. VBAIDE“”

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

ActiveX/VBA>VBA>VBAIDE >

FRMBASCLS

“”“”“”

1. VBAIDE“”

2. “”“”“”

3. “”“”

ActiveX/VBA>VBA>VBAIDE >

VBAIDE“”“”

“”

1. VBAIDE“”

2. “”“”“”

3. “”“”“”

“”“”“”“”

ActiveX/VBA>VBA>VBAIDE >>

“”

“”“”“”

“”

“”

“”

“”“”“”

ActiveX/VBA>VBA>VBAIDE >>

“”

“”

“”“”“”“”“”VBAIDE

“”“”“”

“”

ActiveX/VBA>VBA>VBAIDE >

.dvb .dvbVBAIDE“”

AutoCAD

ACADProject

Project.dvb

1. VBAIDE“”

2. “”Name

1. VBAIDE“”“”

2. “”

ActiveX/VBA>VBA>VBAIDE >

AutoCADVBASAVESAVEVBAIDE“”VBAVBA“VBA”

VBAIDESAVE

VBA“”

AutoCADVBA

project.dvb project.dvb project.dvb

ActiveX/VBA>VBA>VBAIDE >

VBA

VBA

VBAIDE“” “”

AutoCADAutoCAD

VBA

MicrosoftVBAAutoCADMicrosoftVBAVBAIDE“”MicrosoftVBA

VBA

VBA

1. VBAIDE“”

2. “”“”“”

3. “”“”“”

4. “”“”

5. “”“”

ActiveX/VBA>VBA>VBAIDE >

VBAIDE

“”VBAIDE“”“”“”

“”“”“”“”“”

ActiveX/VBA>VBA>VBAIDE >VBAIDE >

“”“”“”

ActiveX/VBA>VBA>VBAIDE >VBAIDE >

“”

ActiveX/VBA>VBA>VBAIDE >VBAIDE >

“”VBA

ActiveX/VBA>VBA>VBAIDE >VBAIDE >

“”

ActiveX/VBA>VBA>

AutoCADVBA“”AutoCADVBA

“”

1. AutoCADVBAIDEVBAIDE

2. VBAIDE“”“”“”

3. VBAIDE“”“”

4. HelloWorld“”Sub“”Public

5. “”

6. PublicSubHelloWorld() EndSub

ThisDrawing.Application.Documents.Add

7. 6

DiminsPoint(0To2)AsDouble'

DimtextHeightAsDouble'

DimtextStrAsString'

DimtextObjAsAcadText'

insPoint(0)=2'X

insPoint(1)=4'Y

insPoint(2)=0'Z

textHeight=1'1.0

textStr=""'

'Text

SettextObj=ThisDrawing.ModelSpace.AddText_

(textStr,insPoint,textHeight)

8. 7

ThisDrawing.SaveAs("Hello.dwg")

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

ActiveX/VBA>VBA>

VBAIDEVBAMicrosoftMicrosoftVBAIDE“”“MicrosoftVisualBasic”

ActiveX/VBA>VBA>

AutoCADVBA

.dvbVBA

AutoCADVBA

VBAAutoCAD

VBAAutoCAD

VBAIDE

ThisDrawing

ThisDrawingVBAThisDrawingAutoCADThisDrawing

VBAIDE

VBA

VBA

VBA

“”

“”VBA

ActiveX/VBA>VBA>

AutoCADVBA

VBAIDE

VBAIDEVBAIDEVBAIDEAutoCADAutoCAD

VBALOAD

VBAAutoCAD

VBARUN

“”AutoCADVBA

VBAUNLOAD

AutoCADVBAVBA“”

VBAMAN

VBA

VBASTMT

AutoCADVBA

<$nopage> <$nopage>:

ActiveX/VBA>

ActiveXAutomation

AutoCADActiveXAutomationAutoCADAutoCADActiveXAutomation

F1AutoCADActiveXAutomationVBAIDEF1

AutoCAD

<$nopage>

ActiveX/VBA>ActiveXAutomation>

AutoCAD

AutoCAD ®ActiveX®AutoCADAutoCADActiveX

AutoCAD

Application“”

ApplicationDocument

PreferencesPlotUtilityAutoCAD

ActiveX/VBA>ActiveXAutomation>AutoCAD >

Application

ApplicationAutoCADActiveXAutomationApplication

ApplicationPreferencesPreferences“”DatabasePreferencesApplicationAutoCADApplicationADSARXAutoCAD

ApplicationAutoCADDocumentsAutoCADMenuBarMenuGroupsVBAIDEVBE

ApplicationActiveXApplication

ActiveX/VBA>ActiveXAutomation>AutoCAD >

Document

DocumentAutoCADDocumentsAutoCADModelSpacePaperSpaceLayersLinetypesTextStylesDocumentPlotUtility

DocumentSummaryInfo

ActiveX/VBA>ActiveXAutomation>AutoCAD >

AutoCADAddAdd<>AddLine

CountItem

<$nopage>

ActiveX/VBA>ActiveXAutomation>AutoCAD >

Add<Entityname>AutoCADLayerLinetypeColorHandleCenterRadiusArea

LayersLinetypesDimStylesSelectionSetsAdd

ActiveX/VBA>ActiveXAutomation>AutoCAD >

PreferencesPlotUtility

Preferences“”“”DatabasePreferencesSetVariableGetVariable“”

Plot“”

UtilityAutoCADAutoCAD

ActiveX/VBA>ActiveXAutomation>AutoCAD >

AutoCAD

AutomationAutoCADAutoCAD

AutomationAutoCADAutoCAD

<$nopage>:

ActiveX/VBA>ActiveXAutomation>

VBAVBAAutoCAD

VBA ThisDrawingAutoCAD ThisDrawingDocument

ThisDrawingAutoCAD ThisDrawingAutoCAD

ThisDrawing.Save

Application

ActiveX/VBA>ActiveXAutomation>>

ThisDrawingModelSpaceAddLine

DimstartPoint(0To2)AsDouble,endPoint(0To2)AsDouble

DimLineObjasAcadLine

startPoint(0)=0:startPoint(1)=0:startPoint(2)=0

endPoint(0)=30:endPoint(1)=20:endPoint(2)=0

SetLineObj=ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)

AcadModelSpace( moSpace)

DimmoSpaceAsAcadModelSpace

SetmoSpace=ThisDrawing.ModelSpace

DimstartPoint(0To2)AsDouble,endPoint(0To2)AsDouble

DimLineObjasAcadLine

startPoint(0)=0:startPoint(1)=0:startPoint(2)=0

endPoint(0)=30:endPoint(1)=20:endPoint(2)=0

SetLineObj=moSpace.AddLine(startPoint,endPoint)

AcadEntity

SubCh2_FindFirstEntity()

'

OnErrorResumeNext

DimentityAsAcadEntity

IfThisDrawing.ModelSpace.count<>0Then

Setentity=ThisDrawing.ModelSpace.Item(0)

MsgBoxentity.ObjectName+_

"isthefirstentityinmodelspace."

MsgBox"Therearenoobjectsinmodelspace."

EndIf

EndSub

<$nopage>:

ActiveX/VBA>ActiveXAutomation>>

Application

DocumentApplicationApplicationApplicationDocument

ThisDrawingDocument

ThisDrawing.Application.Update

ActiveX/VBA>ActiveXAutomation>

AutoCAD

ModelSpace

PaperSpace

Block

Blocks

Dictionaries

DimStyles

FileDependencies

“”

Groups

Hyperlinks

Layers

Layouts

Linetypes

MenuBar

AutoCAD

MenuGroups

AutoCAD

PlotConfigurations

RegisteredApplications

SelectionSets

TextStyles

UCSs

(UCS)

Views

Viewports

ActiveX/VBA>ActiveXAutomation>>

DocumentDocumentLayers

DimlayerCollectionasAcadLayers

SetlayerCollection=ThisDrawing.Layers

DocumentsMenuBarMenuGroupsApplicationApplicationMenuGroups

DimMenuGroupsCollectionasAcadMenuGroups

SetMenuGroupsCollection=ThisDrawing.Application.MenuGroups

ActiveX/VBA>ActiveXAutomation>>

AddLayers

DimnewLayerasAcadLayer

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

ActiveX/VBA>ActiveXAutomation>>

ItemItem

ItemItem

ThisDrawing.Layers.Item("ABC")

ThisDrawing.Layers("ABC")

ForEach

Layers

SubCh2_IterateLayer()

'

OnErrorResumeNext

DimIAsInteger

DimmsgAsString

msg=""

ForI=0ToThisDrawing.Layers.count-1

msg=msg+ThisDrawing.Layers.Item(I).Name+vbCrLf

Next

MsgBoxmsg

EndSub

MyLayer

MyLayer

SubCh2_FindLayer()

'ItemMyLayer

OnErrorResumeNext

DimABCLayerAsAcadLayer

SetABCLayer=ThisDrawing.Layers("MyLayer")

IfErr<>0Then

MsgBox"Thelayer'MyLayer'doesnotexist."

EndIf

EndSub

ActiveX/VBA>ActiveXAutomation>>

DeleteABC

DimABCLayerasAcadLayer

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

ABCLayer.Delete

ActiveX/VBA>ActiveXAutomation>

CircleCenterCircleOffsetCircleAutoCAD ActiveXandVBAReferenceCircle

ActiveX/VBA>ActiveXAutomation>

Application

AutoCADAutoCAD

ActiveX/VBA>ActiveXAutomation>

Automation

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

ActiveX/VBA>ActiveXAutomation>

ActiveXAutomationAutoCADActiveXAutomation

ActiveX/VBA>ActiveXAutomation>>

EmptyErrorNothing NULL VarType TypeName

VBA

ActiveX/VBA>ActiveXAutomation>>

AutoCADActiveXAutomationAutoCADActiveXAutomationAutoCADActiveXAutomation

AutoCADVBAVBAActiveXAutomation

ActiveX/VBA>ActiveXAutomation>>

AutoCADActiveXAutomationCreateTypedArrayAutoCAD

CreateTypedArray

CreateTypedArray

CreateTypedArrayAddSpline

SubCh2_CreateSplineUsingTypedArray()

'CreateTypedArray

'

DimsplineObjAsAcadSpline

DimstartTanAsVariant

DimendTanAsVariant

DimfitPointsAsVariant

DimutilObjAsObject'Utility

SetutilObj=ThisDrawing.Utility

'Spline

utilObj.CreateTypedArray_

startTan,vbDouble,0.5,0.5,0

utilObj.CreateTypedArray_

endTan,vbDouble,0.5,0.5,0

utilObj.CreateTypedArray_

fitPoints,vbDouble,0,0,0,5,5,0,10,0,0

SetsplineObj=ThisDrawing.ModelSpace.AddSpline_

(fitPoints,startTan,endTan)

'

ZoomAll

EndSub

ActiveX/VBA>ActiveXAutomation>>

AutoCADActiveXAutomationVBATypenameVBA ForEach

SubCh2_CalculateDistance()

Dimpoint1AsVariant

Dimpoint2AsVariant

'

point1=ThisDrawing.Utility.GetPoint_

(,vbCrLf&"Firstpoint:")

point2=ThisDrawing.Utility.GetPoint_

(point1,vbCrLf&"Secondpoint:")

'point1point2

DimxAsDouble,yAsDouble,zAsDouble

DimdistAsDouble

x=point1(0)-point2(0)

y=point1(1)-point2(1)

z=point1(2)-point2(2)

dist=Sqr((Sqr((x^2)+(y^2))^2)+(z^2))

'

MsgBox"Thedistancebetweenthepointsis:"_

&dist,,"CalculateDistance"

EndSub

ActiveX/VBA>ActiveXAutomation>

VBAVBA

AutoCAD2008COM“AutoCAD.Application.17”VBAVB

ActiveX/VBA>ActiveXAutomation> >

VBAVB

VBAutoCADVB“”“”“”“”AutoCAD“”

ThisDrawingAutoCAD( acadApp)(acadDoc)AutoCAD

AutoCADAutoCADVBGetObjectAutoCADApplicationAutoCADCreateObjectAutoCADApplicationAutoCAD

AutoCADGetObjectWindowsAutoCADGetObjectMicrosoftVBA(ROT)GetObject

AutoCADAutoCADVisible TRUE

GetObjectAutoCADGetObjectAutoCADVisible TRUEAutoCADAutoCADWindows

ProgIDCreateObjectGetObjectProgIDProgIDCreateObjectCreateObject("AutoCAD.Application")CreateObject("AutoCAD.Application.17")GetInterfaceObjectProgIDProgID

VisualBasic6AutoCAD

ErrClearDescription

SubCh2_ConnectToAcad()

DimacadAppAsAcadApplication

OnErrorResumeNext

SetacadApp=GetObject(,"AutoCAD.Application.17")

IfErrThen

Err.Clear

SetacadApp=CreateObject("AutoCAD.Application.17")

IfErrThen

MsgBoxErr.Description

ExitSub

EndIf

EndIf

MsgBox"Nowrunning"+acadApp.Name+_

"version"+acadApp.Version

EndSub

AutoCADDocumentDocumentApplicationActiveDocument

DimacadDocasAcadDocument

SetacadDoc=acadApp.ActiveDocument

acadDocAutoCAD

VBAVB

VBAVB

VBA

SubCh2_AddLineVBA()

'

'

DimlineObjAsAcadLine

DimstartPoint(0To2)AsDouble

DimendPoint(0To2)AsDouble

'

'

startPoint(0)=1

startPoint(1)=1

startPoint(2)=0

endPoint(0)=5

endPoint(1)=5

endPoint(2)=0

'

SetlineObj=ThisDrawing._

ModelSpace.AddLine_

(startPoint,endPoint)

'

ZoomAll

EndSub

VB

SubCh2_AddLineVB()

OnErrorResumeNext

'AutoCAD

DimacadAppAsAcadApplication

SetacadApp=GetObject_

(,"AutoCAD.Application.17")

IfErrThen

Err.Clear

SetacadApp=CreateObject_

("AutoCAD.Application.17")

IfErrThen

MsgBoxErr.Description

ExitSub

EndIf

EndIf

'AutoCAD

DimacadDocAsAcadDocument

SetacadDoc=acadApp.ActiveDocument

'

DimlineObjAsAcadLine

DimstartPoint(0To2)AsDouble

DimendPoint(0To2)AsDouble

startPoint(0)=1

startPoint(1)=1

startPoint(2)=0

endPoint(0)=5

endPoint(1)=5

endPoint(2)=0

'Line

SetlineObj=acadDoc.ModelSpace.AddLine_

(startPoint,endPoint)

ZoomAll

acadApp.visible=True

EndSub

<$nopage>

ActiveX/VBA>

AutoCAD

AutoCADAutoCAD

AutoCAD“”“”

AutoCAD

ActiveX/VBA>AutoCAD >

DocumentsDocumentAutoCAD ®

DocumentsAddDocumentsOpenDocumentsCloseAutoCAD

SaveSaveAsAutoCADSaved

DocumentImportExport

OpenVBA DirAutoCAD

SubCh3_OpenDrawing()

DimdwgNameAsString

dwgName="c:\campus.dwg"

IfDir(dwgName)<>""Then

ThisDrawing.Application.Documents.OpendwgName

MsgBox"File"&dwgName&"doesnotexist."

EndIf

EndSub

Add

SubCh3_NewDrawing()

DimdocObjAsAcadDocument

SetdocObj=ThisDrawing.Application.Documents.Add

EndSub

SubCh3_SaveActiveDrawing()

'

ThisDrawing.Save

'

ThisDrawing.SaveAs"MyDrawing.dwg"

EndSub

“”“”“”Save

SubCh3_TestIfSaved()

IfNot(ThisDrawing.Saved)Then

IfMsgBox("Doyouwishtosavethisdrawing?",_

vbYesNo)=vbYesThen

ThisDrawing.Save

EndIf

EndIf

EndSub

ActiveX/VBA>AutoCAD >

AutoCAD

“”“”AutoCAD

PreferencesDisplay

PreferencesDrafting

PreferencesFiles

PreferencesOpenSave

PreferencesOutput

PreferencesProfiles

PreferencesSelection

PreferencesSystem

PreferencesUser

PreferencesPreferencesApplicationPreferences

DimacadPrefasAcadPreferences

SetacadPref=ThisDrawing.Application.Preferences

DisplayDraftingFilesOpenSaveOutputProfileSelectionSystemUserPreferences

SubCh2_PrefsSetCursor()

'AutoCAD

'

'Preferences

DimacadPrefAsAcadPreferences

SetacadPref=ThisDrawing.Application.Preferences

'CursorSize

acadPref.Display.CursorSize=100

EndSub

SubCh2_PrefsSetDisplay()

'DisplayScreenMenuDisplayScrollBars

'

'

'Preferences

DimacadPrefAsAcadPreferences

SetacadPref=ThisDrawing.Application.Preferences

'

acadPref.Display.DisplayScreenMenu=True

acadPref.Display.DisplayScrollBars=False

EndSub

ActiveX/VBA>AutoCAD >AutoCAD >

PreferencesDatabasePreferencesAutoCADObjectDBXAutoCAD

DatabasePreferencesDocument

ActiveX/VBA>AutoCAD >

“”

“”AutoCADExcelAutoCAD

Application“”WindowState“”

“”

WindowTopWindowLeftWidthHeightAutoCAD“”400400

SubCh3_PositionApplicationWindow()

ThisDrawing.Application.WindowTop=0

ThisDrawing.Application.WindowLeft=0

ThisDrawing.Application.width=400

ThisDrawing.Application.height=400

EndSub

“”

SubCh3_MaximizeApplicationWindow()

ThisDrawing.Application.WindowState=acMax

EndSub

“”

SubCh3_MinimizeApplicationWindow()

ThisDrawing.Application.WindowState=acMin

EndSub

“”

“”

SubCh3_CurrentWindowState()

DimCurrWindowStateAsInteger

DimmsgAsString

CurrWindowState=ThisDrawing.Application.WindowState

msg=Choose(CurrWindowState,"normal",_

"minimized","maximized")

MsgBox"Theapplicationwindowis"+msg

EndSub

“”

VisibleAutoCAD

SubCh3_HideWindowState()

ThisDrawing.Application.Visible=False

EndSub

ActiveX/VBA>AutoCAD >

“”

AutoCAD“”“”

AutoCADActiveX“”“”

“”

ActiveX/VBA>AutoCAD >“” >

“”

Document“”WindowState“”“”

“”

WidthHeight“”400400

SubCh3_SizeDocumentWindow()

ThisDrawing.Width=400

ThisDrawing.Height=400

EndSub

“”

SubCh3_MaximizeDocumentWindow()

ThisDrawing.WindowState=acMax

EndSub

“”

SubCh3_MinimizeDocumentWindow()

ThisDrawing.WindowState=acMin

EndSub

“”

SubCh3_CurrentWindowState()

DimCurrWindowStateAsInteger

DimmsgAsString

CurrWindowState=ThisDrawing.WindowState

msg=Choose(CurrWindowState,"normal",_

"minimized","maximized")

MsgBox"Thedocumentwindowis"+msg

EndSub

ActiveX/VBA>AutoCAD >“” >

“”

AutoCAD“”AutoCAD“”

ActiveX/VBA>AutoCAD >“” >“” >

“”

ZoomWindowZoomPickWindowZoomWindow“”ZoomPickWindow“”

SubCh3_ZoomWindow()

'ZoomWindow

MsgBox"PerformaZoomWindowwith:"&vbCrLf&_

"1.3,7.8,0"&vbCrLf&_

"13.7,-2.6,0",,"ZoomWindow"

Dimpoint1(0To2)AsDouble

Dimpoint2(0To2)AsDouble

point1(0)=1.3:point1(1)=7.8:point1(2)=0

point2(0)=13.7:point2(1)=-2.6:point2(2)=0

ThisDrawing.Application.ZoomWindowpoint1,point2

'ZoomPickWindow

MsgBox"PerformaZoomPickWindow",,"ZoomPickWindow"

ThisDrawing.Application.ZoomPickWindow

EndSub

ActiveX/VBA>AutoCAD >“” >“” >

ZoomScaledAutoCAD

acZoomScaledAbsolute acZoomScaledRelative

acZoomScaledRelativePSpace

SubCh3_ZoomScaled()

MsgBox"PerformaZoomScaledusing:"&vbCrLf&_

"ScaleType:acZoomScaledRelative"&vbCrLf&_

"ScaleFactor:2",,"ZoomScaled"

DimscalefactorAsDouble

DimscaletypeAsInteger

scalefactor=2

scaletype=acZoomScaledRelative

ThisDrawing.Application.ZoomScaledscalefactor,scaletype

EndSub

ActiveX/VBA>AutoCAD >“” >“” >

ZoomCenterZoomCenter

ZoomCenter

SubCh3_ZoomCenter()

MsgBox"PerformaZoomCenterusing:"&vbCrLf&_

"Center3,3,0"&vbCrLf&_

"Magnification:10",,"ZoomCenter"

DimCenter(0To2)AsDouble

DimmagnificationAsDouble

Center(0)=3:Center(1)=3:Center(2)=0

magnification=10

ThisDrawing.Application.ZoomCenterCenter,magnification

EndSub

ActiveX/VBA>AutoCAD >“” >“” >

ZoomAllZoomExtentsZoomPrevious

ZoomAllZoomAllZoomAll

ZoomExtentsZoom

ZoomExtentsZoomAllZoomExtentsZoomExtents

ZoomAllZoomExtents

ZoomPrevious

“”

SubCh3_ZoomAll()

'ZoomAll

MsgBox"PerformaZoomAll",,"ZoomAll"

ThisDrawing.Application.ZoomAll

'ZoomExtents

MsgBox"PerformaZoomExtents",,"ZoomExtents"

ThisDrawing.Application.ZoomExtents

EndSub

ActiveX/VBA>AutoCAD >“” >

AddViews

255($)(-)(_)

DeleteViewDeleteView

View

View( viewObj)

SubCh3_AddView()

'Views

DimviewObjAsAcadView

SetviewObj=ThisDrawing.Views.Add("View1")

EndSub

View

View( viewObj)

SubCh3_DeleteView()

DimviewObjAsAcadView

SetviewObj=ThisDrawing.Views("View1")

'

viewObj.Delete

EndSub

Views

Views

SubCh3_DeleteViewFromCollection()

ThisDrawing.Views("View1").Delete

EndSub

ActiveX/VBA>AutoCAD >“” >

AutoCAD

UCS

“”

ActiveX/VBA>AutoCAD >“” >>

SplitacViewport2HorizontalacViewport2VerticalacViewport3Left

acViewport4

“”

SubCh3_SplitAViewport()

'

DimvportObjAsAcadViewport

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

'vportObj2

vportObj.SplitacViewport2Horizontal

'vportObj

ThisDrawing.ActiveViewport=vportObj

EndSub

ActiveX/VBA>AutoCAD >“” >>

ActiveViewport

NameLowerLeftCornerUpperRightCorner

LowerLeftCornerUpperRightCorner

Viewport1-LowerLeftCorner=(0,.5),UpperRightCorner=(.5,1)

Viewport2-LowerLeftCorner=(.5,.5),UpperRightCorner=(1,1)

Viewport3-LowerLeftCorner=(0,0),UpperRightCorner=(.5,.5)

Viewport4-LowerLeftCorner=(.5,0),UpperRightCorner=(1,.5)

SubCh3_IteratingViewportWindows()

'

DimvportObjAsAcadViewport

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

ThisDrawing.ActiveViewport=vportObj

'vport4

vportObj.SplitacViewport4

'

'

'

'

DimvportAsAcadViewport

DimLLCornerAsVariant

DimURCornerAsVariant

ForEachvportInThisDrawing.Viewports

ThisDrawing.ActiveViewport=vport

LLCorner=vport.LowerLeftCorner

URCorner=vport.UpperRightCorner

MsgBox"Viewport:"&vport.Name&"isnowactive."&_

vbCrLf&"Lowerleftcorner:"&_

LLCorner(0)&","&LLCorner(1)&vbCrLf&_

"Upperrightcorner:"&_

URCorner(0)&","&URCorner(1)

Nextvport

EndSub

ActiveX/VBA>AutoCAD >“” >

“”

AutoCADActiveXAutomationAutoCAD

UpdateRegen

UpdateRegen

UpdateAutoCAD

SubCh3_UpdateDisplay()

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=1:center(1)=1:center(2)=0

radius=1

'

SetcircleObj=ThisDrawing.ModelSpace.AddCircle(center,radius)

'

circleObj.Update

EndSub

ActiveX/VBA>AutoCAD >

(UCS)Regen

ActiveTextStyleActiveUCSActiveViewport

SubCh3_ResetActiveViewport()

'

'

ThisDrawing.ActiveViewport.GridOn=_

Not(ThisDrawing.ActiveViewport.GridOn)

'

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

EndSub

ActiveX/VBA>AutoCAD >

DocumentSetVariableGetVariableAutoCADMAXSORT

ThisDrawing.SetVariable"MAXSORT",100

<$nopage>

ActiveX/VBA>AutoCAD >

AutoCAD

AutoCADActiveXAutomationAutoCAD

“”

ActiveX/VBA>AutoCAD >>

“”

0,0

SnapRotationAngleSnapBasePoint

UpdateAutoCAD

“”

(1,1)30

SubCh3_ChangeSnapBasePoint()

'

ThisDrawing.ActiveViewport.GridOn=True

'1,1

DimnewBasePoint(0To1)AsDouble

newBasePoint(0)=1:newBasePoint(1)=1

ThisDrawing.ActiveViewport.SnapBasePoint=newBasePoint

'300.575

DimrotationAngleAsDouble

rotationAngle=0.575

ThisDrawing.ActiveViewport.SnapRotationAngle=rotationAngle

'

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

EndSub

ActiveX/VBA>AutoCAD >>

“”

“”UCS“”“”

AutoCAD“”

AutoCAD“”

“”OrthoOn TRUE“” FALSE“”“”

ThisDrawing.ActiveViewport.OrthoOn=True

<$nopage>

ActiveX/VBA>AutoCAD >>

<$nopage>

ActiveX/VBA>AutoCAD >>>

AddXLine

(5,0,0)(1,1,0)

SubCh3_AddXLine()

DimxlineObjAsAcadXline

DimbasePoint(0To2)AsDouble

DimdirectionVec(0To2)AsDouble

'

basePoint(0)=2#:basePoint(1)=2#:basePoint(2)=0#

directionVec(0)=1#:directionVec(1)=1#:directionVec(2)=0#

'

SetxlineObj=ThisDrawing.ModelSpace.AddXLine_

(basePoint,directionVec)

ThisDrawing.Application.ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>>

BasePointDirectionVector

DimBPointAsVariant

DimVectorAsVariant

BPoint=xlineObj.basePoint

Vector=xlineObj.DirectionVector

ActiveX/VBA>AutoCAD >>>

ActiveX/VBA>AutoCAD >>>

BasePointDirectionVector

Ray

(5,0,0)(1,1,0)Ray

SubCh3_EditRay()

DimrayObjAsAcadRay

DimbasePoint(0To2)AsDouble

DimsecondPoint(0To2)AsDouble

'

basePoint(0)=3#:basePoint(1)=3#:basePoint(2)=0#

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

'Ray

SetrayObj=ThisDrawing.ModelSpace.AddRay_

(basePoint,secondPoint)

ThisDrawing.Application.ZoomAll

'Ray

MsgBox"Thebasepointoftherayis:"&_

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

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

rayObj.basePoint(2)&vbCrLf&_

"Thedirectionalvectorfortherayis:"&_

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

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

rayObj.DirectionVector(2),,"EditRay"

'

DimnewVector(0To2)AsDouble

newVector(0)=-1

newVector(1)=1

newVector(2)=0

rayObj.DirectionVector=newVector

ThisDrawing.RegenFalse

MsgBox"Thebasepointoftherayis:"&_

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

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

rayObj.basePoint(2)&vbCrLf&_

"Thedirectionalvectorfortherayis:"&_

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

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

rayObj.DirectionVector(2),,"EditRay"

EndSub

ActiveX/VBA>AutoCAD >>

UtilityUtility

AngleFromXAxisX

AngleToReal

AngleToString

DistanceToReal

CreateTypedArray

PolarPoint

TranslateCoordinates

GetDistance

GetDistance

GetDistance MsgBox

SubCh3_GetDistanceBetweenTwoPoints()

DimreturnDistAsDouble

'

returnDist=ThisDrawing.Utility.GetDistance_

(,"Picktwopoints.")

MsgBox"Thedistancebetweenthetwopointsis:"&returnDist

EndSub

ActiveX/VBA>AutoCAD >>

Area

BooleanArea

“”

ActiveX/VBA>AutoCAD >>>

1. GetPoint

2. AddLightweightPolyline

3. Area

4. Erase

SubCh3_CalculateDefinedArea()

Dimp1AsVariant

Dimp2AsVariant

Dimp3AsVariant

Dimp4AsVariant

Dimp5AsVariant

'

p1=ThisDrawing.Utility.GetPoint(,vbCrLf&"Firstpoint:")

p2=ThisDrawing.Utility.GetPoint(p1,vbCrLf&"Secondpoint:")

p3=ThisDrawing.Utility.GetPoint(p2,vbCrLf&"Thirdpoint:")

p4=ThisDrawing.Utility.GetPoint(p3,vbCrLf&"Fourthpoint:")

p5=ThisDrawing.Utility.GetPoint(p4,vbCrLf&"Fifthpoint:")

'

DimpolyObjAsAcadLWPolyline

Dimvertices(0To9)AsDouble

vertices(0)=p1(0):vertices(1)=p1(1)

vertices(2)=p2(0):vertices(3)=p2(1)

vertices(4)=p3(0):vertices(5)=p3(1)

vertices(6)=p4(0):vertices(7)=p4(1)

vertices(8)=p5(0):vertices(9)=p5(1)

SetpolyObj=ThisDrawing.ModelSpace.AddLightWeightPolyline_

(vertices)

polyObj.Closed=True

ThisDrawing.Application.ZoomAll

'

MsgBox"Theareadefinedbythepointsis"&_

polyObj.Area,,"CalculateDefinedArea"

EndSub

ActiveX/VBA>AutoCAD >

UtilityDocumentAutoCAD

AutoCADGetStringGetPointGetIntegerInitializeUserInput NULL

/ (vbCrLf)

GetStringGetPointGetKeyword

ActiveX/VBA>AutoCAD >>

GetString

GetStringAutoCAD01ENTER

AutoCAD

“”ENTER retVal

SubCh3_GetStringFromUser()

DimretValAsString

retVal=ThisDrawing.Utility.GetString_

(1,vbCrLf&"Enteryourname:")

MsgBox"Thenameenteredwas:"&retVal

EndSub

GetStringInitializeUserInput

ActiveX/VBA>AutoCAD >>

GetPoint

GetPointAutoCADAutoCADInitializeUserInput

SubCh3_GetPointsFromUser()

DimstartPntAsVariant

DimendPntAsVariant

Dimprompt1AsString

Dimprompt2AsString

prompt1=vbCrLf&"Enterthestartpointoftheline:"

prompt2=vbCrLf&"Entertheendpointoftheline:"

'

startPnt=ThisDrawing.Utility.GetPoint(,prompt1)

'

endPnt=ThisDrawing.Utility.GetPoint(startPnt,prompt2)

'

ThisDrawing.ModelSpace.AddLinestartPnt,endPnt

ThisDrawing.Application.ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>

GetKeyword

GetKeywordAutoCADInitializeUserInput

AutoCAD

InitializeUserInput1 NULLENTER

SubCh3_KeyWord()

DimkeyWordAsString

ThisDrawing.Utility.InitializeUserInput1,"LineCircleArc"

keyWord=ThisDrawing.Utility.GetKeyword_

(vbCrLf&"Enteranoption(Line/Circle/Arc):")

MsgBoxkeyWord,,"GetKeywordExample"

EndSub

ENTER NULL

SubCh3_KeyWord2()

DimkeyWordAsString

ThisDrawing.Utility.InitializeUserInput0,"LineCircleArc"

keyWord=ThisDrawing.Utility.GetKeyword_

(vbCrLf&"Enteranoption(Line/Circle/<Arc>):")

IfkeyWord=""ThenkeyWord="Arc"

MsgBoxkeyWord,,"GetKeywordExample"

EndSub

ActiveX/VBA>AutoCAD >>

InitializeUserInputAutoLISPGetAngleGetCornerGetDistanceGetIntegerGetKeywordGetOrientationGetPointGetRealInitializeUserInputGetStringGetInput

InitializeUserInput

AutoCAD

SubCh3_UserInput()

'InitializeUserInput(6)

'

'

'

ThisDrawing.Utility.InitializeUserInput6,"BigSmallRegular"

'

DimpromptStrAsString

promptStr=vbCrLf&"Enterthesizeor(Big/Small/<Regular>):"

'GetInteger

'ENTER

'

'

OnErrorResumeNext

'

DimreturnIntegerAsInteger

returnInteger=ThisDrawing.Utility.GetInteger(promptStr)

'

'GetInput

'returnInteger

IfErr.Number=-2145320928Then

DimreturnStringAsString

Debug.PrintErr.Description

returnString=ThisDrawing.Utility.GetInput()

IfreturnString=""Then'ENTER

returnString="Regular"'

EndIf

Err.Clear

Else'

returnString=returnInteger'

EndIf

'

MsgBoxreturnString,,"InitializeUserInputExample"

EndSub

ActiveX/VBA>AutoCAD >

AutoCAD

SendCommandAutoCADSendCommandASCIIENTERAutoLISPSendCommand

AutoCAD

(2,2,0)4ENTER

SubCh3_SendACommandToAutoCAD()

ThisDrawing.SendCommand"_Circle2,2,04"

ThisDrawing.SendCommand"_zooma"

EndSub

ActiveX/VBA>AutoCAD >

AutoCAD

AutoCAD“”“”“”“”

ActiveX

AutoCAD

DocumentsApplicationDocuments

DocumentsCountAutoCAD Documents.Count=0

AutoCAD Documents.Count>0

AutoCADVBA ThisDrawing ThisDrawing

ThisDrawing

AutoCADAutoCAD

ActiveX/VBA>AutoCAD >

AutoCAD(DXF) TMSATWMFImport

ActiveX/VBA>AutoCAD >

AutoCADExportAutoCADWMFSATEPSDXFBMPExport

WMFSATBMP

EPSDXFExport

DXF

DXFExprt.DXFExportDXFExport

SubCh3_ImportingAndExporting()

'

DimcircleObjAsAcadCircle

DimcenterPt(0To2)AsDouble

DimradiusAsDouble

centerPt(0)=2:centerPt(1)=2:centerPt(2)=0

radius=1

SetcircleObj=ThisDrawing.ModelSpace.AddCircle_

(centerPt,radius)

ThisDrawing.Application.ZoomAll

'

DimssetAsAcadSelectionSet

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

'

'AutoCADDXF

DimtempPathAsString

DimexportFileAsString

ConstdxfnameAsString="DXFExprt"

tempPath=_

ThisDrawing.Application.preferences.Files.TempFilePath

exportFile=tempPath&dxfname

ThisDrawing.ExportexportFile,"DXF",sset

'

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

'

ThisDrawing.Application.Documents.Add"acad.dwt"

'

DimimportFileAsString

DiminsertPoint(0To2)AsDouble

DimscalefactorAsDouble

importFile=tempPath&dxfname&".dxf"

insertPoint(0)=0:insertPoint(1)=0:insertPoint(2)=0

scalefactor=2#

'

ThisDrawing.ImportimportFile,insertPoint,scalefactor

ThisDrawing.Application.ZoomAll

EndSub

<$nopage>: <$startrange>:,<$startrange>,<$startrange>:,DXF,,,DXF,<$startrange>:,SelectionSet:,:,<$endrange>:,<$endrange>,<$endrange>:,<$endrange>:,:,:,RemoveItems:,Clear:,Erase:,Delete:,:,,Update:,:,:,,,:,:,:,,:,,,PurgeAll:,:,:,Name:,Add:,,Layer:,:,:,:,,,:,,,Copy,:,CopyObjects,:,:,:,CopyObjects:,Circle:,CopyObjects:,:,:,:,Offset,AddLightweightPolyline:,LightweightPolyline:,Offset:,Offset:,Mirror,:,Mirror:,Erase,MIRRTEXT,Text:,:Text,:,LightweightPolyline:,Mirror:,:,:,ArrayPolar:,:,:,,:,,,:,ArrayRectangular,:,,:,:,SnapRotationAngle,:,:,:,Move:,,Move:,Move:,:,,,Rotate,,Rotate:,Delete:,:,:,ScaleEntity,:,:,:,ScaleEntity:,TransformBy,:,<$nopage>: <$nopage>, <$endrange>:,::,::,::,:,::,:,:,Export:,Import:,::,::,Text:,Text:,Text:,:,:,:,:,:default,:,Add:,TextStyles,TextStyle,TextStyle:,FontFile,BigFontFile:TextStyle,Height,Width,ObliqueAngle,TextGenerationFlag,:,Regen:,Update:,:,TextGenerationFlag,GetFont:,SetFont:,:TrueType,:SHX,:,:TEXTFILL,TrueType,SHX,TEXTFILL,:Unicode,Unicode,:,,FontFile,BigFontFile:,FontFile:,TextStyle:,Text:,TrueType:,Height,Height:,Text:,AddText:,Text:,,,,:,ObliqueAngle,Text:ObliqueAngle,TextGenerationFlag:,Text:,Text:,Text:,TextGenerationFlag,TextGenerationFlag:,Text:,Text:,,Text:,StyleName,Text:,Alignment,InsertionPoint,ObliqueAngle,Rotation,ScaleFactor,TextAlignmentPoint,TextGenerationFlag,TextString,Update:Text,Alignment:,Text:,Text:,SetVariable:,Alignment:,TextAlignmentPoint:,Text:,MIRRTEXT,Text:,ArrayPolar:Text,ArrayRectangular:Text,Copy,Erase,Mirror,Move,Rotate,:,:,<$nopage>

ActiveX/VBA>

AutoCAD

Add

<$nopage>:

ActiveX/VBA>AutoCAD >

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

NewCreateObjectDimVBVBAAutoCADApplicationAutoCADAutoCADAddAdd< objectname

Point

ActiveX/VBA>AutoCAD >>

ModelSpacePaperSpaceBlock

ModelSpaceModelSpacePaperSpacePaperSpace

SetlineObj=ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)

AcadModelSpace AcadPaperSpace

DimmoSpaceAsAcadModelSpace

DimpaSpaceAsAcadPaperSpace

SetmoSpace=ThisDrawing.ModelSpace

SetpaSpace=ThisDrawing.PaperSpace

SetlineObj=moSpace.AddLine(startPoint,endPoint)

ActiveX/VBA>AutoCAD >>

AutoCAD—CONTINUOUS

AddLine

AddLightweightPolyline

AddMLine

AddPolyline

XY(OCS)OCS

AddLightweightPolyline(2,4)(4,2)(6,4)

SubCh4_AddLightWeightPolyline()

DimplineObjAsAcadLWPolyline

Dimpoints(0To5)AsDouble

'

points(0)=2:points(1)=4

points(2)=4:points(3)=2

points(4)=6:points(5)=4

'

SetplineObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

ThisDrawing.Application.ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>

AutoCADWCS

AddArc

AddCircle

AddEllipse

AddSpline

NURBSB

Spline

(0,0,0)(5,5,0)(10,0,0)(0.5,0.5,0.0)

SubCh4_CreateSpline()

'

'

DimsplineObjAsAcadSpline

DimstartTan(0To2)AsDouble

DimendTan(0To2)AsDouble

DimfitPoints(0To8)AsDouble

'

startTan(0)=0.5:startTan(1)=0.5:startTan(2)=0

endTan(0)=0.5:endTan(1)=0.5:endTan(2)=0

fitPoints(0)=1:fitPoints(1)=1:fitPoints(2)=0

fitPoints(3)=5:fitPoints(4)=5:fitPoints(5)=0

fitPoints(6)=10:fitPoints(7)=0:fitPoints(8)=0

'

SetsplineObj=ThisDrawing.ModelSpace.AddSpline_

(fitPoints,startTan,endTan)

ZoomAll

EndSub

AutoCAD ActiveXandVBAReferenceSplineAddSpline

ActiveX/VBA>AutoCAD >>

Point

PointPoint

PDMODEPDSIZEPointPDMODE02341

326496

PDSIZEPDMODE0105%PDSIZE

PDMODEPDSIZE

PDMODEPDSIZESetVariable

Point

(5,5,0)PointPDMODEPDSIZE

SubCh4_CreatePoint()

DimpointObjAsAcadPoint

Dimlocation(0To2)AsDouble

'

location(0)=5#:location(1)=5#:location(2)=0#

'

SetpointObj=ThisDrawing.ModelSpace.AddPoint(location)

ThisDrawing.SetVariable"PDMODE",34

ThisDrawing.SetVariable"PDSIZE",1

ZoomAll

EndSub

<$nopage>:

ActiveX/VBA>AutoCAD >>

FILLMODEFILLMODE

AddSolid

“”

(0,0,0)(5,0,0)(5,8,0)(0,8,0)

SubCh4_CreateSolid()

DimsolidObjAsAcadSolid

Dimpoint1(0To2)AsDouble

Dimpoint2(0To2)AsDouble

Dimpoint3(0To2)AsDouble

Dimpoint4(0To2)AsDouble

'

point1(0)=0#:point1(1)=0#:point1(2)=0#

point2(0)=5#:point2(1)=0#:point2(2)=0#

point3(0)=5#:point3(1)=8#:point3(2)=0#

point4(0)=0#:point4(1)=8#:point4(2)=0#

'

SetsolidObj=ThisDrawing.ModelSpace.AddSolid_

(point1,point2,point3,point4)

ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>

“”

ActiveX/VBA>AutoCAD >>>

AddRegionAutoCADAddRegion

RegionVBA UBound LBound

UBound(objRegions)-LBound(objRegions)+1

objRegionsAddRegion

SubCh4_CreateRegion()

'

'

Dimcurves(0To0)AsAcadCircle

'

'

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2

center(1)=2

center(2)=0

radius=5#

Setcurves(0)=ThisDrawing.ModelSpace.AddCircle_

(center,radius)

'

DimregionObjAsVariant

regionObj=ThisDrawing.ModelSpace.AddRegion(curves)

ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>>

Boolean

BooleanBooleanBoolean

SubCh4_CreateCompositeRegions()

'

'

DimRoomObjects(0To1)AsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=4

center(1)=4

center(2)=0

radius=2#

SetRoomObjects(0)=ThisDrawing.ModelSpace._

AddCircle(center,radius)

radius=1#

SetRoomObjects(1)=ThisDrawing.ModelSpace._

AddCircle(center,radius)

'

DimregionsAsVariant

regions=ThisDrawing.ModelSpace.AddRegion(RoomObjects)

'

DimRoundRoomObjAsAcadRegion

DimPillarObjAsAcadRegion

Ifregions(0).Area>regions(1).AreaThen

'

SetRoundRoomObj=regions(0)

SetPillarObj=regions(1)

'

SetPillarObj=regions(0)

SetRoundRoomObj=regions(1)

EndIf

'

'

RoundRoomObj.BooleanacSubtraction,PillarObj

'Area

MsgBox"Thecarpetareais:"&RoundRoomObj.Area

EndSub

Area

ActiveX/VBA>AutoCAD >>>

Boolean acUnion acSubtraction

ActiveX/VBA>AutoCAD >>>

acIntersection

ActiveX/VBA>AutoCAD >>

Hatch

“”Hatch

ActiveX/VBA>AutoCAD >>>

Hatch

HatchHatch

HatchAddHatch

ActiveX/VBA>AutoCAD >>>

AddHatchAssociativity TRUEAddHatchAssociativity FALSE

ActiveX/VBA>AutoCAD >>>

AutoCAD

AutoCADAutoCADAutoCAD

Hatch

acHatchPatternTypePredefined

acad.pat

acHatchPatternTypeUserDefined

acHatchPatternTypeCustomDefined

PAT acad.pat

ActiveX/VBA>AutoCAD >>>

Hatch

AppendOuterLoop

AppendInnerLoop

HatchHatchStyleHatchStyle

HatchStyle

Normal AutoCADHatchStyle

Outer

Ignore

Evaluate

Hatch

SubCh4_CreateHatch()

DimhatchObjAsAcadHatch

DimpatternNameAsString

DimPatternTypeAsLong

DimbAssociativityAsBoolean

'

patternName="ANSI31"

PatternType=0

bAssociativity=True

'Hatch

SethatchObj=ThisDrawing.ModelSpace.AddHatch_

(PatternType,patternName,bAssociativity)

'

DimouterLoop(0To0)AsAcadEntity

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=3:center(1)=3:center(2)=0

radius=1

SetouterLoop(0)=ThisDrawing.ModelSpace._

AddCircle(center,radius)

'Hatch

'

hatchObj.AppendOuterLoop(outerLoop)

hatchObj.Evaluate

ThisDrawing.RegenTrue

EndSub

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

ActiveX/VBA>AutoCAD >

SelectionSets

ActiveX/VBA>AutoCAD >>

Add—

AutoCADDelete

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

SubCh4_CreateSelectionSet()

DimselectionSet1AsAcadSelectionSet

SetselectionSet1=ThisDrawing.SelectionSets._

Add("NewSelectionSet")

EndSub

ActiveX/VBA>AutoCAD >>

AddItems

Select

SelectAtPoint

SelectByPolygon

SelectOnScreen

SubCh4_AddToASelectionSet()

'

DimssetAsAcadSelectionSet

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

'

'

'

sset.SelectOnScreen

EndSub

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

ActiveX/VBA>AutoCAD >>

AutoCADSelectSelectAtPointSelectByPolygonSelectOnScreen

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

ActiveX/VBA>AutoCAD >>>

DXF

DXF

DXF

0“Line”“Circle”“Arc”

2

8“Layer0”

600=1=

620256BYBLOCK256BYLAYER

67 /0=1=

DXF DXF“”

FilterType(0)=0'

FilterData(0)="Circle"'“Circle”

Circle

SubCh4_FilterMtext()

DimsstextAsAcadSelectionSet

DimFilterType(0)AsInteger

DimFilterData(0)AsVariant

Setsstext=ThisDrawing.SelectionSets.Add("SS2")

FilterType(0)=0

FilterData(0)="Circle"

sstext.SelectOnScreenFilterType,FilterData

EndSub

ActiveX/VBA>AutoCAD >>>

0FilterTypeFilterData

SubCh4_FilterBlueCircleOnLayer0()

DimsstextAsAcadSelectionSet

DimFilterType(1)AsInteger

DimFilterData(1)AsVariant

Setsstext=ThisDrawing.SelectionSets.Add("SS4")

FilterType(0)=0

FilterData(0)="Circle"

FilterType(1)=8

FilterData(1)="0"

sstext.SelectOnScreenFilterType,FilterData

EndSub

ActiveX/VBA>AutoCAD >>>

AutoCAD

-4DXF

"*"

"="

"!="

"/="

"<>"

"<"

"<="

">"

">="

"&" AND

"&="

-4(<)(>)

"<AND"

"AND>"

"<OR" "OR>"

"<XOR"

"XOR>"

"<NOT"

"NOT>"

5.0

5.0

SubCh4_FilterRelational()

DimsstextAsAcadSelectionSet

DimFilterType(2)AsInteger

DimFilterData(2)AsVariant

Setsstext=ThisDrawing.SelectionSets.Add("SS5")

FilterType(0)=0

FilterData(0)="Circle"

FilterType(1)=-4

FilterData(1)=">="

FilterType(2)=40

FilterData(2)=5#

sstext.SelectOnScreenFilterType,FilterData

EndSub

TextMtext

TextMtext

SubCh4_FilterOrTest()

DimsstextAsAcadSelectionSet

DimFilterType(3)AsInteger

DimFilterData(3)AsVariant

Setsstext=ThisDrawing.SelectionSets.Add("SS6")

FilterType(0)=-4

FilterData(0)="<or"

FilterType(1)=0

FilterData(1)="TEXT"

FilterType(2)=0

FilterData(2)="MTEXT"

FilterType(3)=-4

FilterData(3)="or>"

sstext.SelectOnScreenFilterType,FilterData

EndSub

ActiveX/VBA>AutoCAD >>>

AutoCAD

#

@

.

*

?

~

[...]

[~...]

-

,

`

(`)“*U2”

FilterType(0)=2

FilterData(0)="`*U2"

Mtext

“The”SelectByPolygon

SubCh4_FilterPolygonWildcard()

DimsstextAsAcadSelectionSet

DimFilterType(1)AsInteger

DimFilterData(1)AsVariant

DimpointsArray(0To11)AsDouble

DimmodeAsInteger

mode=acSelectionSetWindowPolygon

pointsArray(0)=-12#:pointsArray(1)=-7#:pointsArray(2)=0

pointsArray(3)=-12#:pointsArray(4)=10#:pointsArray(5)=0

pointsArray(6)=10#:pointsArray(7)=10#:pointsArray(8)=0

pointsArray(9)=10#:pointsArray(10)=-7#:pointsArray(11)=0

Setsstext=ThisDrawing.SelectionSets.Add("SS10")

FilterType(0)=0

FilterData(0)="MTEXT"

FilterType(1)=1

FilterData(1)="*The*"

sstext.SelectByPolygonmode,pointsArray,FilterType,FilterData

EndSub

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

ActiveX/VBA>AutoCAD >>>

AutoCAD

“MY_APP”

SubCh4_FilterXdata()

DimsstextAsAcadSelectionSet

DimmodeAsInteger

DimpointsArray(0To11)AsDouble

mode=acSelectionSetWindowPolygon

pointsArray(0)=-12#:pointsArray(1)=-7#:pointsArray(2)=0

pointsArray(3)=-12#:pointsArray(4)=10#:pointsArray(5)=0

pointsArray(6)=10#:pointsArray(7)=10#:pointsArray(8)=0

pointsArray(9)=10#:pointsArray(10)=-7#:pointsArray(11)=0

DimFilterType(1)AsInteger

DimFilterData(1)AsVariant

Setsstext=ThisDrawing.SelectionSets.Add("SS9")

FilterType(0)=0

FilterData(0)="Circle"

FilterType(1)=1001

FilterData(1)="MY_APP"

sstext.SelectByPolygonmode,pointsArray,FilterType,FilterData

EndSub

ActiveX/VBA>AutoCAD >>

“SS10”

SubGetObjInSet()

DimselsetAsAcadSelectionSet

Setselset=ThisDrawing.SelectionSets("SS10")

MsgBox("Selectionset"&selset.Name&"contains"&_

selset.Count&"items")

EndSub

SelectionSetsForEachSelectionSets

SubListSelectionSets()

DimselsetCollectionAsAcadSelectionSets

DimselsetAsAcadSelectionSet

DimentAsObject

Dimi,jAsInteger

SetselsetCollection=ThisDrawing.SelectionSets

'

i=0

ForEachselsetInselsetCollection

MsgBox"Selectionset"&CStr(i)&"is:"&selset.Name

'

j=0

ForEachentInselset

MsgBox"Item"&CStr(j+1)&"in"&selset.Name_

&"is:"&ent.EntityName

j=j+1

Next

i=i+1

Next

EndSub

ActiveX/VBA>AutoCAD >>

RemoveItems

RemoveItems

Clear

Clear

Erase

Erase

Delete

DeleteDelete

<$nopage>:

ActiveX/VBA>AutoCAD >

Update

ActiveX/VBA>AutoCAD >>

AutoCAD

ActiveX/VBA>AutoCAD >>>

PurgeAll

ThisDrawing.PurgeAll

ActiveX/VBA>AutoCAD >>>

AutoCAD0CONTINUOUS

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

Name

“NewLayer”“MyLayer”

SubCh4_RenamingLayer()

'

DimlayerObjAsAcadLayer

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

'

layerObj.Name="MyLayer"

EndSub

ActiveX/VBA>AutoCAD >>

“”

ActiveX/VBA>AutoCAD >>>

Copy

ActiveX/VBA>AutoCAD >>>

CopyObjectsCopy

CopyObjectsOwner

Circle

CircleCopyObjects

SubCh4_CopyCircleObjects()

DimDOC1AsAcadDocument

DimcircleObj1AsAcadCircle

DimcircleObj2AsAcadCircle

DimcircleObj1CopyAsAcadCircle

DimcircleObj2CopyAsAcadCircle

DimcenterPoint(0To2)AsDouble

Dimradius1AsDouble

Dimradius2AsDouble

Dimradius1CopyAsDouble

Dimradius2CopyAsDouble

DimobjCollection(0To1)AsObject

DimretObjectsAsVariant

'Circle

centerPoint(0)=0:centerPoint(1)=0:centerPoint(2)=0

radius1=5#:radius2=7#

radius1Copy=1#:radius2Copy=2#

'

SetDOC1=ThisDrawing.Application.Documents.Add

'

SetcircleObj1=DOC1.ModelSpace.AddCircle_

(centerPoint,radius1)

SetcircleObj2=DOC1.ModelSpace.AddCircle_

(centerPoint,radius2)

ZoomAll

'

'CopyObjects

SetobjCollection(0)=circleObj1

SetobjCollection(1)=circleObj2

'

'

retObjects=DOC1.CopyObjects(objCollection)

'

'

SetcircleObj1Copy=retObjects(0)

SetcircleObj2Copy=retObjects(1)

circleObj1Copy.radius=radius1Copy

circleObj1Copy.Color=acRed

circleObj2Copy.radius=radius2Copy

circleObj2Copy.Color=acRed

ZoomAll

EndSub

CircleCopyObjects

SubCh4_Copy_to_New_Drawing()

DimDOC0AsAcadDocument

DimcircleObj1AsAcadCircle,circleObj2AsAcadCircle

DimcenterPoint(0To2)AsDouble

Dimradius1AsDouble,radius2AsDouble

Dimradius1CopyAsDouble,radius2CopyAsDouble

DimobjCollection(0To1)AsObject

DimretObjectsAsVariant

'Circle

centerPoint(0)=0:centerPoint(1)=0:centerPoint(2)=0

radius1=5#:radius2=7#

radius1Copy=1#:radius2Copy=2#

'

SetcircleObj1=ThisDrawing.ModelSpace.AddCircle_

(centerPoint,radius1)

SetcircleObj2=ThisDrawing.ModelSpace.AddCircle_

(centerPoint,radius2)

ThisDrawing.Application.ZoomAll

'

SetDOC0=ThisDrawing.Application.ActiveDocument

'

'

'

'CopyObjects

SetobjCollection(0)=circleObj1

SetobjCollection(1)=circleObj2

'

DimDoc1MSpaceAsAcadModelSpace

DimDOC1AsAcadDocument

SetDOC1=Documents.Add

SetDoc1MSpace=DOC1.ModelSpace

'A

'

retObjects=DOC0.CopyObjects(objCollection,Doc1MSpace)

DimcircleObj1CopyAsAcadCircle,circleObj2CopyAsAcadCircle

'

'

SetcircleObj1Copy=retObjects(0)

SetcircleObj2Copy=retObjects(1)

circleObj1Copy.radius=radius1Copy

circleObj1Copy.Color=acRed

circleObj2Copy.radius=radius2Copy

circleObj2Copy.Color=acRed

ThisDrawing.Application.ZoomAll

MsgBox"Circlescopied."

EndSub

ActiveX/VBA>AutoCAD >>

OffsetAutoCAD“”“”AutoCAD X,Y,ZWCS

“”

SubCh4_OffsetPolyline()

'

DimplineObjAsAcadLWPolyline

Dimpoints(0To11)AsDouble

points(0)=1:points(1)=1

points(2)=1:points(3)=2

points(4)=2:points(5)=2

points(6)=3:points(7)=2

points(8)=4:points(9)=4

points(10)=4:points(11)=1

SetplineObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

plineObj.Closed=True

ZoomAll

'

DimoffsetObjAsVariant

offsetObj=plineObj.Offset(0.25)

ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>

MirrorUCS XY

AutoCADmirrorErase

TextMIRRTEXTMIRRTEXT(1)TextMIRRTEXT(0)GetVariableSetVariableMIRRTEXT

Viewport

“”

SubCh4_MirrorPolyline()

'

DimplineObjAsAcadLWPolyline

Dimpoints(0To11)AsDouble

points(0)=1:points(1)=1

points(2)=1:points(3)=2

points(4)=2:points(5)=2

points(6)=3:points(7)=2

points(8)=4:points(9)=4

points(10)=4:points(11)=1

SetplineObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

plineObj.Closed=True

ZoomAll

'

Dimpoint1(0To2)AsDouble

Dimpoint2(0To2)AsDouble

point1(0)=0:point1(1)=4.25:point1(2)=0

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

'

DimmirrorObjAsAcadLWPolyline

SetmirrorObj=plineObj.Mirror(point1,point2)

DimcolAsNewAcadAcCmColor

Callcol.SetRGB(125,175,235)

mirrorObj.TrueColor=col

ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>

“”

ActiveX/VBA>AutoCAD >>>

ArrayPolar10WCS

AutoCADAutoCAD

AutoCADARRAY“”

(4,4,0)180

SubCh4_ArrayingACircle()

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2#:center(1)=2#:center(2)=0#

radius=1

SetcircleObj=ThisDrawing.ModelSpace._

AddCircle(center,radius)

ZoomAll

'

DimnoOfObjectsAsInteger

DimangleToFillAsDouble

DimbasePnt(0To2)AsDouble

noOfObjects=4

angleToFill=3.14'180

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

'(3,3,0)

'

'

DimretObjAsVariant

retObj=circleObj.ArrayPolar_

(noOfObjects,angleToFill,basePnt)

ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>>

ArrayRectangular

11

AutoCAD0 X YSnapRotationAngle

55

SubCh4_ArrayRectangularExample()

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2#:center(1)=2#:center(2)=0#

radius=0.5

SetcircleObj=ThisDrawing.ModelSpace._

AddCircle(center,radius)

ZoomAll

'

DimnumberOfRowsAsLong

DimnumberOfColumnsAsLong

DimnumberOfLevelsAsLong

DimdistanceBwtnRowsAsDouble

DimdistanceBwtnColumnsAsDouble

DimdistanceBwtnLevelsAsDouble

numberOfRows=5

numberOfColumns=5

numberOfLevels=2

distanceBwtnRows=1

distanceBwtnColumns=1

distanceBwtnLevels=1

'

DimretObjAsVariant

retObj=circleObj.ArrayRectangular_

(numberOfRows,numberOfColumns,numberOfLevels,_

distanceBwtnRows,distanceBwtnColumns,distanceBwtnLevels)

ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>

“”

ActiveX/VBA>AutoCAD >>>

Move

X

SubCh4_MoveCircle()

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2#:center(1)=2#:center(2)=0#

radius=0.5

SetcircleObj=ThisDrawing.ModelSpace._

AddCircle(center,radius)

ZoomAll

'

'x

'

Dimpoint1(0To2)AsDouble

Dimpoint2(0To2)AsDouble

point1(0)=0:point1(1)=0:point1(2)=0

point2(0)=2:point2(1)=0:point2(2)=0

'

circleObj.Movepoint1,point2

circleObj.Update

EndSub

ActiveX/VBA>AutoCAD >>

RotateWCS

“”

(4,4.25,0)45

SubCh4_RotatePolyline()

'

DimplineObjAsAcadLWPolyline

Dimpoints(0To11)AsDouble

points(0)=1:points(1)=2

points(2)=1:points(3)=3

points(4)=2:points(5)=3

points(6)=3:points(7)=3

points(8)=4:points(9)=4

points(10)=4:points(11)=2

SetplineObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

plineObj.Closed=True

ZoomAll

'(4,4.25,0)

'45

DimbasePoint(0To2)AsDouble

DimrotationAngleAsDouble

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

rotationAngle=0.7853981'45degrees

'

plineObj.RotatebasePoint,rotationAngle

plineObj.Update

EndSub

ActiveX/VBA>AutoCAD >>

Delete

ActiveXAutomationDeleteModelSpaceLayersDictionaries

SubCh4_DeletePolyline()

'

DimlwpolyObjAsAcadLWPolyline

Dimvertices(0To5)AsDouble

vertices(0)=2:vertices(1)=4

vertices(2)=4:vertices(3)=2

vertices(4)=6:vertices(5)=4

SetlwpolyObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(vertices)

ZoomAll

'

lwpolyObj.Delete

ThisDrawing.RegenacActiveViewport

EndSub

ActiveX/VBA>AutoCAD >>

ScaleEntity XY ZWCS101

“”

0.5

SubCh4_ScalePolyline()

'

DimplineObjAsAcadLWPolyline

Dimpoints(0To11)AsDouble

points(0)=1:points(1)=2

points(2)=1:points(3)=3

points(4)=2:points(5)=3

points(6)=3:points(7)=3

points(8)=4:points(9)=4

points(10)=4:points(11)=2

SetplineObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

plineObj.Closed=True

ZoomAll

'

DimbasePoint(0To2)AsDouble

DimscalefactorAsDouble

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

scalefactor=0.5

'

plineObj.ScaleEntitybasePoint,scalefactor

plineObj.Update

EndSub

<$nopage>:

ActiveX/VBA>AutoCAD >>

4x4TransformBy

R=T=

R00 R01 R02 T0

R10 R11 R12 T1

R20 R21 R22 T2

0 0 0 1

tMatrix(0,0,0)90

tMatrix(0,0)=0.0

tMatrix(0,1)=-1.0

tMatrix(0,2)=0.0

tMatrix(0,3)=0.0

tMatrix(1,0)=1.0

tMatrix(1,1)=0.0

tMatrix(1,2)=0.0

tMatrix(1,3)=0.0

tMatrix(2,0)=0.0

tMatrix(2,1)=0.0

tMatrix(2,2)=1.0

tMatrix(2,3)=0.0

tMatrix(3,0)=0.0

tMatrix(3,1)=0.0

tMatrix(3,2)=0.0

tMatrix(3,3)=1.0

TransformBy( tMatrix)( anObj)

anObj.TransformBytMatrix

90

SubCh4_TransformBy()

'

DimlineObjAsAcadLine

DimstartPt(0To2)AsDouble

DimendPt(0To2)AsDouble

startPt(0)=2

startPt(1)=1

startPt(2)=0

endPt(0)=5

endPt(1)=1

endPt(2)=0

SetlineObj=ThisDrawing.ModelSpace._

AddLine(startPt,endPt)

ZoomAll

'transMat

'

'(0,0,0)90

DimtransMat(0To3,0To3)AsDouble

transMat(0,0)=0#:transMat(0,1)=-1#

transMat(0,2)=0#:transMat(0,3)=0#

transMat(1,0)=1#:transMat(1,1)=0#

transMat(1,2)=0#:transMat(1,3)=0#

transMat(2,0)=0#:transMat(2,1)=0#

transMat(2,2)=1#:transMat(2,3)=0#

transMat(3,0)=0#:transMat(3,1)=0#

transMat(3,2)=0#:transMat(3,3)=1#

'

lineObj.TransformBytransMat

lineObj.Update

EndSub

(0,0,0)90

0.0 -1.0 0.0 0.0

1.0 0.0 0.0 0.0

0.0 0.0 1.0 0.0

0.0 0.0 0.0 1.0

(5,5,0)45

0.707107 -0.707107 0.0 5.0

0.707107 0.707107 0.0 -2.071068

0.0 0.0 1.0 0.0

0.0 0.0 0.0 1.0

(10,10,0)

1.0 0.0 0.0 10.0

0.0 1.0 0.0 10.0

0.0 0.0 1.0 0.0

0.0 0.0 0.0 1.0

(0,0,0)10,10

10.0 0.0 0.0 0.0

0.0 10.0 0.0 0.0

0.0 0.0 10.0 0.0

0.0 0.0 0.0 1.0

(2,2,0)10,10

10.0 0.0 0.0 -18.0

0.0 10.0 0.0 -18.0

0.0 0.0 10.0 0.0

0.0 0.0 0.0 1.0

ActiveX/VBA>AutoCAD >>

StartPointEndPointStartAngleEndAngleUpdate

“”

SubCh4_LengthenLine()

'

DimlineObjAsAcadLine

DimstartPoint(0To2)AsDouble

DimendPoint(0To2)AsDouble

startPoint(0)=0

startPoint(1)=0

startPoint(2)=0

endPoint(0)=1

endPoint(1)=1

endPoint(2)=1

SetlineObj=ThisDrawing.ModelSpace._

AddLine(startPoint,endPoint)

lineObj.Update

'4,4,4

'

endPoint(0)=4

endPoint(1)=4

endPoint(2)=4

lineObj.endPoint=endPoint

lineObj.Update

EndSub

ActiveX/VBA>AutoCAD >>

“”

SubCh4_ExplodePolyline()

DimplineObjAsAcadLWPolyline

Dimpoints(0To11)AsDouble

'

points(0)=1:points(1)=1

points(2)=1:points(3)=2

points(4)=2:points(5)=2

points(6)=3:points(7)=2

points(8)=4:points(9)=4

points(10)=4:points(11)=1

'

SetplineObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

'

'

plineObj.SetBulge3,-0.5

plineObj.Update

'

DimexplodedObjectsAsVariant

explodedObjects=plineObj.Explode

'

'

'

DimIAsInteger

ForI=0ToUBound(explodedObjects)

explodedObjects(I).Update

MsgBox"ExplodedObject"&I&":"&_

explodedObjects(I).ObjectName

explodedObjects(I).Update

Next

EndSub

ActiveX/VBA>AutoCAD >>

AutoCADBSPLINETYPE

LightweightPolylinePolyline

Closed

Coordinates

AddVertex

SetBulge

SetWidth

“”

SubCh4_EditPolyline()

DimplineObjAsAcadLWPolyline

Dimpoints(0To9)AsDouble

'

points(0)=1:points(1)=1

points(2)=1:points(3)=2

points(4)=2:points(5)=2

points(6)=3:points(7)=2

points(8)=4:points(9)=4

'

SetplineObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

'3

plineObj.SetBulge3,-0.5

'

DimnewVertex(0To1)AsDouble

newVertex(0)=4:newVertex(1)=1

'

plineObj.AddVertex5,newVertex

'

plineObj.SetWidth4,0.1,0.5

'

plineObj.Closed=True

plineObj.Update

EndSub

ActiveX/VBA>AutoCAD >>

ControlPoints

EndTangent

FitPoints

FitTolerance

Knots

StartTangent

AddFitPoint

DeleteFitPoint

ElevateOrder

GetFitPoint

FitPoints

Reverse

SetControlPoint

SetFitPoint

FitPoints

SetWeight

Area

Closed

IsPeriodic

IsPlanar

IsRational

NumberOfControlPoints

NumberOfFitPoints

“”

SubCh4_ChangeSplineControlPoint()

'

DimsplineObjAsAcadSpline

DimstartTan(0To2)AsDouble

DimendTan(0To2)AsDouble

DimfitPoints(0To8)AsDouble

startTan(0)=0.5:startTan(1)=0.5:startTan(2)=0

endTan(0)=0.5:endTan(1)=0.5:endTan(2)=0

fitPoints(0)=1:fitPoints(1)=1:fitPoints(2)=0

fitPoints(3)=5:fitPoints(4)=5:fitPoints(5)=0

fitPoints(6)=10:fitPoints(7)=0:fitPoints(8)=0

SetsplineObj=ThisDrawing.ModelSpace._

AddSpline(fitPoints,startTan,endTan)

splineObj.Update

'

DimcontrolPoint(0To2)AsDouble

controlPoint(0)=0

controlPoint(1)=3

controlPoint(2)=0

splineObj.SetControlPoint0,controlPoint

splineObj.Update

EndSub

ActiveX/VBA>AutoCAD >>

AssociativeHatchHatchAddHatch

Evaluate

“”

ActiveX/VBA>AutoCAD >>>

AppendInnerLoop

AppendOuterLoop

InsertLoopAt

SubCh4_AppendInnerLoopToHatch()

DimhatchObjAsAcadHatch

DimpatternNameAsString

DimPatternTypeAsLong

DimbAssociativityAsBoolean

'

patternName="ANSI31"

PatternType=0

bAssociativity=True

SethatchObj=ThisDrawing.ModelSpace._

AddHatch(PatternType,patternName,bAssociativity)

'

DimouterLoop(0To1)AsAcadEntity

Dimcenter(0To2)AsDouble

DimradiusAsDouble

DimstartAngleAsDouble

DimendAngleAsDouble

center(0)=5:center(1)=3:center(2)=0

radius=3

startAngle=0

endAngle=3.141592

SetouterLoop(0)=ThisDrawing.ModelSpace._

AddArc(center,radius,startAngle,endAngle)

SetouterLoop(1)=ThisDrawing.ModelSpace._

AddLine(outerLoop(0).startPoint,outerLoop(0).endPoint)

'Hatch

hatchObj.AppendOuterLoop(outerLoop)

'

DiminnerLoop(0)AsAcadEntity

center(0)=5:center(1)=4.5:center(2)=0

radius=1

SetinnerLoop(0)=ThisDrawing.ModelSpace._

AddCircle(center,radius)

'

hatchObj.AppendInnerLoop(innerLoop)

'

hatchObj.Evaluate

ThisDrawing.RegenTrue

EndSub

ActiveX/VBA>AutoCAD >>>

AutoCAD“”“”

PatternAngle

PatternDouble

PatternName

PatternScale

PatternSpace

SetPattern

2

SubCh4_ChangeHatchPatternSpace()

DimhatchObjAsAcadHatch

DimpatternNameAsString

DimPatternTypeAsLong

DimbAssociativityAsBoolean

'

patternName="ANSI31"

PatternType=0

bAssociativity=True

'Hatch

SethatchObj=ThisDrawing.ModelSpace._

AddHatch(PatternType,patternName,bAssociativity)

'

DimouterLoop(0To0)AsAcadEntity

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=5

center(1)=3

center(2)=0

radius=3

SetouterLoop(0)=ThisDrawing.ModelSpace._

AddCircle(center,radius)

hatchObj.AppendOuterLoop(outerLoop)

hatchObj.Evaluate

'2

'

hatchObj.patternSpace=hatchObj.patternSpace+2

hatchObj.Evaluate

ThisDrawing.RegenTrue

EndSub

ActiveX/VBA>AutoCAD >

“”

ActiveX/VBA>AutoCAD > >

CENTER

LayersLinetypes

“”

ActiveX/VBA>AutoCAD > >>

LayersLinetypes

Layers

Layers

SubCh4_IteratingLayers()

DimlayerNamesAsString

DimentryAsAcadLayer

layerNames=""

ForEachentryInThisDrawing.Layers

layerNames=layerNames+entry.Name+vbCrLf

Next

MsgBox"Thelayersinthisdrawingare:"+_

vbCrLf+layerNames

EndSub

ActiveX/VBA>AutoCAD > >>

LayersAddLayers

Name($)(-)(_)

“”

SubCh4_NewLayer()

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2:center(1)=2:center(2)=0

radius=1

SetcircleObj=ThisDrawing.ModelSpace._

AddCircle(center,radius)

'

DimcolAsNewAcadAcCmColor

col.ColorMethod=AutoCAD.acColorMethodForeground

'

DimlayColorAsAcadAcCmColor

SetlayColor=

AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")

CalllayColor.SetRGB(122,199,25)

ThisDrawing.ActiveLayer.TrueColor=layColor

col.ColorMethod=AutoCAD.acColorMethodByLayer

'“”

'

'

circleObj.Color=acByLayer

circleObj.Update

EndSub

ActiveX/VBA>AutoCAD > >>

ActiveLayer

DimnewlayerAsAcadLayer

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

ThisDrawing.ActiveLayer=newlayer

ActiveX/VBA>AutoCAD > >>

AutoCAD

LayerOn TRUE FALSE

SubCh4_LayerInvisible()

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2:center(1)=2:center(2)=0

radius=1

SetcircleObj=ThisDrawing.ModelSpace._

AddCircle(center,radius)

'“ABC”

DimlayerObjAsAcadLayer

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

'“ABC”

circleObj.Layer="ABC"

circleObj.Update

'“ABC”

layerObj.LayerOn=False

ThisDrawing.RegenacActiveViewport

EndSub

ActiveX/VBA>AutoCAD > >>

AutoCAD“”AutoCAD

Freeze TRUE FALSE

“ABC”

SubCh4_LayerFreeze()

'“ABC”

DimlayerObjAsAcadLayer

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

'“ABC”

layerObj.Freeze=True

EndSub

ActiveX/VBA>AutoCAD > >>

Lock TRUE FALSE

“ABC”

SubCh4_LayerLock()

'“ABC”

DimlayerObjAsAcadLayer

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

'“ABC”

layerObj.Lock=True

EndSub

ActiveX/VBA>AutoCAD > >>

AcCmColorRGBACI1255

TrueColor

BYBLOCKBYLAYER

acByBlockAutoCAD

acByLayer

ActiveX/VBA>AutoCAD > >>

Linetype

ActiveX/VBA>AutoCAD > >>

Delete

0

DEFPOINTS

ActiveX/VBA>AutoCAD > >

AcCmColorAcCmColorRGBAcCmColor

AutoCAD(ACI)1255

ACIACI25517

17

1

2

3

4

5

6

7 /

8255(7)

“”

ActiveX/VBA>AutoCAD > >

LINLoad

“”

AutoCAD

AutoCAD

acad.lin“CENTER”

SubCh4_LoadLinetype()

OnErrorGoToERRORHANDLER

DimlinetypeNameAsString

linetypeName="CENTER"

'acad.lin“CENTER”

ThisDrawing.Linetypes.LoadlinetypeName,"acad.lin"

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

ActiveX/VBA>AutoCAD > >>

ActiveLinetype

ThisDrawing.ActiveLinetype=ThisDrawing._

Linetypes.Item("CONTINUOUS")

“”

ActiveX/VBA>AutoCAD > >>

NameLIN

ActiveX/VBA>AutoCAD > >>

DeleteCONTINUOUS

“”

ActiveX/VBA>AutoCAD > >>

ASCIIDescription

47

ThisDrawing.ActiveLinetype.Description="ExteriorWall"

ActiveX/VBA>AutoCAD > >>

AutoCAD1.0

LinetypeScale

CELTSCALELTSCALEAutoCADActiveXAutomationSetVariable

“”

SubCh4_ChangeLinetypeScale()

'

SetcurrLineType=ThisDrawing.ActiveLinetype

'Border

'

'Border

OnErrorResumeNext'

ThisDrawing.ActiveLinetype=ThisDrawing.Linetypes.Item("BORDER")

IfErr.Number=-2145386476Then

'

ThisDrawing.Linetypes.Load"BORDER","acad.lin"

ThisDrawing.ActiveLinetype=_

ThisDrawing.Linetypes.Item("BORDER")

EndIf

OnErrorGoTo0'

'Circle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

DimcircleObjAsAcadCircle

center(0)=2

center(1)=2

center(2)=0

radius=4

SetcircleObj=ThisDrawing.ModelSpace.AddCircle(center,radius)

circleObj.Update

MsgBox("Hereisthecirclewiththeoriginallinetype")

'3

circleObj.LinetypeScale=3#

circleObj.Update

MsgBox("Hereisthecirclewiththenewlinetype")

'

ThisDrawing.ActiveLinetype=currLineType

EndSub

ActiveX/VBA>AutoCAD > >

ActiveX/VBA>AutoCAD > > >

LayerLayer

“ABC”

SubCh4_MoveObjectNewLayer()

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2:center(1)=2:center(2)=0

radius=1

SetcircleObj=ThisDrawing.ModelSpace._

AddCircle(center,radius)

'“ABC”

DimlayerObjAsAcadLayer

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

'“ABC”

circleObj.Layer="ABC"

circleObj.Update

EndSub

ActiveX/VBA>AutoCAD > > >

TrueColorAcCmColorRGBACI1255RGB

SubCh4_ColorCircle()

DimcolorAsAcadAcCmColor

Setcolor=_

AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")

Callcolor.SetRGB(80,100,244)

DimcircleObjAsAcadCircle

DimcenterPoint(0To2)AsDouble

DimradiusAsDouble

centerPoint(0)=0#:centerPoint(1)=0#:centerPoint(2)=0#

radius=5#

SetcircleObj=_

ThisDrawing.ModelSpace.AddCircle(centerPoint,radius)

circleObj.TrueColor=color

ZoomAll

EndSub

ActiveX/VBA>AutoCAD > > >

LinetypeLinetype

Load

“”

acad.lin“CENTER”“CENTER”

SubCh4_ChangeCircleLinetype()

OnErrorResumeNext

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2:center(1)=2:center(2)=0

radius=1

SetcircleObj=ThisDrawing.ModelSpace._

AddCircle(center,radius)

DimlinetypeNameAsString

linetypeName="CENTER"

'acad.lin“CENTER”

ThisDrawing.Linetypes.LoadlinetypeName,"acad.lin"

IfErr.Description<>""ThenMsgBoxErr.Description

'“CENTER”

circleObj.Linetype="CENTER"

circleObj.Update

EndSub

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

ActiveX/VBA>AutoCAD >

LayerStateManagerActiveX

“”AutoCADLayerStateManager

ActiveX/VBA>AutoCAD >>

AutoCAD

AutoCADLayersAutoCAD

Layers

ACAD_LAYERSTATEDictionary

ACAD_LAYERSTATEXRecordAutoCADXRecordAutoCAD

AutoCADXRecordXRecordACAD_LAYERSTATE

ActiveXXRecordLayerStateManager

SubCh4_ListStates()

OnErrorResumeNext

DimoLSMDictAsAcadDictionary

DimXRecAsObject

DimlayerstateNamesAsString

layerstateNames=""

'ACAD_LAYERSTATES

'Layers

SetoLSMDict=ThisDrawing.Layers._

GetExtensionDictionary.Item("ACAD_LAYERSTATES")

'

'XRecord

ForEachXRecInoLSMDict

layerstateNames=layerstateNames+XRec.Name+vbCrLf

NextXRec

MsgBox"Thesavedlayersettingsinthisdrawingare:"+_

vbCrLf+layerstateNames

EndSub

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

ActiveX/VBA>AutoCAD >>

LayerStateManager

LayerStateManagerAutoCADUtilityLayerStateManager

Delete

Export

Import

Rename

Restore

Save

SetDataBase

AutoCADLayerStateManager

LayerStateManagerGetInterfaceObject

DimoLSMAsAcadLayerStateManager

SetoLSM=ThisDrawing.Application._

GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

LayerStateManagerSetDatabaseLayerStateManager

oLSM.SetDatabaseThisDrawing.Database

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

ActiveX/VBA>AutoCAD >>LayerStateManager >

SaveSave

Layer

acLsAll

acLsColor Color

acLsFrozen

acLsLineType Linetype

acLsLineWeight

acLsLocked

acLsNewViewport

acLsNone

acLsOn

acLsPlot

acLsPlotStyle

ColorLinetype

SubCh4_SaveLayerColorAndLinetype()

DimoLSMAsAcadLayerStateManager

'LayerStateManager

SetoLSM=ThisDrawing.Application._

GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

'LayerStateManager

oLSM.SetDatabaseThisDrawing.Database

oLSM.Save"ColorLinetype",acLsColor+acLsLineType

EndSub

ColorLinetype OldColorLinetype

SubCh4_RenameLayerSettings()

DimoLSMAsAcadLayerStateManager

SetoLSM=ThisDrawing.Application._

GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

oLSM.SetDatabaseThisDrawing.Database

oLSM.Rename"ColorLinetype","OldColorLinetype"

EndSub

ColorLinetype.

SubCh4_DeleteColorAndLinetype()

DimoLSMAsAcadLayerStateManager

SetoLSM=ThisDrawing.Application._

GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

oLSM.SetDatabaseThisDrawing.Database

oLSM.Delete"ColorLinetype"

EndSub

ActiveX/VBA>AutoCAD >>LayerStateManager >

Restore“ColorLinetype”“ColorLinetype”“ColorLinetype”“ColorLinetype”“ColorLinetype””

“ColorLinetype”“ColorLinetype”

SubCh4_RestoreLayerSettings()

DimoLSMAsAcadLayerStateManager

SetoLSM=ThisDrawing.Application._

GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

oLSM.SetDatabaseThisDrawing.Database

oLSM.Restore"ColorLinetype"

EndSub

ActiveX/VBA>AutoCAD >>LayerStateManager >

LayerStateManagerExportImport

Restore

ExportAutoCAD. .lasAutoCAD

Import

Restore

Colortype.las

SubCh4_ExportLayerSettings()

DimoLSMAsAcadLayerStateManager

SetoLSM=ThisDrawing.Application._

GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

oLSM.SetDatabaseThisDrawing.Database

oLSM.Export"ColorLinetype","c:\mydocuments\ColorLType.las"

EndSub

Colortype.las

SubCh4_ImportLayerSettings()

DimoLSMAsAcadLayerStateManager

SetoLSM=ThisDrawing.Application._

GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

oLSM.SetDatabaseThisDrawing.Database

'

'

'

'

OnErrorResumeNext

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

IfErr.Number=-2145386359Then

'

MsgBox("Oneormorelinetypesspecifiedintheimported"+_

"settingsisnotdefinedinyourdrawing")

EndIf

OnErrorGoTo0

EndSub

<$nopage>

ActiveX/VBA>AutoCAD >

AutoCAD

“”

Unicode

ActiveX/VBA>AutoCAD >>

AutoCADAutoCAD

TrueTypeUnicode

ActiveX/VBA>AutoCAD >>>

AddTextStyleTextStylesAddTextStyleAutoCADActiveXAutomation

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

TextStyleTextStyle

FontFile

BigFontFile

ASCII

Height

Width

ObliqueAngle

TextGenerationFlag

RegenUpdate

ActiveX/VBA>AutoCAD >>>

TextStyleFontFileAutoCADSHX

“PlayBill”SetFontPlayBill

SubCh4_UpdateTextFont()

MsgBox("Lookatthetextnow...")

DimtypeFaceAsString

DimSavetypeFaceAsString

DimBoldAsBoolean

DimItalicAsBoolean

DimcharSetAsLong

DimPitchandFamilyAsLong

'

'SetFont

ThisDrawing.ActiveTextStyle.GetFonttypeFace,_

Bold,Italic,charSet,PitchandFamily

'

SavetypeFace=typeFace

typeFace="PlayBill"

ThisDrawing.ActiveTextStyle.SetFonttypeFace,_

Bold,Italic,charSet,PitchandFamily

ThisDrawing.RegenacActiveViewport

MsgBox("Nowseehowitlooksafterchangingthefont...")

'

ThisDrawing.ActiveTextStyle.SetFontSavetypeFace,_

Bold,Italic,charSet,PitchandFamily

ThisDrawing.RegenacActiveViewport

EndSub

ActiveX/VBA>AutoCAD >>>

TrueType

TrueTypeTEXTFILLTEXTFILL1ExportPostScript®PostScript

ActiveX/VBA>AutoCAD >>>

Unicode

AutoCADUnicodeUnicode65,535AutoCADSHXUnicode

ASCIIAutoCADFontFileBigFontFile

AutoCAD

FontFileBigFontFile

SubCh4_ChangeFontFiles()

ThisDrawing.ActiveTextStyle.BigFontFile=_

"C:/AutoCAD/Fonts/bigfont.shx"

ThisDrawing.ActiveTextStyle.fontFile=_

"C:/AutoCAD/Fonts/italic.shx"

EndSub

ActiveX/VBA>AutoCAD >>>

TrueType

TrueType

TrueTypeyjpgq

Height

Text

SubCh4_ChangeTextHeight()

DimtextObjAsAcadText

DimtextStringAsString

DiminsertionPoint(0To2)AsDouble

DimheightAsDouble

'Text

textString="Hello,World."

insertionPoint(0)=3

insertionPoint(1)=3

insertionPoint(2)=0

height=0.5

'Text

SettextObj=ThisDrawing.ModelSpace._

AddText(textString,insertionPoint,height)

'Height1

textObj.height=1

textObj.Update

EndSub

ActiveX/VBA>AutoCAD >>>

90ObliqueAngle

Text45

SubCh4_ObliqueText()

DimtextObjAsAcadText

DimtextStringAsString

DiminsertionPoint(0To2)AsDouble

DimheightAsDouble

'Text

textString="Hello,World."

insertionPoint(0)=3

insertionPoint(1)=3

insertionPoint(2)=0

height=0.5

'Text

SettextObj=ThisDrawing.ModelSpace._

AddText(textString,insertionPoint,height)

'ObliqueAngle

'45.707

textObj.ObliqueAngle=0.707

textObj.Update

EndSub

ActiveX/VBA>AutoCAD >>>

TextGenerationFlagacTextFlagUpsideDown

acTextFlagBackward+acTextFlagUpsidedown

TextGenerationFlag

SubCh4_ChangingTextGenerationFlag()

DimtextObjAsAcadText

DimtextStringAsString

DiminsertionPoint(0To2)AsDouble

DimheightAsDouble

'Text

textString="Hello,World."

insertionPoint(0)=3

insertionPoint(1)=3

insertionPoint(2)=0

height=0.5

SettextObj=ThisDrawing.ModelSpace._

AddText(textString,insertionPoint,height)

'TextGenerationFlag

textObj.TextGenerationFlag=acTextFlagBackward

textObj.Update

EndSub

ActiveX/VBA>AutoCAD >>

Text

ActiveX/VBA>AutoCAD >>>

AddText

UnicodeWCS

(2,2,0)

SubCh4_CreateText()

DimtextObjAsAcadText

DimtextStringAsString

DiminsertionPoint(0To2)AsDouble

DimheightAsDouble

'Text

textString="Hello,World."

insertionPoint(0)=2

insertionPoint(1)=2

insertionPoint(2)=0

height=0.5

SettextObj=ThisDrawing.ModelSpace._

AddText(textString,insertionPoint,height)

textObj.Update

EndSub

ActiveX/VBA>AutoCAD >>>

TextTextText

TextStyleNameTextUpdate

Text

Alignment

InsertionPoint

ObliqueAngle

Rotation

ScaleFactor

TextAlignmentPoint

TextGenerationFlag

TextString

Update

AutoCAD ActiveXandVBAReference“Textobject”

ActiveX/VBA>AutoCAD >>>

Alignment

TextPointPoint

SubCh4_TextAlignment()

DimtextObjAsAcadText

DimtextStringAsString

DiminsertionPoint(0To2)AsDouble

DimheightAsDouble

'Text

textString="Hello,World."

insertionPoint(0)=3

insertionPoint(1)=3

insertionPoint(2)=0

height=0.5

'Text

SettextObj=ThisDrawing.ModelSpace._

AddText(textString,insertionPoint,height)

'

'

DimpointObjAsAcadPoint

DimalignmentPoint(0To2)AsDouble

alignmentPoint(0)=3

alignmentPoint(1)=3

alignmentPoint(2)=0

SetpointObj=ThisDrawing.ModelSpace._

AddPoint(alignmentPoint)

pointObj.Color=acRed

'

ThisDrawing.SetVariable"PDMODE",2

'

textObj.Alignment=acAlignmentLeft

ThisDrawing.RegenacActiveViewport

MsgBox"TheTextobjectisnowalignedleft"

'

textObj.Alignment=acAlignmentCenter

'

'

textObj.TextAlignmentPoint=alignmentPoint

ThisDrawing.RegenacActiveViewport

MsgBox"TheTextobjectisnowcentered"

'

textObj.Alignment=acAlignmentRight

ThisDrawing.RegenacActiveViewport

MsgBox"TheTextobjectisnowalignedright"

EndSub

ActiveX/VBA>AutoCAD >>>

TextMIRRTEXT0

TextAutoCAD ActiveXandVBAReferenceText

ArrayPolar

ArrayRectangular

Copy

Text

Erase

Text

Mirror

Text

Move

Text

Rotate

Text

<$nopage>

ActiveX/VBA>AutoCAD >>

ActiveX/VBA>AutoCAD >>>

AddMTextMText

UnicodeWCS

MTextMText

MText ActiveXandVBAReferenceMText

(2,2,0)MText

SubCh4_CreateMText()

DimmtextObjAsAcadMText

DiminsertPoint(0To2)AsDouble

DimwidthAsDouble

DimtextStringAsString

insertPoint(0)=2

insertPoint(1)=2

insertPoint(2)=0

width=4

textString="Thisisatextstringforthemtextobject."

'

SetmtextObj=ThisDrawing.ModelSpace._

AddMText(insertPoint,width,textString)

ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>>

STANDARDText

AttachmentPointRotation

StyleNameMTextTrueTypeSHXTrueType

({})

ASCII

ASCII

{{\H1.5x;Bigtext}\A2;overtext\A1;/\A0;undertext}

“”

MText

SubCh4_FormatMText()

DimmtextObjAsAcadMText

DiminsertPoint(0To2)AsDouble

DimwidthAsDouble

DimtextStringAsString

insertPoint(0)=2

insertPoint(1)=2

insertPoint(2)=0

width=4

'ASCII

DimOBAsLong'OpenBracket{

DimCBAsLong'CloseBracket}

DimBSAsLong'\

DimFSAsLong'/

DimSCAsLong';

OB=Asc("{")

CB=Asc("}")

BS=Asc("\")

FS=Asc("/")

SC=Asc(";")

'

'

'{{\H1.5x;Bigtext}\A2;overtext\A1;/\A0;undertext}

textString=Chr(OB)+Chr(OB)+Chr(BS)+"H1.5x"_

+Chr(SC)+"Bigtext"+Chr(CB)+Chr(BS)+"A2"_

+Chr(SC)+"overtext"+Chr(BS)+"A1"+Chr(SC)_

+Chr(FS)+Chr(BS)+"A0"+Chr(SC)+"undertext"_

+Chr(CB)

'

SetmtextObj=ThisDrawing.ModelSpace._

AddMText(insertPoint,width,textString)

ZoomAll

EndSub

ActiveX/VBA>AutoCAD >>

Unicode

UnicodeASCII

Unicode

Unicode

Unicode

\U+00B0

\U+00B1 /

\U+2205

Unicode(%%)AutoCADPostScript nnn

%%nnn

VBVBA

DimpercentasLong

percent=ASC("%")

TextString=chr(percent)+chr(percent)+"nnn"

AutoCAD

%%o

%%u

%%d

%%p /

%%c

%%%

ActiveX/VBA>AutoCAD >>

AutoCAD

AutoCADASCIIPreferencesFontFileMap

“”

ActiveX/VBA>AutoCAD >>>

AutoCADAutoCAD simplex.shxPreferencesAltFontFile

AltFontFile txt.shxbigfont.shx

AutoCAD

ActiveX/VBA>AutoCAD >>

AutoCADAutoCAD

AutoCADActiveXAutomationPreferencesMainDictionaryCustomDictionary

“”

ActiveX/VBA>

ActiveXAutomation

ActiveX/VBA>>

X YAutoCAD ®

AutoCAD

“”

ActiveX/VBA>>>

““

ActiveX/VBA>>>

DIMAUNITDIMUPTDIMTOFLDIMFITDIMTIHDIMTOHDIMJUSTDIMTADSetVariableDIMAUNIT(3)

ThisDrawing.SetVariable"DIMAUNIT",3

“”

ActiveX/VBA>>>

AutoCAD

ActiveTextStyle

“”

ActiveX/VBA>>>

AutoCAD

“”

ActiveX/VBA>>>

DIMASSOCDIMASSOC2

“”

ActiveX/VBA>>

“”

ActiveX/VBA>>>

AddDimAlignedAddDimRotated

AddDimAligned

AddDimRotated

“”

ActiveX/VBA>>>

AddDimRadial

TextPositionDIMUPTDIMTOFLDIMFITDIMTIHDIMTOHDIMJUSTDIMTADGetVariableSetVariable

15AutoCAD

AddDimRadialAddDimDiametric

LeaderLengthChordPoint

“”

SubCh5_CreateRadialDimension()

DimdimObjAsAcadDimRadial

Dimcenter(0To2)AsDouble

DimchordPoint(0To2)AsDouble

DimleaderLenAsInteger

'

center(0)=0

center(1)=0

center(2)=0

chordPoint(0)=5

chordPoint(1)=5

chordPoint(2)=0

leaderLen=5

'

SetdimObj=ThisDrawing.ModelSpace._

AddDimRadial(center,chordPoint,leaderLen)

ZoomAll

EndSub

LeaderLengthLeaderLengthDXFLISPADSRX

ActiveX/VBA>>>

AddDimAngularAngleVertex

AngleVertex

“”

SubCh5_CreateAngularDimension()

DimdimObjAsAcadDimAngular

DimangVert(0To2)AsDouble

DimFirstPoint(0To2)AsDouble

DimSecondPoint(0To2)AsDouble

DimTextPoint(0To2)AsDouble

'

angVert(0)=0

angVert(1)=5

angVert(2)=0

FirstPoint(0)=1

FirstPoint(1)=7

FirstPoint(2)=0

SecondPoint(0)=1

SecondPoint(1)=3

SecondPoint(2)=0

TextPoint(0)=3

TextPoint(1)=5

TextPoint(2)=0

'

SetdimObj=ThisDrawing.ModelSpace._

AddDimAngular(angVert,FirstPoint,SecondPoint,TextPoint)

ZoomAll

EndSub

ActiveX/VBA>>>

X Y X X Y YAutoCAD(UCS)

AddDimOrdinate(A)(B) X Y TRUE X FALSE Y

“”

SubCh5_CreatingOrdinateDimension()

DimdimObjAsAcadDimOrdinate

DimdefiningPoint(0To2)AsDouble

DimleaderEndPoint(0To2)AsDouble

DimuseXAxisAsLong

'

definingPoint(0)=5

definingPoint(1)=5

definingPoint(2)=0

leaderEndPoint(0)=10

leaderEndPoint(1)=5

leaderEndPoint(2)=0

useXAxis=5

'

SetdimObj=ThisDrawing.ModelSpace._

AddDimOrdinate(definingPoint,_

leaderEndPoint,useXAxis)

ZoomAll

EndSub

ActiveX/VBA>>

AutoCAD

Rotation

StyleName

TextOverride

TextPosition

TextRotation

Measurement

ArrayPolar

ArrayRectangular

Copy

Erase

Mirror

Move

Rotate

ScaleEntity

“”

ActiveX/VBA>>>

TextOverride

SubCh5_OverrideDimensionText()

DimdimObjAsAcadDimAligned

Dimpoint1(0To2)AsDouble

Dimpoint2(0To2)AsDouble

Dimlocation(0To2)AsDouble

'

point1(0)=5#:point1(1)=3#:point1(2)=0#

point2(0)=10#:point2(1)=3#:point2(2)=0#

location(0)=7.5:location(1)=5#:location(2)=0#

'

SetdimObj=ThisDrawing.ModelSpace._

AddDimAligned(point1,point2,location)

'

dimObj.TextOverride="Thevalueis<>"

dimObj.Update

EndSub

ActiveX/VBA>>

AutoCADSTANDARDActiveDimStyle

“”

ActiveX/VBA>>>

Add

AutoCADActiveXAutomationStyleName

CopyFromDimStyleToleranceLeaderDocumentToleranceLeaderDocument

1.

2.

3.

4. DIMCLRD5

5.

SubCh5_CopyDimStyles()

DimnewStyle1AsAcadDimStyle

DimnewStyle2AsAcadDimStyle

DimnewStyle3AsAcadDimStyle

SetnewStyle1=ThisDrawing.DimStyles.Add_

("Style1copiedfromadim")

CallnewStyle1.CopyFrom(ThisDrawing.ModelSpace(0))

SetnewStyle2=ThisDrawing.DimStyles.Add_

("Style2copiedfromStyle1")

CallnewStyle2.CopyFrom(ThisDrawing.DimStyles.Item_

("Style1copiedfromadim"))

SetnewStyle2=ThisDrawing.DimStyles.Add_

("Style3copiedfromtherunningdrawingvalues")

CallnewStyle2.CopyFrom(ThisDrawing)

EndSub

DIMSTYLE1213

ActiveX/VBA>>>

AltRoundDistance

AngleFormat

Arrowhead1BlockArrowhead2Block

Arrowhead1TypeArrowhead2Type

ArrowheadSize

CenterMarkSize

CenterType

DecimalSeparator

DimensionLineColor

DimensionLineWeight

DimLine1SuppressDimLine2Suppress

DimLineInside

ExtensionLineColor

ExtensionLineExtend

ExtensionLineOffset

ExtensionLineWeight

ExtLine1EndPointExtLine2EndPoint

ExtLine1StartPointExtLine2StartPoint

ExtLine1SuppressExtLine2Suppress

ForceLineInside

FractionFormat

HorizontalTextPosition

LinearScaleFactor

PrimaryUnitsPrecision

SuppressLeadingZerosSuppressTrailingZeros

SuppressZeroFeetSuppressZeroInches

TextColor

TextGap

TextHeight

TextInside

TextInsideAlign

TextMovement

TextOutsideAlign

TextPosition

TextPrecision

TextPrefix

TextRotation

TextSuffix

ToleranceDisplay

ToleranceHeightScale

ToleranceJustification

ToleranceLowerLimit

TolerancePrecision

ToleranceSuppressLeadingZeros

ToleranceSuppressTrailingZeros

ToleranceUpperLimit

UnitsFormat

VerticalTextPosition

TextSuffix

SubCh5_AddTextSuffix()

DimdimObjAsAcadDimAligned

Dimpoint1(0To2)AsDouble

Dimpoint2(0To2)AsDouble

Dimlocation(0To2)AsDouble

DimsuffixAsString

'

point1(0)=0:point1(1)=5:point1(2)=0

point2(0)=5:point2(1)=5:point2(2)=0

location(0)=5:location(1)=7:location(2)=0

'

SetdimObj=ThisDrawing.ModelSpace._

AddDimAligned(point1,point2,location)

ThisDrawing.Application.ZoomAll

'

suffix=InputBox("Enteranewtextsuffixforthedimension"_

,"SetDimensionSuffix",":SUFFIX")

'

dimObj.TextSuffix=suffix

ThisDrawing.RegenacAllViewports

EndSub

ActiveX/VBA>>

AutoCAD

DIMLFAC0DIMLFACDIMLFAC01.0“”“”AutoCADDIMLFACAutoCADDIMLFAC

ActiveX/VBA>>

LeaderAutoCAD

“”

ActiveX/VBA>>>

15

AddLeader NULL

acLineNoArrowacLineWithArrowacSplineNoArrowacSplineWithArrow

SubCh5_CreateLeader()

DimleaderObjAsAcadLeader

Dimpoints(0To8)AsDouble

DimleaderTypeAsInteger

DimannotationObjectAsAcadObject

points(0)=0:points(1)=0:points(2)=0

points(3)=4:points(4)=4:points(5)=0

points(6)=4:points(7)=5:points(8)=0

leaderType=acLineWithArrow

SetannotationObject=Nothing

'

SetleaderObj=ThisDrawing.ModelSpace._

AddLeader(points,annotationObject,leaderType)

ZoomAll

EndSub

ActiveX/VBA>>>

ToleranceMTextBlockRef

AddLeader

ActiveX/VBA>>>

EraseAddWBlockLeader

MTextMText

SubCh5_AddAnnotation()

DimleaderObjAsAcadLeader

DimmtextObjAsAcadMText

Dimpoints(0To8)AsDouble

DiminsertionPoint(0To2)AsDouble

DimwidthAsDouble

DimleaderTypeAsInteger

DimannotationObjectAsObject

DimtextStringAsString,msgAsString

'MText

textString="Hello,World."

insertionPoint(0)=5

insertionPoint(1)=5

insertionPoint(2)=0

width=2

SetmtextObj=ThisDrawing.ModelSpace._

AddMText(insertionPoint,width,textString)

'

points(0)=0:points(1)=0:points(2)=0

points(3)=4:points(4)=4:points(5)=0

points(6)=4:points(7)=5:points(8)=0

leaderType=acLineWithArrow

'

'MText

SetannotationObject=mtextObj

SetleaderObj=ThisDrawing.ModelSpace._

AddLeader(points,annotationObject,leaderType)

ZoomAll

EndSub

ActiveX/VBA>>>

DIMCLRTDIMTXTDIMTXSTYMText

Evaluate

ActiveX/VBA>>>

ScaleEntityMoveMirrorRotateStyleName

ActiveX/VBA>>

“”

ActiveX/VBA>>>

AddTolerance

SubCh5_CreateTolerance()

DimtoleranceObjAsAcadTolerance

DimtextStringAsString

DiminsertionPoint(0To2)AsDouble

Dimdirection(0To2)AsDouble

'

textString="HereistheFeatureControlFrame"

insertionPoint(0)=5

insertionPoint(1)=5

insertionPoint(2)=0

direction(0)=1

direction(1)=1

direction(2)=0

'

SettoleranceObj=ThisDrawing.ModelSpace._

AddTolerance(textString,insertionPoint,direction)

ZoomAll

EndSub

ActiveX/VBA>>>

DIMCLRDDIMCLRTDIMGAPDIMTXTDIMTXTSTYSetVariable

<$nopage>MenuGroups: <$nopage>: <$startrange>InsertInMenuBar:,:,PopupMenuItem:AddSeparator,AddSeparator,Type,Label:,PopupMenuItem:,,:,:,PopupMenu:,:,<$nopage>, <$endrange>InsertInMenuBar:,:,PopupMenu:,PopupMenuItem:,Delete:,PopupMenuItem:Tag,PopupMenuItem:Label,PopupMenuItem:Caption,PopupMenuItem:Macro,PopupMenuItem:HelpString,PopupMenuItem:Enable,PopupMenuItem:Check,:,:,:,:,PopupMenuItem:Index,PopupMenuItem:Type,PopupMenuItem:Submenu,PopupMenuItem:Parent,PopupMenuItem:Parent,:,:,:,:,,InsertInMenuBar:,Toolbars:Add,Toolbars:Name,Name:,Toolbar:,Add:,,Toolbar:,AddToolbarButton,Toolbar:AddToolbarButton,ToolbarItem,ToolbarItem:,ToolbarItem:Name,Name:ToolbarItem,ToolbarItem:HelpString,HelpString:ToolbarItem,ToolbarItem:Macro,Macro:ToolbarItem,ToolbarItem:,,Toolbar:,AddToolbarButton:,ToolbarItem:,Toolbar:AddSeparator,Toolbar:Type,:,SetBitmaps,ToolbarItem:SetBitmaps,GetBitmaps,ToolbarItem:GetBitmaps,SetBitmaps:SmallIconName,SetBitmaps:LargeIconName,Type:,GetBitmaps:,ToolbarItem:,:AddToolbarButton,AddToolbarButton:,Toolbar:,,AddToolbarButton:,Toolbar:,ToolbarItem:,:,AttachToolbarToFlyout,,Visible:,Toolbar:Float,Float:,Toolbar:Dock,Dock:,Toolbar:Docked,Dock:,Toolbar:,ToolbarItem:,ToolbarItem:Tag,Tag:ToolbarItem,ToolbarItem:Name,Name:ToolbarItem,ToolbarItem:Macro,Macro:ToolbarItem,ToolbarItem:HelpString,HelpString:ToolbarItem,ToolbarItem:Index,Index:ToolbarItem,ToolbarItem:Type,Type:ToolbarItem,ToolbarItem:Flyout,Flyout:ToolbarItem,ToolbarItem:Parent,Parent:ToolbarItem,PopupMenuItem:,ToolbarItem:,:,:,:,PICKAUTO,PICKADD,:,:,:,:,:,:,,LAYER:,:LAYER,SELECT:,:SELECT,(\\):,:,:,:,:,:,:,:,,,ERASE:,:ERASE,ToolbarItem:,PopupMenuItem:,,,,:,

InsertInMenuBar:,:,:,<$nopage>

ActiveX/VBA>

AutoCADActiveXAutomationAutoCAD

AutoCADActiveX/VBA

MenuBarMenuGroups

ActiveX/VBA>>

MenuBarMenuGroups

AutoCAD®ActiveX®MenuBarMenuGroupsMenuBarAutoCAD

MenuGroupsAutoCADAutoCADAutoCADAutoCAD

PopupMenusToolbarsPopupMenusToolbars

PopupMenuToolbar

<$nopage>MenuGroups:

ActiveX/VBA>>

LoadAutoCAD acad.cui

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

Load BaseMenu TRUEAutoCADMENU

BaseMenuAutoCADMENULOADMenuGroupsInsertMenuInMenuBarInsertInMenuBar

ActiveXAutomationActiveXAutomation

ActiveX/VBA>>

ActiveX/VBA>>>

InsertMenuInMenuBarInsertInMenuBar—

InsertMenuInMenuBarPopupMenus

InsertInMenuBarPopupMenu

TestMenuOPEN

SubCh6_InsertMenu()

'

DimcurrMenuGroupAsAcadMenuGroup

SetcurrMenuGroup=ThisDrawing.Application._

MenuGroups.Item(0)

'

DimnewMenuAsAcadPopupMenu

SetnewMenu=currMenuGroup.Menus.Add("TestMenu")

'

DimnewMenuItemAsAcadPopupMenuItem

DimopenMacroAsString

'“ESCESC_open”VB

'

openMacro=Chr(3)+Chr(3)+"_open"

SetnewMenuItem=newMenu.AddMenuItem(newMenu.Count+1,_

"Open",openMacro)

'

currMenuGroup.Menus.InsertMenuInMenuBar"TestMenu",""

EndSub

ActiveX/VBA>>>

RemoveMenuFromMenuBarRemoveFromMenuBar—

RemoveMenuFromMenuBarPopupMenus

currMenuGroup.Menus.RemoveMenuFromMenuBar("TestMenu")

RemoveFromMenuBarPopupMenu

ActiveX/VBA>>>

SubCh6_MoveMenu()

'

DimmoveMenuAsAcadPopupMenu

DimMyMenuBarAsAcadMenuBar

SetMyMenuBar=ThisDrawing.Application.menuBar

'moveMenu

'

SetmoveMenu=MyMenuBar.Item(0)

'

MyMenuBar.Item(0).RemoveFromMenuBar

'

'

moveMenu.InsertInMenuBar(MyMenuBar.count)

EndSub

<$nopage>: <$startrange>InsertInMenuBar:,:,PopupMenuItem:AddSeparator,AddSeparator,Type,Label:,PopupMenuItem:,,:,:,PopupMenu:,:,<$nopage>, <$endrange>InsertInMenuBar:,:,PopupMenu:,PopupMenuItem:,Delete:,PopupMenuItem:Tag,PopupMenuItem:Label,PopupMenuItem:Caption,PopupMenuItem:Macro,PopupMenuItem:HelpString,PopupMenuItem:Enable,PopupMenuItem:Check,:,:,:,:,PopupMenuItem:Index,PopupMenuItem:Type,PopupMenuItem:Submenu,PopupMenuItem:Parent,PopupMenuItem:Parent,:,:,:,:,,InsertInMenuBar:,">

ActiveX/VBA>>

AutoCADActiveX/VBAAutoCAD“”

999499AutoCAD

ShortcutMenuShortcutMenu TRUE

ActiveX/VBA>>>

AddPopupMenusPopupMenu

“POP0”AutoCAD

Add

Name

MenuGroups“TestMenu”

SubCh6_CreateMenu()

DimcurrMenuGroupAsAcadMenuGroup

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

'

DimnewMenuAsAcadPopupMenu

SetnewMenu=currMenuGroup.Menus.Add("TestMenu")

EndSub

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

ActiveX/VBA>>>

AddMenuItemPopupMenuItem

AddMenuItem IndexLabelTag Macro

IndexLabelTagMacro

ActiveX/VBA>>>>

Index

Index(0) IndexCountCount

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

Index

ActiveX/VBA>>>>

Label

DIESEL

DIESEL&

DIESEL“&”“”

Label

ActiveX/VBA>>>>

Tag

(_)

TagString

<$startrange>InsertInMenuBar:,">

ActiveX/VBA>>>>

Macro

AutoLISPDIESELActiveX

Macro

“TestMenu”“Open”OPEN

SubCh6_AddAMenuItem()

DimcurrMenuGroupAsAcadMenuGroup

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

'

DimnewMenuAsAcadPopupMenu

SetnewMenu=currMenuGroup.Menus.Add("TestMenu")

'

DimnewMenuItemAsAcadPopupMenuItem

DimopenMacroAsString

'“ESCESC_open”VBA

openMacro=Chr(3)+Chr(3)+"_open"

SetnewMenuItem=newMenu.AddMenuItem_

(newMenu.count+1,"Open",openMacro)

'

newMenu.InsertInMenuBar_

(ThisDrawing.Application.menuBar.count+1)

EndSub

ActiveX/VBA>>>

AddSeparatorPopupMenuItemPopupMenuItemacSeparatorType

AddSeparator Index Index(0)

ActiveX/VBA>>>

AutoCADActiveX/VBALabel&ASCIIChr(Asc("&"))+"Edit"“Edit”“E”

“TestMenu”“Open”“S”“TestMenu”“O”“Open”

SubCh6_AddAMenuItem()

DimcurrMenuGroupAsAcadMenuGroup

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

'

DimnewMenuAsAcadPopupMenu

SetnewMenu=currMenuGroup.Menus.Add_

("Te"+Chr(Asc("&"))+"stMenu")

'

DimnewMenuItemAsAcadPopupMenuItem

DimopenMacroAsString

'“ESCESC_open”VBA

openMacro=Chr(3)+Chr(3)+"_open"

SetnewMenuItem=newMenu.AddMenuItem_

(newMenu.count+1,Chr(Asc("&"))_

+"Open",openMacro)

'

newMenu.InsertInMenuBar_

(ThisDrawing.Application.menuBar.count+1)

EndSub

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

ActiveX/VBA>>>

AddSubmenuPopupMenuItemPopupMenuItemacSubmenu

AddSubmenu IndexLabel Tag

Index(0) IndexCountCount

LabelDIESEL“&”“”

Tag(_)

AddSubmenuPopupMenuItemPopupMenu

“TestMenu”“OpenFile”“Open”

SubCh6_AddASubMenu()

DimcurrMenuGroupAsAcadMenuGroup

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

'

DimnewMenuAsAcadPopupMenu

SetnewMenu=currMenuGroup.Menus.Add("TestMenu")

'

DimFileSubMenuAsAcadPopupMenu

SetFileSubMenu=newMenu.AddSubMenu("","OpenFile")

'

DimnewMenuItemAsAcadPopupMenuItem

DimopenMacroAsString

'“ESCESC_open”VB

openMacro=Chr(3)+Chr(3)+"_open"

SetnewMenuItem=FileSubMenu.AddMenuItem_

(newMenu.count+1,"Open",openMacro)

'

newMenu.InsertInMenuBar_

(ThisDrawing.Application.menuBar.count+1)

EndSub

ActiveX/VBA>>>

Delete

CUIMenuGroup.LoadPreferences.Profiles.ActiveProfileDocument.SendCommandMenuloadCUI

SubCh6_DeleteMenuItem()

DimLastMenuAsAcadPopupMenu

SetLastMenu=ThisDrawing.Application.menuBar._

Item(ThisDrawing.Application.menuBar.count-1)

'

DimnewMenuItemAsAcadPopupMenuItem

DimopenMacroAsString

'“ESCESC_open”VB

openMacro=Chr(3)+Chr(3)+"_open"

SetnewMenuItem=LastMenu.AddMenuItem_

(LastMenu.count+1,"Open",openMacro)

'

newMenuItem.Delete

EndSub

ActiveX/VBA>>>

TagString

(_)TagString

Label

DIESELLabel

Caption

DIESELLabelCaption

AutoLISPDIESELActiveXMacro

HelpString

AutoCADHelpString

Enable

EnableEnableDIESEL

Check

CheckCheckDIESEL

Index

001

Type

Type acMenuItem acMenuSeparator

acSubMenu

SubMenu

SubMenu acSubMenuPopupMenu acSubMenu

Parent

ParentPopupMenu

“TestMenu”Enable

SubCh6_DisableMenuItem()

DimcurrMenuGroupAsAcadMenuGroup

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

'

DimnewMenuAsAcadPopupMenu

SetnewMenu=currMenuGroup.Menus.Add("TestMenu")

'

DimMenuEnableAsAcadPopupMenuItem

DimMenuDisableAsAcadPopupMenuItem

DimMenuSeparatorAsAcadPopupMenuItem

DimopenMacroAsString

'“ESCESC_open”VB

openMacro=Chr(3)+Chr(3)+"_open"

SetMenuEnable=newMenu.AddMenuItem_

(newMenu.count+1,"OpenEnabled",openMacro)

SetMenuSeparator=newMenu.AddSeparator("")

SetMenuDisable=newMenu.AddMenuItem_

(newMenu.count+1,"OpenDisabled",openMacro)

'

MenuDisable.Enable=False

'

newMenu.InsertInMenuBar_

(ThisDrawing.Application.menuBar.count+1)

EndSub

ActiveX/VBA>>

AutoCADActiveX/VBA

ActiveX/VBA>>>

AddToolbarsToolbar

Add(-)(_)

Name

MenuGroups“TestToolbar”

SubCh6_CreateToolbar()

DimcurrMenuGroupAsAcadMenuGroup

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

'

DimnewToolbarAsAcadToolbar

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

EndSub

ActiveX/VBA>>>

AddToolbarButtonToolbarItem

AddToolbarButton IndexNameHelpStringMacroFlyoutButton

Index

Index(0) IndexCountCount

Index

Name

(-)(_) Name

HelpString

AutoCAD HelpString

AutoLISPDIESELActiveX Macro

FlyoutButton

FlyoutButton TRUE FALSE

OPEN

SubCh6_AddButton()

DimcurrMenuGroupAsAcadMenuGroup

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

'

DimnewToolbarAsAcadToolbar

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

'

DimnewButtonAsAcadToolbarItem

DimopenMacroAsString

'“ESCESC_open”VB

openMacro=Chr(3)+Chr(3)+"_open"

SetnewButton=newToolbar.AddToolbarButton_

("","NewButton","Openafile.",openMacro)

EndSub

ActiveX/VBA>>>

AddSeparatorToolbarItemToolbarItemacSeparatorType

AddSeparator IndexIndex(0)

ActiveX/VBA>>>

SetBitmapsGetBitmaps

SetBitmaps SmallIconName LargeIconName

SmallIconName

16×15ID(-)(_). bmpSupport

LargeIconName

24×22ID(-)(_). bmpSupport

SubCh6_GetButtonImages()

DimButtonAsAcadToolbarItem

DimToolbar0AsAcadToolbar

DimMenuGroup0AsAcadMenuGroup

DimSmallButtonNameAsString

DimLargeButtonNameAsString

DimmsgAsString

DimButtonTypeAsString

'

SetMenuGroup0=ThisDrawing.Application._

MenuGroups.Item(0)

SetToolbar0=MenuGroup0.Toolbars.Item(0)

'

SmallButtonName=""

LargeButtonName=""

'

'

msg="Toolbar:"+Toolbar0.Name+vbCrLf

Toolbar0.Visible=True

'

'

'

'

ForEachButtonInToolbar0

ButtonType=Choose(Button.Type+1,"Button",_

"Separator","Control","Flyout")

msg=msg&ButtonType&":"

IfButton.Type=acToolbarButtonOr_

Button.Type=acToolbarFlyoutThen

Button.GetBitmapsSmallButtonName,_

LargeButtonName

msg=msg+SmallButtonName+","_

+LargeButtonName

EndIf

msg=msg+vbCrLf

NextButton

'

MsgBoxmsg

EndSub

ActiveX/VBA>>>

AddToolbarButtonToolbarItem

AddToolbarButton IndexNameHelpStringMacroFlyoutButton FlyoutButton TRUE

SubCh6_AddFlyoutButton()

DimcurrMenuGroupAsAcadMenuGroup

SetcurrMenuGroup=ThisDrawing.Application._

MenuGroups.Item(0)

'

DimFirstToolbarAsAcadToolbar

SetFirstToolbar=currMenuGroup.Toolbars._

Add("FirstToolbar")

'

DimFlyoutButtonAsAcadToolbarItem

SetFlyoutButton=FirstToolbar.AddToolbarButton_

("","Flyout","Demonstratesaflyoutbutton",_

"OPEN",True)

'

'

DimSecondToolbarAsAcadToolbar

SetSecondToolbar=currMenuGroup.Toolbars._

Add("SecondToolbar")

'

DimnewButtonAsAcadToolbarItem

DimopenMacroAsString

'“ESCESC_open”VB

openMacro=Chr(3)+Chr(3)+"_open"

SetnewButton=SecondToolbar.AddToolbarButton_

("","NewButton","Openafile.",openMacro)

'

'

FlyoutButton.AttachToolbarToFlyoutcurrMenuGroup.Name,_

SecondToolbar.Name

'

FirstToolbar.Visible=True

SecondToolbar.Visible=False

EndSub

ActiveX/VBA>>>

FloatFloat TopLeft NumberFloatRowsTop Left

NumberFloatRows1

DockDock SideRow ColumnSideRow Column

DockStatusDockStatus TRUE FALSE

SubCh6_DockToolbar()

DimcurrMenuGroupAsAcadMenuGroup

SetcurrMenuGroup=ThisDrawing.Application._

MenuGroups.Item(0)

'

DimnewToolbarAsAcadToolbar

SetnewToolbar=currMenuGroup.Toolbars._

Add("TestToolbar")

'

'

DimnewButton1AsAcadToolbarItem

DimnewButton2AsAcadToolbarItem

DimnewButton3AsAcadToolbarItem

DimopenMacroAsString

'“ESCESC_open”VB

openMacro=Chr(3)+Chr(3)+"_open"

SetnewButton1=newToolbar.AddToolbarButton_

("","NewButton1","Openafile.",openMacro)

SetnewButton2=newToolbar.AddToolbarButton_

("","NewButton2","Openafile.",openMacro)

SetnewButton3=newToolbar.AddToolbarButton_

("","NewButton3","Openafile.",openMacro)

'

newToolbar.Visible=True

'

newToolbar.DockacToolbarDockLeft

EndSub

ActiveX/VBA>>>

Delete

ActiveX/VBA>>>

Tagstring

(_)TagString

Name

AutoCADName

AutoLISPDIESELActiveXMacro

HelpString

AutoCADHelpString

Index

001Index

Type

acButton acToolButtonSeparator

acFlyout acControl

Type

Flyout

acFlyoutToolbar

acFlyout NULL

Flyout

Parent

ToolbarParent

ActiveX/VBA>>

AutoLISPDIESELActiveX

AutoCADAutoCAD

PICKADDPICKAUTO10AutoCADASCII

ActiveX/VBA>>>

ASCII

VBVBAASCIIMacroASCII

ASCII

; chr(59) ENTER

^M chr(13) ENTER

^| chr(94)+chr(124)

TAB

SPACEBAR chr(32)

\ chr(92)

_ chr(95) AutoCAD

+ chr(43)

=* chr(61)+chr(42)

*^C^C chr(42)+chr(3)+chr(3)

$ chr(36) DIESEL

^B chr(2) (CTRL+B)

^C chr(3) (CTRL+C)

ESC chr(3) (ESC)

^D chr(4) (CTRL+D)

^E chr(5) (CTRL+E)

^G chr(7) (CTRL+G)

^H chr(8) BACKSPACE

^O chr(15) (CTRL+O)

^P chr(16) MENUECHO

^Q chr(17) (CTRL+Q)

^T chr(20) (CTRL+T)

^V chr(22) (CTRL+V)

^Z chr(26)SPACEBAR

ActiveX/VBA>>>

AutoCADAutoCAD lineSPACEBAR

line

ENTERTEXTDIMENTER

(;)AutoCADENTER

(\)(+)(;)AutoCAD

erase\;

ERASEAutoCAD(;)ENTER

ucs

ucs;

text\.40DRAFTInc;;;MainSt.;;;City,State;

ucs[(N)/(M)/(G)/(P)/(R)/(S)/(D)/(A)/?/(W)]<>:

ucs(;)“”

(;;;)TEXT

ASCIIASCII ASCII

ActiveX/VBA>>>

(\)

circle\1

layeroff\;

1(\)LAYERLAYERENTER(;)

SELECT

select\changeprevious;propertiescolorred;

SELECTCHANGE“”

(\)(/) /direct/file

X/Y/Z

SELECT

ActiveX/VBA>>>

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

ActiveX/VBA>>>

AutoCAD(null)

*^C^CESC

*C^C^C

*^C^CMOVESingle

*^C^CCOPYSingle

*^C^CERASESingle

*^C^CSTRETCHSingleCrossing

*^C^CROTATESingle

*^C^CSCALESingle

ActiveX/VBA>>>

*^C^CERASEsingle

ERASEAutoCAD

ActiveX/VBA>>

HelpString

HelpString

“TestMenu”“Open”HelpString

SubCh6_AddHelp()

DimcurrMenuGroupAsAcadMenuGroup

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

'

DimnewMenuAsAcadPopupMenu

SetnewMenu=currMenuGroup.Menus.Add_

("Te"+Chr(Asc("&"))+"stMenu")

'

DimnewMenuItemAsAcadPopupMenuItem

DimopenMacroAsString

'“ESCESC_open”VBA

openMacro=Chr(3)+Chr(3)+"_open"

'

SetnewMenuItem=newMenu.AddMenuItem_

(newMenu.count+1,Chr(Asc("&"))_

+"Open",openMacro)

'

newMenuItem.HelpString="OpensanAutoCADdrawingfile."

'

newMenu.InsertInMenuBar_

(ThisDrawing.Application.menuBar.count+1)

EndSub

<$nopage>

ActiveX/VBA>>

AutoCADSHIFT

AutoCADShortcutMenu TRUE

POP0

“OpenDWG”

SubCh6_AddMenuItemToshortcutMenu()

DimcurrMenuGroupAsAcadMenuGroup

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

'

'shortcutMenu

DimscMenuAsAcadPopupMenu

DimentryAsAcadPopupMenu

ForEachentryIncurrMenuGroup.Menus

Ifentry.shortcutMenu=TrueThen

SetscMenu=entry

EndIf

Nextentry

'

DimnewMenuItemAsAcadPopupMenuItem

DimopenMacroAsString

'“ESCESC_open”VBA

openMacro=Chr(3)+Chr(3)+"_open"

SetnewMenuItem=scMenu.AddMenuItem_

("",Chr(Asc("&"))_

+"OpenDWG",openMacro)

EndSub

ActiveX/VBA>

AutoCADBeginOpenAutoCAD

AutoCAD

ActiveX/VBA>>

AutoCAD

AutoCAD®

AutoCADAutoCADARXLISP

“”ARXLISP

BeginOpen

ActiveX/VBA>>

AutoCADAutoCADAutoCAD

OPENBeginCommandBeginOpenEndOpenEndCommandBeginEndBeginCommandBeginOpenEndCommandEndOpenBeginCommandEndCommandBeginOpenEndOpen

object1object2object1ObjectErasedobject2object2ObjectErased

AutoCADGetPointGetEntityGetKeywordSendCommand

AutoCADBeginModalEndModalActivateDeactivateBeginRightClick

AutoCAD

BeginOpenAutoCAD

AutoCAD

ActiveX/VBA>>

AutoCADVBAVBAVBAActiveX ®

Automation

AppActivate

“”

AppDeactivate

“”

ARXLoaded

ObjectARX

ARXUnloaded

ObjectARX

BeginCommand

BeginFileDrop

“”

BeginLISP

AutoCADLISP

BeginModal

BeginOpen

AutoCAD

BeginPlot

AutoCAD

BeginQuit

AutoCAD

BeginSave

AutoCAD

EndCommand

EndLISP

LISP

EndModal

EndOpen

AutoCAD

EndPlot

EndSave

AutoCAD

LISPCancelled

LISP

NewDrawing

SysVarChanged

WindowChanged

“”

WindowMovedOrResized

“”

ActiveX/VBA>>>

AcadApplicationEventClassModuleVBAWithEvents

Application

1. VBAIDE“”“”

2. “”

3. “”EventClass-Module

4. F7“” “”“”

5. “”

PublicWithEventsAppAsAcadApplication

“”“”“”

Application

Application

1. “”

DimXAsNewEventClassModule

2.

SubInitializeEvents()

SetX.App=ThisDrawing.Application

EndSub

3. InitializeEvents

CallInitializeEvents

InitializeEventsAppApplication

AutoCAD

AutoCAD“”/“”/“”BeginFileDropCancel

PublicWithEventsACADAppAsAcadApplication

SubExample_AcadApplication_Events()

'(ACADApp)

'AcadApplication

'

'

'ThisDocument

'

'

SetACADApp=GetObject(,"AutoCAD.Application.17")

EndSub

PrivateSubACADApp_BeginFileDrop_

(ByValFileNameAsString,CancelAsBoolean)

'ApplicationBeginFileDrop

'

'AutoCAD

'

'

'

'1)

'ACADApp

'

'2)AutoCADAutoCAD

'AutoCAD

'

'Cancel

'FileName

'

IfMsgBox("AutoCADisabouttoload"&FileName&vbCrLf_

&"Doyouwanttocontinueloadingthisfile?",_

vbYesNoCancel+vbQuestion)<>vbYesThen

Cancel=True

EndIf

EndSub

ActiveX/VBA>>

AutoCADVBAVBAVBActiveXAutomation

Activate

“”

BeginDocClose

BeginCommand

BeginDoubleClick

BeginLISP

AutoCADLISP

BeginPlot

AutoCAD

BeginRightClick

“”

BeginSave

AutoCAD

BeginShortcutMenuCommand

“”“”

BeginShortcutMenuDefault

“”“”

BeginShortcutMenuEdit

“”“”

BeginShortcutMenuGrip

“”“”

BeginShortcutMenuOsnap

“”“”

Deactivate

“”

EndCommand

EndLISP

LISP

EndPlot

EndSave

AutoCAD

EndShortcutMenu

LayoutSwitched

LISPCancelled

LISP

ObjectAdded

ObjectErased

ObjectModified

SelectionChanged

WindowChanged

“”

WindowMovedOrResized

“”

VBAVBAVBA

ActiveX/VBA>>>

VBA

AcadDocumentVBVBAEventClassModuleVBAWithEvents

Document

1. VBAIDE“”“”

2. “”

3. “”EventClass-Module

4. F7“” “”“”

5. “”

PublicWithEventsDocAsAcadDocument

“”“”“”

Document

Document

1. “”

DimXAsNewEventClassModule

2.

ubInitializeEvents()

SetX.Doc=ThisDrawing

EndSub

3. InitializeApp

CallInitializeEvents

InitializeEventsDocDocument

ActiveX/VBA>>>

VBA

“”“”DocDoc“”

ActiveX/VBA>>>

VBA

VBAVBA“”“”“AcadDocument”“”

VBA

BeginShortcutMenuDefault“OpenDWG”EndShortcutMenu

PrivateSubAcadDocument_BeginShortcutMenuDefault_

(ShortcutMenuAsAutoCAD.IAcadPopupMenu)

OnErrorResumeNext

'

DimnewMenuItemAsAcadPopupMenuItem

DimopenMacroAsString

openMacro=Chr(vbKeyEscape)+Chr(vbKeyEscape)+"_open"

SetnewMenuItem=ShortcutMenu.AddMenuItem_

(0,Chr(Asc("&"))_

+"OpenDWG",openMacro)

EndSub

PrivateSubAcadDocument_EndShortcutMenu_

(ShortcutMenuAsAutoCAD.IAcadPopupMenu)

OnErrorResumeNext

ShortcutMenu.Item("OpenDWG").Delete

EndSub

ActiveX/VBA>>

AutoCADVBAVBAVBAActiveXAutomation

Modified

ActiveX/VBA>>>

AcadObjectEventClassModuleVBAWithEvents

Circle

1. VBAIDE“”“”

2. “”

3. “”EventClass-Module

4. F7“” “”“”

5. “”

PublicWithEventsObjectAsAcadCircle

“”“”“”

Circle

Automation

1. “”

DimXAsNewEventClassModule

2. “MyCircle”

SubInitializeEvents()

DimMyCircleAsAcadCircle

DimcenterPoint(0To2)AsDouble

DimradiusAsDouble

centerPoint(0)=0#:centerPoint(1)=0#:centerPoint(2)=0#

radius=5#

SetMyCircle=ThisDrawing.ModelSpace.AddCircle(centerPoint,radius)

SetX.Object=MyCircle

EndSub

3. InitializeApp

CallInitializeEvents

InitializeEventsCircleCircleVBAModifiedVBA

AutoCADCreatePLineWithEvents

PublicWithEventsPLineAsAcadLWPolyline

SubCreatePLineWithEvents()

'

Dimpoints(0To9)AsDouble

points(0)=1:points(1)=1

points(2)=1:points(3)=2

points(4)=2:points(5)=2

points(6)=3:points(7)=3

points(8)=3:points(9)=2

SetPLine=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

PLine.Closed=True

ThisDrawing.Application.ZoomAll

EndSub

PrivateSubPLine_Modified_

(ByValpObjectAsAutoCAD.IAcadObject)

'

'modified

'

'

OnErrorGoToERRORHANDLER

MsgBox"Theareaof"&pObject.ObjectName&"is:"_

&pObject.Area

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

ActiveX/VBA>

(3D)(2D)AutoCAD

ActiveX/VBA>>

(WCS)WCS X Y

“”

Z

SubCh8_Polyline_2D_3D()

Dimpline2DObjAsAcadLWPolyline

Dimpline3DObjAsAcadPolyline

Dimpoints2D(0To5)AsDouble

Dimpoints3D(0To8)AsDouble

'

points2D(0)=1:points2D(1)=1

points2D(2)=1:points2D(3)=2

points2D(4)=2:points2D(5)=2

'

points3D(0)=1:points3D(1)=1:points3D(2)=0

points3D(3)=2:points3D(4)=1:points3D(5)=0

points3D(6)=2:points3D(7)=2:points3D(8)=0

'

Setpline2DObj=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points2D)

pline2DObj.Color=acRed

pline2DObj.Update

'

Setpline3DObj=ThisDrawing.ModelSpace._

AddPolyline(points3D)

pline3DObj.Color=acBlue

pline3DObj.Update

'

Dimget2DptsAsVariant

Dimget3DptsAsVariant

get2Dpts=pline2DObj.Coordinates

get3Dpts=pline3DObj.Coordinates

'

MsgBox("2Dpolyline(red):"&vbCrLf&_

get2Dpts(0)&","&get2Dpts(1)&vbCrLf&_

get2Dpts(2)&","&get2Dpts(3)&vbCrLf&_

get2Dpts(4)&","&get2Dpts(5))

MsgBox("3Dpolyline(blue):"&vbCrLf&_

get3Dpts(0)&","&get3Dpts(1)&","&_

get3Dpts(2)&vbCrLf&_

get3Dpts(3)&","&get3Dpts(4)&","&_

get3Dpts(5)&vbCrLf&_

get3Dpts(6)&","&get3Dpts(7)&","&_

get3Dpts(8))

EndSub

ActiveX/VBA>>

(UCS)(0,0,0) XY ZUCSUCS

UCSUCSIconAtOriginUCSUCSUCSUCSIconOnUCSORGWCS

Add X YUCS

AutoCAD®ActiveXAutomationGetUCSMatrixUCSWCS

UCSDocumentActiveUCSUCSUCSUCSUCSUCSActiveUCS

UCS “”

UCSUCS

UCSUCSWCSUCS

SubCh8_NewUCS()

'

DimucsObjAsAcadUCS

Dimorigin(0To2)AsDouble

DimxAxisPnt(0To2)AsDouble

DimyAxisPnt(0To2)AsDouble

'UCS

origin(0)=4:origin(1)=5:origin(2)=3

xAxisPnt(0)=5:xAxisPnt(1)=5:xAxisPnt(2)=3

yAxisPnt(0)=4:yAxisPnt(1)=6:yAxisPnt(2)=3

'UCS

'UserCoordinatesSystems

SetucsObj=ThisDrawing.UserCoordinateSystems._

Add(origin,xAxisPnt,yAxisPnt,"New_UCS")

'UCS

ThisDrawing.ActiveViewport.UCSIconAtOrigin=True

ThisDrawing.ActiveViewport.UCSIconOn=True

'UCSUCS

ThisDrawing.ActiveUCS=ucsObj

MsgBox"ThecurrentUCSis:"&ThisDrawing.ActiveUCS.Name_

&vbCrLf&"Pickapointinthedrawing."

'WCSUCS

DimWCSPntAsVariant

DimUCSPntAsVariant

WCSPnt=ThisDrawing.Utility.GetPoint(,"Enterapoint:")

UCSPnt=ThisDrawing.Utility.TranslateCoordinates_

(WCSPnt,acWorld,acUCS,False)

MsgBox"TheWCScoordinatesare:"&WCSPnt(0)&","_

&WCSPnt(1)&","&WCSPnt(2)&vbCrLf&_

"TheUCScoordinatesare:"&UCSPnt(0)&","_

&UCSPnt(1)&","&UCSPnt(2)

EndSub

ActiveX/VBA>>

TranslateCoordinates OriginalPoint

Disp TRUEOriginalPoint OriginalPoint OriginalPoint From ToAutoCAD

WCS

WCSWCSActiveXWCS

UCS

(UCS)UCSAutoCADAutoLISPUCS*WCSOCSDCSAutoCADTranslateCoordinatesUCS

OCS

PolylineLightweightPolylineWCSUCSDCSWCSUCSDCSOCSAutoCADVBAReferenceOCSOCSTranslateCoordinatesOCS

DCS

DCSAutoCADTARGET ZDCSAutoCAD

PSDCS

DCSDCS X Y Disp FALSE ZPSDCS

OCSWCS

OCSWCSOCSWCSTranslateCoordinatesOCS

SubCh8_TranslateCoordinates()

'

DimplineObjAsAcadPolyline

Dimpoints(0To14)AsDouble

'

points(0)=1:points(1)=1:points(2)=0

points(3)=1:points(4)=2:points(5)=0

points(6)=2:points(7)=2:points(8)=0

points(9)=3:points(10)=2:points(11)=0

points(12)=4:points(13)=4:points(14)=0

'

SetplineObj=ThisDrawing.ModelSpace.AddPolyline(points)

'

'XY

DimfirstVertexAsVariant

firstVertex=plineObj.Coordinate(0)

'elevation

'Z

firstVertex(2)=plineObj.Elevation

'

'

'

DimplineNormal(0To2)AsDouble

plineNormal(0)=0#

plineNormal(1)=1#

plineNormal(2)=2#

plineObj.Normal=plineNormal

'OCSWCS

DimcoordinateWCSAsVariant

coordinateWCS=ThisDrawing.Utility.TranslateCoordinates_

(firstVertex,acOCS,acWorld,False,plineNormal)

'

MsgBox"Thefirstvertexhasthefollowingcoordinates:"_

&vbCrLf&"OCS:"&firstVertex(0)&","&_

firstVertex(1)&","&firstVertex(2)&vbCrLf&_

"WCS:"&coordinateWCS(0)&","&_

coordinateWCS(1)&","&coordinateWCS(2)

EndSub

ActiveX/VBA>>

AutoCAD

“”

ActiveX/VBA>>>

AutoCAD

XY Z

XYUCS

Add3DPoly

“”

ActiveX/VBA>>>

PolygonMesh

Add3DMesh M N

PolygonMeshMCloseNClose

“”

4×4

SubCh8_Create3DMesh()

DimmeshObjAsAcadPolygonMesh

DimmSize,nSize,CountAsInteger

Dimpoints(0To47)AsDouble

'

points(0)=0:points(1)=0:points(2)=0

points(3)=2:points(4)=0:points(5)=1

points(6)=4:points(7)=0:points(8)=0

points(9)=6:points(10)=0:points(11)=1

points(12)=0:points(13)=2:points(14)=0

points(15)=2:points(16)=2:points(17)=1

points(18)=4:points(19)=2:points(20)=0

points(21)=6:points(22)=2:points(23)=1

points(24)=0:points(25)=4:points(26)=0

points(27)=2:points(28)=4:points(29)=1

points(30)=4:points(31)=4:points(32)=0

points(33)=6:points(34)=4:points(35)=0

points(36)=0:points(37)=6:points(38)=0

points(39)=2:points(40)=6:points(41)=1

points(42)=4:points(43)=6:points(44)=0

points(45)=6:points(46)=6:points(47)=0

mSize=4:nSize=4

'

SetmeshObj=ThisDrawing.ModelSpace._

Add3DMesh(mSize,nSize,points)

'

'

DimNewDirection(0To2)AsDouble

NewDirection(0)=-1

NewDirection(1)=-1

NewDirection(2)=1

ThisDrawing.ActiveViewport.direction=NewDirection

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

ZoomAll

EndSub

ActiveX/VBA>>>

AddPolyfaceMesh

ActiveXandVBAReferenceAddPolyfaceMesh

SubCh8_CreatePolyfaceMesh()

'

Dimvertex(0To17)AsDouble

vertex(0)=4:vertex(1)=7:vertex(2)=0

vertex(3)=5:vertex(4)=7:vertex(5)=0

vertex(6)=6:vertex(7)=7:vertex(8)=0

vertex(9)=4:vertex(10)=6:vertex(11)=0

vertex(12)=5:vertex(13)=6:vertex(14)=0

vertex(15)=6:vertex(16)=6:vertex(17)=1

'

DimFaceList(0To7)AsInteger

FaceList(0)=1

FaceList(1)=2

FaceList(2)=5

FaceList(3)=4

FaceList(4)=2

FaceList(5)=3

FaceList(6)=6

FaceList(7)=5

'

DimpolyfaceMeshObjAsAcadPolyfaceMesh

SetpolyfaceMeshObj=ThisDrawing.ModelSpace.AddPolyfaceMesh_

(vertex,FaceList)

'

'

DimNewDirection(0To2)AsDouble

NewDirection(0)=-1

NewDirection(1)=-1

NewDirection(2)=1

ThisDrawing.ActiveViewport.direction=NewDirection

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

ZoomAll

EndSub

ActiveX/VBA>>>

3DSolid

AddBoxAddConeAddCylinderAddEllipticalConeAddEllipticalCylinderAddExtrudedSolidAddExtrudedSolidAlongPathAddRevolvedSolidAddSolidAddSphereAddTorusAddWedge

MomentOfInertiaPrincipalDirectionsPrincipalMomentsProductOfInertiaRadiiOfGyrationVolume

ContourlinesPerSurfaceRenderSmoothness

“”

SubCh8_CreateWedge()

DimwedgeObjAsAcad3DSolid

Dimcenter(0To2)AsDouble

DimlengthAsDouble

DimwidthAsDouble

DimheightAsDouble

'

center(0)=5#:center(1)=5#:center(2)=0

length=10#:width=15#:height=20#

'

SetwedgeObj=ThisDrawing.ModelSpace._

AddWedge(center,length,width,height)

'

DimNewDirection(0To2)AsDouble

NewDirection(0)=-1

NewDirection(1)=-1

NewDirection(2)=1

ThisDrawing.ActiveViewport.direction=NewDirection

ThisDrawing.ActiveViewport=ThisDrawing.ActiveViewport

ZoomAll

EndSub

ActiveX/VBA>>

ActiveX/VBA>>>

RotateWCSRotate3DRotate3DWCS

RotateRotate3D

“”

30

SubCh8_Rotate_3DBox()

DimboxObjAsAcad3DSolid

DimlengthAsDouble

DimwidthAsDouble

DimheightAsDouble

Dimcenter(0To2)AsDouble

'

center(0)=5:center(1)=5:center(2)=0

length=5

width=7

height=10

'

SetboxObj=ThisDrawing.ModelSpace._

AddBox(center,length,width,height)

'

DimrotatePt1(0To2)AsDouble

DimrotatePt2(0To2)AsDouble

DimrotateAngleAsDouble

rotatePt1(0)=-3:rotatePt1(1)=4:rotatePt1(2)=0

rotatePt2(0)=-3:rotatePt2(1)=-4:rotatePt2(2)=0

rotateAngle=30

rotateAngle=rotateAngle*3.141592/180#

'

boxObj.Rotate3DrotatePt1,rotatePt2,rotateAngle

ZoomAll

EndSub

ActiveX/VBA>>>

ArrayRectangular X Y

“”

SubCh8_CreateRectangularArray()

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=2:center(1)=2:center(2)=0

radius=0.5

SetcircleObj=ThisDrawing.ModelSpace._

AddCircle(center,radius)

'

DimnumberOfRowsAsLong

DimnumberOfColumnsAsLong

DimnumberOfLevelsAsLong

DimdistanceBwtnRowsAsDouble

DimdistanceBwtnColumnsAsDouble

DimdistanceBwtnLevelsAsDouble

numberOfRows=4

numberOfColumns=4

numberOfLevels=3

distanceBwtnRows=1

distanceBwtnColumns=1

distanceBwtnLevels=4

'

DimretObjAsVariant

retObj=circleObj.ArrayRectangular_

(numberOfRows,numberOfColumns,_

numberOfLevels,distanceBwtnRows,_

distanceBwtnColumns,distanceBwtnLevels)

ZoomAll

EndSub

ActiveX/VBA>>>

Mirror3D

“”

SubCh8_MirrorABox3D()

'

DimboxObjAsAcad3DSolid

DimlengthAsDouble

DimwidthAsDouble

DimheightAsDouble

Dimcenter(0To2)AsDouble

center(0)=5#:center(1)=5#:center(2)=0

length=5#:width=7:height=10#

'(3DSolid)

SetboxObj=ThisDrawing.ModelSpace._

AddBox(center,length,width,height)

'

DimmirrorPt1(0To2)AsDouble

DimmirrorPt2(0To2)AsDouble

DimmirrorPt3(0To2)AsDouble

mirrorPt1(0)=1.25:mirrorPt1(1)=0:mirrorPt1(2)=0

mirrorPt2(0)=1.25:mirrorPt2(1)=2:mirrorPt2(2)=0

mirrorPt3(0)=1.25:mirrorPt3(1)=2:mirrorPt3(2)=2

'

DimmirrorBoxObjAsAcad3DSolid

SetmirrorBoxObj=boxObj.Mirror3D_

(mirrorPt1,mirrorPt2,mirrorPt3)

mirrorBoxObj.Color=acRed

ZoomAll

EndSub

ActiveX/VBA>>

BooleanCheckInterference

SectionSolidSliceSolid

SubCh8_FindInterferenceBetweenSolids()

'

DimboxObjAsAcad3DSolid

DimlengthAsDouble

DimwidthAsDouble

DimheightAsDouble

Dimcenter(0To2)AsDouble

center(0)=5:center(1)=5:center(2)=0

length=5

width=7

height=10

'

'

SetboxObj=ThisDrawing.ModelSpace._

AddBox(center,length,width,height)

boxObj.Color=acWhite

'

DimcylinderObjAsAcad3DSolid

DimcylinderRadiusAsDouble

DimcylinderHeightAsDouble

center(0)=0:center(1)=0:center(2)=0

cylinderRadius=5

cylinderHeight=20

'

'

SetcylinderObj=ThisDrawing.ModelSpace.AddCylinder_

(center,cylinderRadius,cylinderHeight)

cylinderObj.Color=acCyan

'

'

'

DimsolidObjAsAcad3DSolid

SetsolidObj=boxObj.CheckInterference(cylinderObj,True)

solidObj.Color=acRed

ZoomAll

EndSub

3DSolid

SubCh8_SliceABox()

'

DimboxObjAsAcad3DSolid

DimlengthAsDouble

DimwidthAsDouble

DimheightAsDouble

Dimcenter(0To2)AsDouble

center(0)=5#:center(1)=5#:center(2)=0

length=5#:width=7:height=10#

'(3DSolid)

SetboxObj=ThisDrawing.ModelSpace._

AddBox(center,length,width,height)

boxObj.Color=acWhite

'

DimslicePt1(0To2)AsDouble

DimslicePt2(0To2)AsDouble

DimslicePt3(0To2)AsDouble

slicePt1(0)=1.5:slicePt1(1)=7.5:slicePt1(2)=0

slicePt2(0)=1.5:slicePt2(1)=7.5:slicePt2(2)=10

slicePt3(0)=8.5:slicePt3(1)=2.5:slicePt3(2)=10

'

DimsliceObjAsAcad3DSolid

SetsliceObj=boxObj.SliceSolid_

(slicePt1,slicePt2,slicePt3,True)

sliceObj.Color=acRed

ZoomAll

EndSub

ActiveX/VBA>

AutoCAD

ActiveX/VBA>>

ActiveX/VBA>>

“”

ActiveX ®AutomationModelSpacePaperSpace

“”

ActiveX/VBA>>>

ActiveXLayoutBlockLayoutAutoCADBlock

LayoutBlockBlockBlockBlockLayoutBlockLayoutLayout

ActiveX/VBA>>>

PlotConfigurationLayoutLayoutBlockPlotConfigurationBlock

ActiveX/VBA>>>

Layout

ActiveX/VBA>>>>

CanonicalMediaName

PaperUnits acInchesacMillimeters acPixels

ActiveX/VBA>>>>

PlotOrigin(0,0)CenterPlot TRUE

ActiveX/VBA>>>>

PlotType

acDisplay

acExtents

acLimits

acView

ViewToPlot

acWindow

SetWindowToPlot

acLayout

acLayout

ActiveX/VBA>>>>

UseStandardScale TRUEStandardScale

UseStandardScale FALSESetCustomScale

StandardScale acScaleToFit

ActiveX/VBA>>>>

1:1AE

ScaleLineweights TRUE FALSE

ActiveX/VBA>>>>

ConfigName

ActiveX/VBA>>

ActiveXAutomationViewport

ActiveXAutomationPViewport

“”“”

ActiveX/VBA>>>

PViewportActiveSpacePViewportViewport

PViewport“”

ViewportActiveSpace acModelSpacePViewportActiveSpace acModelSpace acPaperSpace

PViewportViewportActiveSpace

PViewport ActiveSpace=acPaperspace

PViewport ActiveSpace=acModelspace

ActiveSpace=acModelspace

AutoCAD ®ActiveXAutomationActiveSpaceTILEMODEThisDrawing.ActiveSpace=acModelSpaceTILEMODE =

on ThisDrawing.ActiveSpace=acPaperSpaceTILEMODE=off

MSpaceAutoCADMSPACEPSPACEThisDrawing.MSpace=TRUEMSPACEThisDrawing.MSpace=FALSEPSPACE

MSpace TRUEDisplayDisplayAutoCAD“”ActiveXAutomation

MSpace TRUEPViewportDisplayMSpace

ActiveX/VBA>>>

1. ActiveSpace acPaperSpace

ThisDrawing.ActiveSpace=acPaperSpace

2. MSpace FALSE

ThisDrawing.MSpace=FALSE

AutoCAD(UCS)

ActiveX/VBA>>>

1. Display

ThisDrawing.ActivePViewport.DisplayTRUE

2. MSpace TRUE

ThisDrawing.MSpace=TRUE

ActiveSpace acModelSpace

ThisDrawing.ActiveSpace=acModelSpace

ActiveX/VBA>>>

AddPViewportActiveSpaceTILEMODE0

PViewportDirectionLensLengthGridOnLayerLinetypeLinetypeScale

AutoCAD

SubCh9_SwitchToPaperSpace()

'

ThisDrawing.ActiveSpace=acPaperSpace

'

DimnewVportAsAcadPViewport

Dimcenter(0To2)AsDouble

center(0)=3.25

center(1)=3

center(2)=0

SetnewVport=ThisDrawing.PaperSpace._

AddPViewport(center,6,5)

'

DimviewDir(0To2)AsDouble

viewDir(0)=1

viewDir(1)=1

viewDir(2)=1

newVport.direction=viewDir

'

newVport.DisplayTrue

'

ThisDrawing.MSpace=True

'newVport

'

ThisDrawing.ActivePViewport=newVport

'

ZoomExtents

'

ThisDrawing.MSpace=False

'

ZoomExtents

EndSub

AutoCAD

ViewportDisplay( FALSE)Display(TRUE)

“”

SubCh9_FourPViewports()

DimtopVport,frontVportAsAcadPViewport

DimrightVport,isoVportAsAcadPViewport

Dimpt(0To2)AsDouble

DimviewDir(0To2)AsDouble

ThisDrawing.ActiveSpace=acPaperSpace

ThisDrawing.MSpace=True

'PViewporttopVport

pt(0)=2.5:pt(1)=5.5:pt(2)=0

SettopVport=ThisDrawing.ActivePViewport

'Direction

topVport.center=pt

topVport.width=2.5

topVport.height=2.5

topVport.DisplayTrue

ThisDrawing.MSpace=True

ThisDrawing.ActivePViewport=topVport

ZoomExtents

ZoomScaled0.5,acZoomScaledRelativePSpace

'frontVport

pt(0)=2.5:pt(1)=2.5:pt(2)=0

SetfrontVport=ThisDrawing.PaperSpace._

AddPViewport(pt,2.5,2.5)

viewDir(0)=0:viewDir(1)=1:viewDir(2)=0

frontVport.direction=viewDir

frontVport.DisplayacOn

ThisDrawing.MSpace=True

ThisDrawing.ActivePViewport=frontVport

ZoomExtents

ZoomScaled0.5,acZoomScaledRelativePSpace

'rightVport

pt(0)=5.5:pt(1)=5.5:pt(2)=0

SetrightVport=ThisDrawing.PaperSpace._

AddPViewport(pt,2.5,2.5)

viewDir(0)=1:viewDir(1)=0:viewDir(2)=0

rightVport.direction=viewDir

rightVport.DisplayacOn

ThisDrawing.MSpace=True

ThisDrawing.ActivePViewport=rightVport

ZoomExtents

ZoomScaled0.5,acZoomScaledRelativePSpace

'isoVport

pt(0)=5.5:pt(1)=2.5:pt(2)=0

SetisoVport=ThisDrawing.PaperSpace._

AddPViewport(pt,2.5,2.5)

viewDir(0)=1:viewDir(1)=1:viewDir(2)=1

isoVport.direction=viewDir

isoVport.DisplayacOn

ThisDrawing.MSpace=True

ThisDrawing.ActivePViewport=isoVport

ZoomExtents

ZoomScaled0.5,acZoomScaledRelativePSpace

'

ThisDrawing.RegenTrue

EndSub

ActiveX/VBA>>>

Viewport

1. ActiveViewport

Thisdrawing.ActiveViewport=MyViewportObject

2.

ActiveSpace FALSEMSpace

ActiveX/VBA>>>

(1:4)

ZoomScaled

acZoomScaledRelativePSpace20.5

ActiveX/VBA>>>

PSLTSCALE

PSLTSCALE

SetVariablePSLTSCALE

ActiveX/VBA>>>

“”“”“”“”

PViewportShadePlot

ViewportLayoutPlotHidden TRUE FALSE

ActiveX/VBA>>

BACKGROUNDPLOT0

ActiveXAutomationLayoutPlotLayoutPlot

ActiveX/VBA>>>

Plot

PlotToFile

PlotToDevice

DisplayPlotPreview

QuietErrorMode

ActiveX/VBA>>>

00,0Layout

PlotToDevice

SubCh9_PrintModelSpace()

'

IfThisDrawing.ActiveSpace=acPaperSpaceThen

ThisDrawing.MSpace=True

ThisDrawing.ActiveSpace=acModelSpace

EndIf

'

ThisDrawing.ModelSpace.Layout.PlotType=acExtents

ThisDrawing.ModelSpace.Layout._

StandardScale=acScaleToFit

'1

ThisDrawing.Plot.NumberOfCopies=1

'

ThisDrawing.Plot.PlotToDevice

EndSub

ConfigNamePlotToDevicePC3

ActiveX/VBA>>>

“”

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

ActiveX/VBA>

AutoCAD

AutoCAD

<$nopage>

ActiveX/VBA>>

AutoCAD ®AutoCAD

ActiveX/VBA>>>

IDAddRasterRasterRaster

Raster

RasterAutoCAD11AutoCAD1AutoCADDPI

AutoCADAutoCAD1501:600AutoCAD11AddRasterAutoCAD

AutoCADAutoCAD

watch.jpgsample imageName

SubCh10_AttachingARaster()

DiminsertionPoint(0To2)AsDouble

DimscalefactorAsDouble

DimrotationAngleAsDouble

DimimageNameAsString

DimrasterObjAsAcadRasterImage

imageName="C:/ProgramFiles/AutoCADDirectory/sample/watch.jpg'

insertionPoint(0)=5

insertionPoint(1)=5

insertionPoint(2)=0

scalefactor=2

rotationAngle=0

OnErrorGoToERRORHANDLER

'

SetrasterObj=ThisDrawing.ModelSpace.AddRaster_

(imageName,insertionPoint,_

scalefactor,rotationAngle)

ZoomAll

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

ActiveX/VBA>>>

Raster

ActiveX/VBA>>>>

ImageFileAutoCAD

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

ImageFile

ImageFile

ActiveX/VBA>>>>

AutoCAD

RasterImageFileImageFileNameName

<$nopage>

ActiveX/VBA>>>

AutoCAD

ActiveX/VBA>>>>

ClippingEnabled

ActiveX/VBA>>>>

Layer

Color

Linetype

ActiveX/VBA>>>>

ScaleEntity

Rotate

Origin

Width

Height

ImageWidth

ImageHeight

ShowRotation

ActiveX/VBA>>>>

ImageVisibilityFALSEImageVisibilityTRUE

<$nopage>

ActiveX/VBA>>>>

ColorTransparency

ActiveX/VBA>>>>

AutoCAD

Brightness

Contrast

Fade

ActiveX/VBA>>>

1. ClippingEnabled

2. ClipBoundary

ActiveX/VBA>>>>

ActiveX/VBA>>>>

ClippingEnabledFALSEClippingEnabledTRUE

ActiveX/VBA>>>>>

sample downtown.jpgimageName

SubCh10_ClippingRasterBoundary()

DiminsertionPoint(0To2)AsDouble

DimscalefactorAsDouble

DimrotationAngleAsDouble

DimimageNameAsString

DimrasterObjAsAcadRasterImage

imageName="C:\AutoCAD\sample\downtown.jpg"

insertionPoint(0)=5

insertionPoint(1)=5

insertionPoint(2)=0

scalefactor=2

rotationAngle=0

OnErrorGoToERRORHANDLER

'

SetrasterObj=ThisDrawing.ModelSpace.AddRaster_

(imageName,insertionPoint,_

scalefactor,rotationAngle)

ZoomAll

'

DimclipPoints(0To9)AsDouble

clipPoints(0)=6:clipPoints(1)=6.75

clipPoints(2)=7:clipPoints(3)=6

clipPoints(4)=6:clipPoints(5)=5

clipPoints(6)=5:clipPoints(7)=6

clipPoints(8)=6:clipPoints(9)=6.75

'

rasterObj.ClipBoundaryclipPoints

'

rasterObj.ClippingEnabled=True

ThisDrawing.RegenacActiveViewport

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

<$nopage>: <$nopage>BlockReference:

ActiveX/VBA>>

AutoCAD

AutoCAD

<$nopage>: <$nopage>BlockReference:

ActiveX/VBA>>>

AutoCAD

“”

ActiveX/VBA>>>>

Add

WBlockAutoCAD

“”

<$nopage>:

ActiveX/VBA>>>>

InsertBlockInsertBlockXYZ

AutoCADInsertBlock

Name

AutoCAD(0,0,0)SetVariableINSBASEAutoCAD

PaperSpacePaperSpaceAddPaperSpace

AddMInsertBlockInsertBlockMInsertBlock

“”

SubCh10_InsertingABlock()

'

DimblockObjAsAcadBlock

DiminsertionPnt(0To2)AsDouble

insertionPnt(0)=0

insertionPnt(1)=0

insertionPnt(2)=0

SetblockObj=ThisDrawing.Blocks.Add_

(insertionPnt,"CircleBlock")

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=0

center(1)=0

center(2)=0

radius=1

SetcircleObj=blockObj.AddCircle(center,radius)

'

DimblockRefObjAsAcadBlockReference

insertionPnt(0)=2

insertionPnt(1)=2

insertionPnt(2)=0

SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_

(insertionPnt,"CircleBlock",1#,1#,1#,0)

ZoomAll

MsgBox"Thecirclebelongsto"&blockRefObj.ObjectName

EndSub

WCS(UCS)XYUCS

<$nopage>BlockReference:

ActiveX/VBA>>>>

Explode

SubCh10_ExplodingABlock()

'

DimblockObjAsAcadBlock

DiminsertionPnt(0To2)AsDouble

insertionPnt(0)=0

insertionPnt(1)=0

insertionPnt(2)=0

SetblockObj=ThisDrawing.Blocks.Add_

(insertionPnt,"CircleBlock")

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=0

center(1)=0

center(2)=0

radius=1

SetcircleObj=blockObj.AddCircle(center,radius)

'

DimblockRefObjAsAcadBlockReference

insertionPnt(0)=2

insertionPnt(1)=2

insertionPnt(2)=0

SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_

(insertionPnt,"CircleBlock",1#,1#,1#,0)

ZoomAll

MsgBox"Thecirclebelongsto"&blockRefObj.ObjectName

'

DimexplodedObjectsAsVariant

explodedObjects=blockRefObj.Explode

'

DimIAsInteger

ForI=0ToUBound(explodedObjects)

explodedObjects(I).Color=acRed

explodedObjects(I).Update

MsgBox"ExplodedObject"&I&":"_

&explodedObjects(I).ObjectName

explodedObjects(I).Color=acByLayer

explodedObjects(I).Update

Next

EndSub

ActiveX/VBA>>>>

Block

SubCh10_RedefiningABlock()

'

DimblockObjAsAcadBlock

DiminsertionPnt(0To2)AsDouble

insertionPnt(0)=0

insertionPnt(1)=0

insertionPnt(2)=0

SetblockObj=ThisDrawing.Blocks.Add_

(insertionPnt,"CircleBlock")

'

DimcircleObjAsAcadCircle

Dimcenter(0To2)AsDouble

DimradiusAsDouble

center(0)=0

center(1)=0

center(2)=0

radius=1

SetcircleObj=blockObj.AddCircle(center,radius)

'

DimblockRefObjAsAcadBlockReference

insertionPnt(0)=2

insertionPnt(1)=2

insertionPnt(2)=0

SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_

(insertionPnt,"CircleBlock",1#,1#,1#,0)

ZoomAll

'

'

circleObj.radius=3

blockRefObj.Update

EndSub

ActiveX/VBA>>>

AutoCAD

“”

ActiveX/VBA>>>>

AddAttribute

acAttributeModeNormal

acAttributeModeInvisible

ATTDISP“”

acAttributeModeConstant

acAttributeModeVerify

acAttributeModePreset

acAttributeModeInvisible+acAttributeModeConstant

TagacAttributeModeConstant

AutoCAD

InsertBlock

SubCh10_CreatingAnAttribute()

'

DimblockObjAsAcadBlock

DiminsertionPnt(0To2)AsDouble

insertionPnt(0)=0

insertionPnt(1)=0

insertionPnt(2)=0

SetblockObj=ThisDrawing.Blocks.Add_

(insertionPnt,"BlockWithAttribute")

'

DimattributeObjAsAcadAttribute

DimheightAsDouble

DimmodeAsLong

DimpromptAsString

DiminsertionPoint(0To2)AsDouble

DimtagAsString

DimvalueAsString

height=1

mode=acAttributeModeVerify

prompt="NewPrompt"

insertionPoint(0)=5

insertionPoint(1)=5

insertionPoint(2)=0

tag="NewTag"

value="NewValue"

SetattributeObj=blockObj.AddAttribute(height,mode,_

prompt,insertionPoint,tag,value)

'

'

DimblockRefObjAsAcadBlockReference

insertionPnt(0)=2

insertionPnt(1)=2

insertionPnt(2)=0

SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_

(insertionPnt,"BlockWithAttribute",1#,1#,1#,0)

EndSub

ActiveX/VBA>>>>

Attribute

Alignment

Backward

FieldLength

Height

InsertionPoint

Mode

PromptString

Rotation

ScaleFactor

TagString

ArrayPolar

ArrayRectangular

Copy

Erase

Mirror

Move

Rotate

ScaleEntity

SubCh10_RedefiningAnAttribute()

'

DimblockObjAsAcadBlock

DiminsertionPnt(0To2)AsDouble

insertionPnt(0)=0

insertionPnt(1)=0

insertionPnt(2)=0

SetblockObj=ThisDrawing.Blocks.Add_

(insertionPnt,"BlockWithAttribute")

'

DimattributeObjAsAcadAttribute

DimheightAsDouble

DimmodeAsLong

DimpromptAsString

DiminsertionPoint(0To2)AsDouble

DimtagAsString

DimvalueAsString

height=1

mode=acAttributeModeVerify

prompt="NewPrompt"

insertionPoint(0)=5

insertionPoint(1)=5

insertionPoint(2)=0

tag="NewTag"

value="NewValue"

SetattributeObj=blockObj.AddAttribute(height,mode,_

prompt,insertionPoint,tag,value)

'

'

DimblockRefObjAsAcadBlockReference

insertionPnt(0)=2

insertionPnt(1)=2

insertionPnt(2)=0

SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_

(insertionPnt,"BlockWithAttribute",1#,1#,1#,0)

'

attributeObj.Backward=True

attributeObj.Update

EndSub

ActiveX/VBA>>>>

GetAttributesGetConstantAttributesGetAttributesGetConstantAttributes

TagStringTextString

TagStringTextString

“”

SubCh10_GettingAttributes()

'

DimblockObjAsAcadBlock

DiminsertionPnt(0To2)AsDouble

insertionPnt(0)=0

insertionPnt(1)=0

insertionPnt(2)=0

SetblockObj=ThisDrawing.Blocks.Add_

(insertionPnt,"TESTBLOCK")

'

DimattributeObjAsAcadAttribute

DimheightAsDouble

DimmodeAsLong

DimpromptAsString

DiminsertionPoint(0To2)AsDouble

DimtagAsString

DimvalueAsString

height=1#

mode=acAttributeModeVerify

prompt="AttributePrompt"

insertionPoint(0)=5

insertionPoint(1)=5

insertionPoint(2)=0

tag="AttributeTag"

value="AttributeValue"

'

SetattributeObj=blockObj.AddAttribute_

(height,mode,prompt,_

insertionPoint,tag,value)

'

DimblockRefObjAsAcadBlockReference

insertionPnt(0)=2

insertionPnt(1)=2

insertionPnt(2)=0

SetblockRefObj=ThisDrawing.ModelSpace.InsertBlock_

(insertionPnt,"TESTBLOCK",1,1,1,0)

ZoomAll

'

DimvarAttributesAsVariant

varAttributes=blockRefObj.GetAttributes

'

'Msgbox

DimstrAttributesAsString

strAttributes=""

DimIAsInteger

ForI=LBound(varAttributes)ToUBound(varAttributes)

strAttributes=strAttributes+"Tag:"+_

varAttributes(I).TagString+vbCrLf+_

"Value:"+varAttributes(I).textString

Next

MsgBox"TheattributesforblockReference"+_

blockRefObj.Name&"are:"&vbCrLf_

&strAttributes

'

'SetAttributes

'

'

varAttributes(0).textString="NEWVALUE!"

'

DimnewvarAttributesAsVariant

newvarAttributes=blockRefObj.GetAttributes

'

strAttributes=""

ForI=LBound(varAttributes)ToUBound(varAttributes)

strAttributes=strAttributes+"Tag:"+_

newvarAttributes(I).TagString+vbCrLf+_

"Value:"+newvarAttributes(I).textString

Next

MsgBox"TheattributesforblockReference"&_

blockRefObj.Name&"are:"&vbCrLf_

&strAttributes

EndSub

<$nopage>,

ActiveX/VBA>>

“”

ActiveX/VBA>>>

AutoCAD

ActiveX/VBA>>>

AutoCADAutoCADAutoCADVISRETAINAutoCAD

AttachExternalReferenceAttachExternalReferenceExternalReference

“”

“Sample”“ 3DHouse.dwg”PathName

SubCh10_AttachingExternalReference()

OnErrorGoToERRORHANDLER

DimInsertPoint(0To2)AsDouble

DiminsertedBlockAsAcadExternalReference

DimtempBlockAsAcadBlock

DimmsgAsString,PathNameAsString

'

InsertPoint(0)=1

InsertPoint(1)=1

InsertPoint(2)=0

PathName="C:/ProgramFiles/AutoCAD2008/sample/3DHouse.dwg"

'Block

GoSubListBlocks

'

SetinsertedBlock=ThisDrawing.ModelSpace._

AttachExternalReference(PathName,"XREF_IMAGE",_

InsertPoint,1,1,1,0,False)

ZoomAll

'Block

GoSubListBlocks

ExitSub

ListBlocks:

msg=vbCrLf'

ForEachtempBlockInThisDrawing.Blocks

msg=msg&tempBlock.Name&vbCrLf

Next

MsgBox"Thecurrentblocksinthisdrawingare:"&msg

Return

ERRORHANDLER:

MsgBoxErr.Description

EndSub

ActiveX/VBA>>>>

AttachExternalReferenceOverlayTRUE

ActiveX/VBA>>>

AutoCAD

Detach

“Sample”“ 3DHouse.dwg”PathName

SubCh10_DetachingExternalReference()

OnErrorGoToERRORHANDLER

'

DimxrefHomeAsAcadBlock

DimxrefInsertedAsAcadExternalReference

DiminsertionPnt(0To2)AsDouble

DimPathNameAsString

insertionPnt(0)=1

insertionPnt(1)=1

insertionPnt(2)=0

PathName="c:/AutoCAD2008/sample/3DHouse.dwg"

'

SetxrefInserted=ThisDrawing.ModelSpace._

AttachExternalReference(PathName,"XREF_IMAGE",_

insertionPnt,1,1,1,0,False)

ZoomAll

MsgBox"Theexternalreferenceisattached."

'

DimnameAsString

name=xrefInserted.name

ThisDrawing.Blocks.Item(name).Detach

MsgBox"Theexternalreferenceisdetached."

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

ActiveX/VBA>>>

Reload

“Sample”“ 3DHouse.dwg”PathName

SubCh10_ReloadingExternalReference()

OnErrorGoToERRORHANDLER

'

DimxrefHomeAsAcadBlock

DimxrefInsertedAsAcadExternalReference

DiminsertionPnt(0To2)AsDouble

DimPathNameAsString

insertionPnt(0)=1

insertionPnt(1)=1

insertionPnt(2)=0

PathName="c:/AutoCAD2008/sample/3DHouse.dwg"

'

SetxrefInserted=ThisDrawing.ModelSpace._

AttachExternalReference(PathName,"XREF_IMAGE",_

insertionPnt,1,1,1,0,False)

ZoomAll

MsgBox"Theexternalreferenceisattached."

'

ThisDrawing.Blocks.Item(xrefInserted.name).Reload

MsgBox"Theexternalreferenceisreloaded."

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

ActiveX/VBA>>>

UnloadAutoCAD

“Sample”“3DHouse.dwg”PathName

SubCh10_UnloadingExternalReference()

OnErrorGoToERRORHANDLER

'

DimxrefHomeAsAcadBlock

DimxrefInsertedAsAcadExternalReference

DiminsertionPnt(0To2)AsDouble

DimPathNameAsString

insertionPnt(0)=1

insertionPnt(1)=1

insertionPnt(2)=0

PathName="c:/AutoCAD2008/sample/3DHouse.dwg"

'

SetxrefInserted=ThisDrawing.ModelSpace._

AttachExternalReference(PathName,"XREF_IMAGE",_

insertionPnt,1,1,1,0,False)

ZoomAll

MsgBox"Theexternalreferenceisattached."

'

ThisDrawing.Blocks.Item(xrefInserted.name).Unload

MsgBox"Theexternalreferenceisunloaded."

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

ActiveX/VBA>>>

Bind

BindbPrefixNamebPrefixNameTRUE<blockname>$x$xbPrefixNameFALSEAutoCADbPrefixNameTRUE

“”

“Sample”“ 3DHouse.dwg”PathName

SubCh10_BindingExternalReference()

OnErrorGoToERRORHANDLER

'

DimxrefHomeAsAcadBlock

DimxrefInsertedAsAcadExternalReference

DiminsertionPnt(0To2)AsDouble

DimPathNameAsString

insertionPnt(0)=1

insertionPnt(1)=1

insertionPnt(2)=0

PathName="c:/AutoCAD2008/sample/3DHouse.dwg"

'

SetxrefInserted=ThisDrawing.ModelSpace._

AttachExternalReference(PathName,"XREF_IMAGE",_

insertionPnt,1,1,1,0,False)

ZoomAll

MsgBox"Theexternalreferenceisattached."

'

ThisDrawing.Blocks.Item(xrefInserted.name).BindFalse

MsgBox"Theexternalreferenceisbound."

ExitSub

ERRORHANDLER:

MsgBoxErr.Description

EndSub

ActiveX/VBA>>>

ActiveXAutomationAutoCADXCLIPSendCommandXCLIPAutoCAD

ActiveX/VBA>>>

XLOADCTLINDEXCTLAutoCAD“”

XRefDemandLoadacDemandLoadEnabledWithCopyAutoCADAutoCAD

SetVariableINDEXCTLINDEXCTL

0=

1=

2=

3=

AutoCADINDEXCTL0

“”

ActiveX/VBA>>

SubCh10_AttachXDataToSelectionSetObjects()

'

DimssetAsObject

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

'

sset.SelectOnScreen

'

DimappNameAsString,xdataStrAsString

appName="MY_APP"

xdataStr="Thisissomexdata"

DimxdataType(0To1)AsInteger

Dimxdata(0To1)AsVariant

'

'1001appName

xdataType(0)=1001

xdata(0)=appName

'1000

xdataType(1)=1000

xdata(1)=xdataStr

'

'

DimentAsObject

ForEachentInsset

ent.SetXDataxdataType,xdata

Nextent

EndSub

1000

SubCh10_ViewXData()

'

DimssetAsObject

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

'

DimxdataTypeAsVariant

DimxdataAsVariant

DimxdAsVariant

'

DimxdiAsInteger

xdi=0

'

'

DimmsgstrAsString

DimappNameAsString

DimentAsAcadEntity

appName="MY_APP"

ForEachentInsset

msgstr=""

xdi=0

'appName

ent.GetXDataappName,xdataType,xdata

'xdataType

'appName

IfVarType(xdataType)<>vbEmptyThen

ForEachxdInxdata

msgstr=msgstr&vbCrLf&xdataType(xdi)_

&":"&xd

xdi=xdi+1

Nextxd

EndIf

'msgstrNULL

Ifmsgstr=""Thenmsgstr=vbCrLf&"NONE"

MsgBoxappName&"xdataon"&ent.ObjectName&_

":"&vbCrLf&msgstr

Nextent

EndSub

<$nopage> <$nopage>

ActiveX/VBA>

VBA

AutoCADActiveX

MicrosoftVBAVBAVBA

VBAVBAVBAVBAVBAIDE

64

ActiveX/VBA>VBA >

VBA

VBAVBA

<$nopage> <$nopage>

ActiveX/VBA>VBA >

VBA

VisualBasic6VBA“”VisualBasic6VBA

UserForm——ShowModal

1. VBAIDE“”

2. “”“”

1. VBAIDE“”

2. “”“”ShowModalFalse

3. AcFocusCtrl( AcFocusCtrl.dll)AcFocusCtrl

ActiveX/VBA>VBA >VBA >

“”

AutoCAD ®

“”“”AutoCAD

<$nopage> <$nopage>

ActiveX/VBA>VBA >VBA >

ActiveX/VBA>VBA >VBA >>

SHIFT

1.

2.

1.

2.

3.

ActiveX/VBA>VBA >VBA >>

VBAVBAIDE“”

SHIFT

ActiveX/VBA>VBA >VBA >>

“”

1.

2. “”F4

3. “”

4.

Microsoft

ActiveX/VBA>VBA >VBA >>

“”“”“”

“”

ActiveX/VBA>VBA >VBA >

VBAShowShow

AutoCADAutoCADVBAHideHideAutoCADHide

HideShow

“UserForm1”

PublicSubMyApplication()

UserForm1.Show

EndSub

VBARUNAutoCAD

“UserForm1”

PublicSubMyAppHide()

UserForm1.Hide

EndSub

ActiveX/VBA>VBA >VBA >

VBALoadShow

Show

LoadShow

HideVBAShowHideLoadUnload

VBAShowHideLoadUnload

Show

Hide

Load

Unload Unload

ActiveX/VBA>VBA >VBA >

AutoCADVBAHideUnload

AutoCADAutoCADHideShow

ActiveX/VBA>VBA >

VBVBA

I/O

AutoCAD

AutoCAD

ActiveX/VBA>VBA >>

VBA

AutoCAD

ActiveX/VBA>VBA >>

VBVBA OnError

OnError

OnErrorResumeNext

OnErrorGoToLabel

OnErrorGoTo0

OnErrorResumeNextAutoCADOnErrorResumeNext

OnErrorGoToLabel

OnErrorResumeNext

OnErrorResumeNext

SubCh11_ColorEntities()

DimentryAsObject

OnErrorResumeNext

ForEachentryInThisDrawing.ModelSpace

entry.Color=acRed

Nextentry

EndSub

OnErrorGoTo

OnErrorGoToMyErrorHandling

SubCh11_ColorEntities2()

DimentryAsObject

OnErrorGoToMyErrorHandler

ForEachentryInThisDrawing.ModelSpace

entry.Color=acRed

Nextentry

'

ExitSub

MyErrorHandler:

Msgboxentry.EntityName+"isonalockedlayer."+_

"Thehandleis:"+entry.Handle

ResumeNext

EndSub

OnErrorGoTo0 OnErrorResumeNext OnError

GoToLabel OnErrorGoTo0

ActiveX/VBA>VBA >>

VBVBAErrNumberDescriptionSourceHelpFileHelpContextLastDLLErrorErrNumberDescriptionNumberDescription

Number

ActiveX/VBA>VBA >>

AutoCAD

AutoCADInitializeUserInput

ActiveX/VBA>VBA >

VBA

VBAVBAIDE“”“” “” “”

ActiveX/VBA>VBA >

VBA

AutoCADMacroVBAMacro

-VBARUNfilename.dvb!modulename.macroname

filename modulename macronameAutoCAD

ActiveX/VBA>VBA >

VBA

VBA

VBAAutoCAD acad.dvb

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

(defunS::STARTUP()

(command"_VBALOAD""myproj.dvb")

)

ActiveX/VBA>VBA >

VBA

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

(defunS::STARTUP()

(command"_-vbarun""drawline")

)

AcadStartupVBAVBA acad.dvb AcadStartup

ActiveX/VBA>VBA >

VBAIDE

“VBA”“VisualBasic”VBAVBAIDE

“VBA” VBALOAD“VBA”FILEDIAFILEDIA1

ActiveX/VBA>VBA >

AutoCADVBA

ThisDrawing ThisDrawing

AutoCADDocumentApplicationMenuBar

AutoCADAutoCADAutoCAD

ActiveX/VBA>VBA >

VBA

AutoCAD

VBA

VBA

VBA VBAVisualBasic6

ActiveX/VBA>VBA >>

VisualBasic6

VisualBasic6AutoCAD(EXE)

ActiveX/VBA>VBA >

64

Microsoft64VBA3264AutoCAD64AutoCADVBA3264“thunking”

VBA64AutoCAD32AutoCADVBAIDEAutoCAD

AutoCADVBAAutoCADObjectId32

ActiveX/VBA>VBA >64>

VBAAutoCAD

64326432DLL64EXEDLL6464

VB New64AutoCADCOMDLLVBA3264DLL

DimcolorAsAcadAcCmColor

Setcolor=NewAcadAcCmColor

DimcolAsNewAcadAcCmColor

color.SomeMethod()

DimcolorAsAcadAcCmColor

Setcolor=AcadApplication.GetInterfaceObject(“Autocad.AcCmColor.17”)

IDispatchAcadApplication.GetInterfaceObject(“ProgIdOfAcAnyObject”)

IUnknown AcSmSheetSetAcSmSheetMgr 64VBAVB.Net

ActiveX/VBA>VBA >64>

ObjectId

AutoCAD200864ID64( __int64)32VBA“32” ObjectID32()

64

VBAID32IDID64ID32IDVBAAutoCAD64ID

32ID

DimsplineObjAsAcadSpline

DimobjectIDAsLong

objectID=splineObj.objectID

DimtempObjAsAcadObject

SettempObj=ThisDrawing.ObjectIdToObject(objectID)

64

DimsplineObjAsAcadSpline

DimobjectIDAsLong

objectID=splineObj.objectID32

DimtempObjAsAcadObject

SettempObj=ThisDrawing.ObjectIdToObject32(objectID)

VBAIDID

DimsplineObjAsAcadSpline

DimobjectIDAsLong

objectID=splineObj.objectID

DimtempObjAsAcadObject

SettempObj=ThisDrawing.ObjectIdToObject(objectID)

64

DimsplineObjAsAcadSpline

DimobjectHandleAsString

objectHandle=splineObj.Handle

DimtempObjAsAcadObject

SettempObj=ThisDrawing.HandleToObject(objectHandle)

AutoCADVBAVBAVBAVB.Net

ActiveX/VBA>VBA >64>

32

AutoCAD200832

64VBA

GetBlockAttributeValue32 32ID

GetBlockTableRecordId32 32ID

GetDataLink32 32ID

GetFieldId32 32ID

GetGridLinetype32 32ID

Key32 64CopyObjectsID

ObjectID32 64ID

ObjectIDtoObject32 64ID

OwnerID32 64ID

SetBlockAttributeValue32 32ID

SetBlockTableRecordId32 32ID

SetDataLink32 32ID

SetFieldId32 32ID

SetGridLinetype32 32ID

Value32 64ID

ActiveX/VBA>

WindowsAPI

ActiveXAutoCADActiveXMicrosoftExcelMicrosoftWord

VisualLISPWindowsVBAWindowsAPI

ActiveX/VBA>WindowsAPI >

VisualLISP

VisualLISP®ActiveX ®ActiveXActiveXVisualLISPVBARUNVBA

ActiveXVBASendCommandVisualLISPActiveXVBAAutoCAD

VisualLISPActiveX AutoLISPDeveloper'sGuide

ActiveX/VBA>WindowsAPI >

Windows

AutoCAD®ActiveXActiveXMicrosoftExcelMicrosoftWordAutoCADAutoCADAutoCADAutoCADAutoCADMicrosoftExcel

AutoCADActiveXActiveXActiveX

AutoCADMicrosoft

ActiveX

1. ActiveX

2.

3. AutoCAD

ActiveX

ActiveX/VBA>WindowsAPI >Windows >

ActiveX

VBA

VBAIDEVBAIDE“”“”VBAMicrosoftExcelMicrosoftExcel

VBA

VBA

1. VBAIDE“”“”

2. “”

3. “”

ActiveX/VBA>WindowsAPI >Windows >

Dim Dim Dim Excel.Application

DimExcelAppObjasExcel.Application

SetNew SetExcelNewExcel

SetExcelAppObj=NewExcel.Application

New

ActiveX/VBA>WindowsAPI >Windows >

Excel

ExcelAppObj.Visible=TRUE

VBA

ActiveX/VBA>WindowsAPI >Windows >>

ApplicationQuitExcel

ExcelAppObj.Application.Quit

ExcelAutoCAD

Excel

1. sample/activeX/attrib.dwg

2. AutoCADVBAIDEVBAIDE

3. VBAIDE“” “”“MicrosoftExcel8.0”

4. VBA“”

SubCh12_Extract()

DimExcelAsExcel.Application

DimExcelSheetAsObject

DimExcelWorkbookAsObject

DimRowNumAsInteger

DimHeaderAsBoolean

DimelemAsAcadEntity

DimArray1AsVariant

DimCountAsInteger

'Excel

SetExcel=NewExcel.Application

'

SetExcelWorkbook=Excel.Workbooks.Add

SetExcelSheet=Excel.ActiveSheet

ExcelWorkbook.SaveAs"Attribute.xls"

RowNum=1

Header=False

'

'

ForEachelemInThisDrawing.ModelSpace

Withelem

'

'

IfStrComp(.EntityName,"AcDbBlockReference",1)_

=0Then

If.HasAttributesThen

'

Array1=.GetAttributes

'

'Excel

ForCount=LBound(Array1)ToUBound(Array1)

IfHeader=FalseThen

IfStrComp(Array1(Count).EntityName,_

"AcDbAttribute",1)=0Then

ExcelSheet.Cells(RowNum,_

Count+1).value=_

Array1(Count).TagString

EndIf

EndIf

NextCount

RowNum=RowNum+1

ForCount=LBound(Array1)ToUBound(Array1)

ExcelSheet.Cells(RowNum,Count+1).value_

=Array1(Count).textString

NextCount

Header=True

EndIf

EndIf

EndWith

Nextelem

Excel.Application.Quit

EndSub

ActiveX/VBA>WindowsAPI >

VBAWindowsAPI

Windows®APIWindows

WindowsAPIWindowsAPI

WindowsAPIAPI Declare Declare

DLL

DLL

DeclareVBAPrivate Declare

Declare Declare Declare

DeclareMicrosoft Win32api.txtVisualBasic6Office Declare

MicrosoftVBA DeclareMicrosoftWindowsAPIMircrosoftDeveloperNetworkCDWindowsAPIDanApplemanBasicProgrammer'sGuidetotheWin32APIVisualBasic6

<$nopage>:

ActiveX/VBA>

ActiveX/VBA

ActiveXVisualBasicforApplications(VBA)AutoCAD

AutoCADVBA

<$nopage>:

ActiveX/VBA>ActiveX/VBA >

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

VBAIDE

1. AutoCAD

2. vbaideENTERVBAIDEVBAIDE“AutoCADVBA”VBAIDE

ActiveX/VBA>ActiveX/VBA >

AutoCAD: gardenpath

:

:

:

:

:

ActiveX/VBA>ActiveX/VBA >

GardenpathActiveX

1. vbaideENTER

2. VBAIDE“”“”“”

3. “”

Constpi=3.14159

'

Functiondtr(aAsDouble)AsDouble

dtr=(a/180)*pi

EndFunction

Functiondtr(aAsDouble)AsDoubleENTER

EndFunction Endpi3.14159 pi3.14159 dtr dtr a180piVBA

4. “” “Global1” gardenpath.dvb

1. dtr

'

Functiondistance(spAsVariant,epAsVariant)_

AsDouble

DimxAsDouble

DimyAsDouble

DimzAsDouble

x=sp(0)-ep(0)

y=sp(1)-ep(1)

z=sp(2)-ep(2)

distance=Sqr((Sqr((x^2)+(y^2))^2)+(z^2))

EndFunction

2.

ActiveX/VBA>ActiveX/VBA >

Gardenpath

Utility

gpuser

ActiveX/VBA>ActiveX/VBA >>

VBAIDE“” Constpi=3.14159

Privatesp(0To2)AsDouble

Privateep(0To2)AsDouble

PrivatehwidthAsDouble

PrivatetradAsDouble

PrivatetspacAsDouble

PrivatepangleAsDouble

PrivateplengthAsDouble

PrivatetotalwidthAsDouble

Privateangp90AsDouble

Privateangm90AsDouble

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

ActiveX/VBA>ActiveX/VBA >>

gpuser

gpuser distance

'

PrivateSubgpuser()

DimvarRetAsVariant

varRet=ThisDrawing.Utility.GetPoint(_

,"Startpointofpath:")

sp(0)=varRet(0)

sp(1)=varRet(1)

sp(2)=varRet(2)

varRet=ThisDrawing.Utility.GetPoint(_

,"Endpointofpath:")

ep(0)=varRet(0)

ep(1)=varRet(1)

ep(2)=varRet(2)

hwidth=ThisDrawing.Utility._

GetDistance(sp,"Halfwidthofpath:")

trad=ThisDrawing.Utility._

GetDistance(sp,"Radiusoftiles:")

tspac=ThisDrawing.Utility._

GetDistance(sp,"Spacingbetweentiles:")

pangle=ThisDrawing.Utility.AngleFromXAxis(_

sp,ep)

totalwidth=2*hwidth

plength=distance(sp,ep)

angp90=pangle+dtr(90)

angm90=pangle-dtr(90)

EndSub

gpuser DimvarRetAsVariant varRet()

varRet=ThisDrawing.Utility.GetPoint(,"Start

pointofpath:")GetPointVBA

GetPoint ThisDrawing ThisDrawing( .) UtilityUtility GetPoint

GetPoint varRet sp

GetDistance( hwidth)( trad)( tspac)GetDistanceGetDistanceAutoCAD

pangleAngleFromXAxis2 plengthdistance angp90 angm90/90

gpuser

ActiveX/VBA>ActiveX/VBA >

gpuser

'

PrivateSubdrawout()

Dimpoints(0To9)AsDouble

DimplineAsAcadLWPolyline

DimvarRetAsVariant

varRet=ThisDrawing.Utility.PolarPoint(_

sp,angm90,hwidth)

points(0)=varRet(0)

points(1)=varRet(1)

points(8)=varRet(0)

points(9)=varRet(1)

varRet=ThisDrawing.Utility.PolarPoint(_

varRet,pangle,plength)

points(2)=varRet(0)

points(3)=varRet(1)

varRet=ThisDrawing.Utility.PolarPoint(_

varRet,angp90,totalwidth)

points(4)=varRet(0)

points(5)=varRet(1)

varRet=ThisDrawing.Utility.PolarPoint(_

varRet,pangle+dtr(180),plength)

points(6)=varRet(0)

points(7)=varRet(1)

Setpline=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

EndSub

AddLightweightPolyline

PolarPoint( sp)( hwidth)-90PolarPoint X Y

plength widthPolarPoint( varRet)

AddLightweightPolylineModelSpaceAutoCAD

ActiveX/VBA>ActiveX/VBA >

VBAIDE“” drawout

'

'

PrivateSubdrow(pdAsDouble,offsetAsDouble)

Dimpfirst(0To2)AsDouble

Dimpctile(0To2)AsDouble

Dimpltile(0To2)AsDouble

DimcirAsAcadCircle

DimvarRetAsVariant

varRet=ThisDrawing.Utility.PolarPoint(_

sp,pangle,pd)

pfirst(0)=varRet(0)

pfirst(1)=varRet(1)

pfirst(2)=varRet(2)

varRet=ThisDrawing.Utility.PolarPoint(_

pfirst,angp90,offset)

pctile(0)=varRet(0)

pctile(1)=varRet(1)

pctile(2)=varRet(2)

pltile(0)=pctile(0)

pltile(1)=pctile(1)

pltile(2)=pctile(2)

DoWhiledistance(pfirst,pltile)<(hwidth-trad)

Setcir=ThisDrawing.ModelSpace.AddCircle(_

pltile,trad)

varRet=ThisDrawing.Utility.PolarPoint(_

pltile,angp90,(tspac+trad+trad))

pltile(0)=varRet(0)

pltile(1)=varRet(1)

pltile(2)=varRet(2)

Loop

varRet=ThisDrawing.Utility.PolarPoint(_

pctile,angm90,tspac+trad+trad)

pltile(0)=varRet(0)

pltile(1)=varRet(1)

pltile(2)=varRet(2)

DoWhiledistance(pfirst,pltile)<(hwidth-trad)

Setcir=ThisDrawing.ModelSpace.AddCircle(_

pltile,trad)

varRet=ThisDrawing.Utility.PolarPoint(_

pltile,angm90,(tspac+trad+trad))

pltile(0)=varRet(0)

pltile(1)=varRet(1)

pltile(2)=varRet(2)

Loop

EndSub

'

PrivateSubdrawtiles()

DimpdistAsDouble

DimoffsetAsDouble

pdist=trad+tspac

offset=0

DoWhilepdist<=(plength-trad)

drowpdist,offset

pdist=pdist+((tspac+trad+trad)*Sin(dtr(60)))

Ifoffset=0Then

offset=(tspac+trad+trad)*Cos(dtr(60))

offset=0

EndIf

Loop

EndSub

drow

drowPolarPointPolarPoint WhileWhilePolarPoint( trad)( tspac) while

drawtiles drow While drow6060

drawtiles If06000

ActiveX/VBA>ActiveX/VBA >

GardenpathVBAIDE“” drawtiles

'

Subgardenpath()

DimsblipAsVariant

DimscmdeAsVariant

gpuser

sblip=ThisDrawing.GetVariable("blipmode")

scmde=ThisDrawing.GetVariable("cmdecho")

ThisDrawing.SetVariable"blipmode",0

ThisDrawing.SetVariable"cmdecho",0

drawout

drawtiles

ThisDrawing.SetVariable"blipmode",sblip

ThisDrawing.SetVariable"cmdecho",scmde

EndSub

path gpuserGetVariableBLIPMODECMDECHO sblip scmdeSetVariable0 drawoutdrawtilesSetVariable

gardenpath

ActiveX/VBA>ActiveX/VBA >

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

VBAIDE gardenpathF8 gpusergpuserF8

gpuserF8GetPoint“” “”“”VBAIDE“”

F8GetPointGetPointAutoCADAutoCADGetPoint

GetPointF8AutoCAD

ActiveX/VBA>ActiveX/VBA >

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

: 9,8

: 2

: 0.2

: 0.1

Gardenpath

ActiveX/VBA>ActiveX/VBA >

GardenpathVBAIDE

gardenpath.dvb gpdialog.dvb gpdialog.dvbAutoCAD

“”

ActiveX/VBA>ActiveX/VBA >>

“”

VBAIDE

1. “”“”

2. (

)(

)(

)(

)

3.

1. “OptionButton1”“”“”OptionButton1

()=gp_polyCaption=PolygonControlTipText=PolygonTileShapeAccelerator=P

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

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

TabStop=True

2. “Label2”“”Label2()=label_tspacCaption=SpacebetweentilesTabStop=True

3. “Label3”“”Label3()=label_tsidesCaption=NumberofsidesTabStop=True

1. “TextBox1”“”TextBox1()=gp_trad

2. “TextBox2”“”TextBox2()=gp_tspac

3. “TextBox3”“”TextBox3()=gp_tsides

1. “CommandButton1”“”CommandButton1

()=acceptCaption=OKControlTipText=AccepttheoptionsAccelerator=ODefault=True

2. “CommandButton2”“”CommandButton2

()=cancelCaption=CancelControlTipText=CanceltheoperationAccelerator=C

3. “”()=gpDialogCaption=GardenPath

4.

ActiveX/VBA>ActiveX/VBA >>

“”

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

“”“” gpDialog“”

“”

“” ThisDrawing“”

ActiveX/VBA>ActiveX/VBA >>

1. ThisDrawing

2. Declarations

PublictradAsDouble'

PublictspacAsDouble'

PublictsidesAsInteger'

PublictshapeAsString'

trad tspac tsides tshape

3. gpuser

trad=ThisDrawing.Utility._

GetDistance(sp,"Radiusoftiles:")

tspac=ThisDrawing.Utility._

GetDistance(sp,"Spacingbetweentiles:")

4. 3

LoadgpDialog

gpDialog.Show

5.

'

SubDrawShape(pltile)

DimangleSegmentAsDouble

DimcurrentAngleAsDouble

DimangleInRadiansAsDouble

DimcurrentSideAsInteger

DimvarRetAsVariant

DimaCircleAsAcadCircle

DimaPolygonAsAcadLWPolyline

ReDimpoints(1Totsides*2)AsDouble

'

SelectCasetshape

Case"Circle"

SetaCircle=ThisDrawing.ModelSpace._

AddCircle(pltile,trad)

Case"Polygon"

angleSegment=360/tsides

currentAngle=0

ForcurrentSide=0To(tsides-1)

angleInRadians=dtr(currentAngle)

varRet=ThisDrawing.Utility.PolarPoint(pltile,_

angleInRadians,trad)

points((currentSide*2)+1)=varRet(0)

points((currentSide*2)+2)=varRet(1)

currentAngle=currentAngle+angleSegment

NextcurrentSide

SetaPolygon=ThisDrawing.ModelSpace._

AddLightWeightPolyline(points)

aPolygon.Closed=True

EndSelect

EndSub

SelectCase tshape

6. drow

Setcir=ThisDrawing.ModelSpace.AddCircle(pltile,trad)

DrawShape(pltile)'

ActiveX/VBA>ActiveX/VBA >>

DrawShape

1. gpDialog“”

2.

PrivateSubgp_poly_Click()

gp_tsides.Enabled=True

ThisDrawing.tshape="Polygon"

EndSub

PrivateSubgp_circ_Click()

gp_tsides.Enabled=False

ThisDrawing.tshape="Circle"

EndSub

gp_poly_Click() gp_circ_Click()“ _Click”“”

3. PrivateSubgp_poly_Click()/ gp_poly Click DblClick gp_poly Click“” tshape

“ ” gp_circ Click tshape“ ”

4. “”

PrivateSubaccept_Click()

IfThisDrawing.tshape="Polygon"Then

ThisDrawing.tsides=CInt(gp_tsides.text)

If(ThisDrawing.tsides<3#)Or_

(ThisDrawing.tsides>1024#)Then

MsgBox"Enteravaluebetween3and"&_

"1024forthenumberofsides."

ExitSub

EndIf

EndIf

ThisDrawing.trad=CDbl(gp_trad.text)

ThisDrawing.tspac=CDbl(gp_tspac.text)

IfThisDrawing.trad<0#Then

MsgBox"Enterapositivevaluefortheradius."

ExitSub

EndIf

If(ThisDrawing.tspac<0#)Then

MsgBox"Enterapositivevalueforthespacing."

ExitSub

EndIf

GPDialog.Hide

EndSub

gp_tsides“Text” CInt31024“” CDbl

gpDialog.Hide

5. “”

PrivateSubcancel_Click()

UnloadMe

End

EndSub

Initialize

6.

PrivateSubUserForm_Initialize()

gp_circ.Value=True

gp_trad.Text=".2"

gp_tspac.Text=".1"

gp_tsides.Text="5"

gp_tsides.Enabled=False

ThisDrawing.tsides=5

EndSub

tsides tsides3 DrawShapepoints tsides

AutoCAD

ActiveX/VBA>

VisualLISPActiveX/VBA

VisualLISPActiveXVBAVisualLISPActiveXVBA

VisualLISPActiveX/VBA

ActiveX/VBA>VisualLISPActiveX/VBA >

VisualLISPActiveX/VBA

VisualLISPActiveX ®VBAVisualBasic6“AutoCAD.Application”ActiveXAutomationVisualBasic6

VisualLISPActiveX/VBA

AutoLISP ActiveXVBAVisualBasic6

+ +

- -

* *

/ /

= =

/= <>

< <

<= <=

/= <>

> >

>= >=

~

1+ +

1- -

abs Abs

acad_colordlg

acad_helpdlg HELP

acad_strlsort SORT

action_tile

add_list

ads AutoCAD.Application.ListADS

alert MsgBox

and

angle AutoCAD.Application.ActiveDocument.Utility.AngleFromXAxis

angtof AutoCAD.Application.ActiveDocument.Utility.AngleToReal

angtos AutoCAD.Application.ActiveDocument.Utility.AngleToString

append

apply

arx AutoCAD.Application.ListARX

arxload AutoCAD.Application.LoadARX

arxunload AutoCAD.Application.UnloadARX

ascii Asc

assoc

atan Atn

atof CDbl

atoi CInt

atom IS

atoms-family

autoarxload

autoload

Boole

boundp IS

car/cdr

chr Chr

client_data_tile

close AutoCAD.Application.Documents.Close

command AutoCAD.ActiveDocument.SendCommand

cond SelectCase

cons AutoCAD.Application.collection.Add<>

cos Cos

cvunit

defun End

dictadd AutoCAD.Application.ActiveDocument.Dictionaries.Add

dictnext AutoCAD.Application.ActiveDocument.Dictionaries.Item

dictremove AutoCAD.Application.ActiveDocument.Dictionaries.Dictionary.Delete

dictrename AutoCAD.Application.ActiveDocument.Dictionaries.Dictionary.Rename

dictsearch AutoCAD.Application.ActiveDocument.Dictionaries.Dictionary.GetNameGetObject

dimx_tiledimy_tile

distance AutoCAD.Application.Utility.GetDistance

distof

done_dialog

end_image

end_list

entdel AutoCAD.Application.ActiveDocument.collection_object.Delete

entget AutoCAD.Application.ActiveDocument.collection_object.property

entlast AutoCAD.Application.ActiveDocument.Modelspace.Item-1

entmake AutoCAD.Application.ActiveDocument.Modelspace.Add<>

entmakex AutoCAD.Application.ActiveDocument.Modelspace.Add<>

entmod

entnext AutoCAD.Application.ActiveDocument.collection.Item

entsel AutoCAD.Application.ActiveDocument.SelectionSets//

entupd AutoCAD.Application.ActiveDocument.Modelspace.object.Update

eq

equal Eqv

*error* Error//

eval

exit AutoCAD.Application.Quit

exp Exp

expand

expt ^

fill_image

findfile Dir

fix FixIntCint

float CDbl

foreach ForEach...Next

gc AutoCAD.Application.ActiveDocument.PurgeAll

gcd

get_attr

get_tile

getangle AutoCAD.Application.ActiveDocument.Utility.GetAngle

getcfg AutoCAD.Application.Preferences.property

getcname

getcorner AutoCAD.Application.ActiveDocument.Utility.GetCorner

getdist AutoCAD.Application.ActiveDocument.Utility.GetDistance

getenv AutoCAD.Application.Preferences.property

getfiled

getint AutoCAD.Application.ActiveDocument.Utility.GetInteger

getkword AutoCAD.Application.ActiveDocument.Utility.GetKeyword

getorient AutoCAD.Application.ActiveDocument.Utility.GetOrientation

getpoint AutoCAD.Application.ActiveDocument.Utility.GetPoint

getreal AutoCAD.Application.ActiveDocument.Utility.GetReal

getstring AutoCAD.Application.ActiveDocument.Utility.GetString

getvar AutoCAD.Application.GetVariable

graphscr AppActivateAutoCAD.Application.Caption

grclear Obsolete

grdraw

grread

grtext AutoCAD.Application.ActiveDocument.Utility.Prompt

grvecs

handent AutoCAD.Application.ActiveDocument.ModelSpace.object.Handle

help HELP

if If…Then…Else

initget AutoCAD.Application.ActiveDocument.Utility.InitializeUserInput

inters AutoCAD.Application.ActiveDocument.Modelspace.object.

IntersectWith

itoa Str

lambda

last arrayname(UBound(arrayname))

length UBound

list ReDim

listp IsArray

load_dialog

load AutomationAutoLISP

log Log

logand And

logior Or

lsh Imp

mapcar

max Max

mem

member

menucmd AutoCAD.Application.MenuBar

menugroup AutoCAD.Application.MenuGroup

min Min

minusp <0

mode_tile

namedobjdict AutoCAD.Application.ActiveDocument.Dictionaries

nentsel AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.SelectAtPoint

nentselp AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.SelectAtPoint

new_dialog

not

nth object(n)

null IsNull

numberp TypeName

open Open

or

osnap SetVariableOSMODE

polar AutoCAD.Application.ActiveDocument.Utility.PolarPoint

prin1 AutoCAD.Application.ActiveDocument.Utility.Prompt

princ AutoCAD.Application.ActiveDocument.Utility.Prompt

print AutoCAD.Application.ActiveDocument.Utility.Prompt

progn

prompt AutoCAD.Application.ActiveDocument.Utility.Prompt

quit AutoCAD.Application.Quit

quote

read

read-char Input

read-line

redraw AutoCAD.Application.ActiveDocument.Modelspace.object.Update

regapp AutoCAD.Application.ActiveDocument.RegisteredApplications.Add

rem Mod

repeat For…Each,While,

reverse

rtos AutoCAD.Application.ActiveDocument.Utility.RealToString

set Set

set_tile

setcfg AutoCAD.Application.Preferences.property

setfunhelp

setq Set

setvar AutoCAD.Application.SetVariable

sin Sin

setview AutoCAD.Application.ActiveDocument.Viewports.Viewport.SetView

slide_image

snvalid

sqrt Sqr

ssadd AutoCAD.Application.ActiveDocument.SelectionSets.Add

ssdel AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.Delete

ssget AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.SelectOnScreen

ssgetfirst

sslength AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.Count

ssmemb IDSelectionSet

ssname AutoCAD.Application.ActiveDocument.SelectionSets.SelectionSet.Name

ssnamex

sssetfirst AutoCAD.Application.ActiveDocument.PickfirstSelectionSet

startapp Shell

start_dialog

start_image

start_list

strcase StrConv

strcat &

strlen Len

subst

substr Mid

tablet

tblnext AutoCAD.Application.ActiveDocument.collection_object.Item

tblobjname AutoCAD.Application.ActiveDocument.collection_object.Name

tblsearch AutoCAD.Application.ActiveDocument.collection_object.Name

term_dialog

terpri

textbox AutoCAD.Application.ActiveDocument.space.object.GetBoundingBox

textpage

textscr

trace

trans AutoCAD.Application.ActiveDocument.Utility.TranslateCoordinates

type TypeName

unload_dialog

untrace

vector_image

ver AutoCAD.Application.Version

vports AutoCAD.Application.ActiveDocument.Viewports

wcmatch Like

while While…Wend

write-char Print

write-line Print

xdroom

xdsize

zerop =0

top related