AutoCAD VBA
一、AutoCAD VBA简介
?VBA(Visual Basic for Application)
VBA是AutoCAD的一种开发工具,具有强大的功能。Microsoft VBA是一种面向对象的编程环境,它与VB一样具有很强的开发功能。VBA与VB之间的区别就是VBA AutoCAD在同一处理空间运行,为AutoCAD提供智能和快速的编程环境。VBA
功能:创建对话框和其它界
? ? ? ?
?
面;
创建工具栏;
建立模块级宏指令; 提供建立类模块的功能;
具有完善的数据访问和管理能力;(ADO、DAO、RDO,C/S)
能够使用Win32API提供的功能,建立应用程序与操作系统之间的通信;
在AutoCAD中使用VBA的好处Visual Basic编程环境易学易用;
? VBA作为AutoCAD的一个过程运行,这使程序执行速度变得非常快; ? 对话框结构快速有效,允许开发者在设计时启动应用程序并能得到快速反
馈;(易于代码纠错和维护)
? 对象可以独立出来,也可以嵌入AutoCAD图形。灵活性很强。
二、理解类和对象在AutoCAD VBA界面中有许多不同类型的对象。
例如:
? 图形对象,如线、弧、文本和标注都是对象;
? 样式设置,如线型和标注样式均为对象; ? 组织结构,如图层、组合和图块也是对象; ? 图形显示,如视图和视口都是对象;
? 甚至图形和AutoCAD应用程序本身也是对象。对象是通过分层方式来组织
的,应用程序对象为根对象。这种分层结构的视图被归结为对象模型。对象模型提供了你访问下一层对象的途径。
AutoCAD ApplicationPreferencesDocumentsDocumentBlocksBlocksDocument3DFace3DPoly3DSolidArcAttributeAttributeRefBlockrefCircleDim3PointAngularDimAlignedModelSpacePaperSpacePViewPortDictionariesDictionarieXRecordDimStylesGroupsLayersLayoutsLineTypesplotConfigurationsRigisteredAppsSelectionSetsViewPortsTextStylesUCSsViewsDatabasePreferencesPlotUtilityHyperLinksHyperLinkDimAngularDimDiametricDimOrdinateDimRadialDimRotatedEllipseExternalReferenceHatchLeaderLightWeightPolylineDimStyleGroupLayerLayoutLineTypeplotConfigurationRigisteredAppSelectionSetViewPortTextStyleUCSViewLineMInsertBlockMLineMtextPointPolygonFaceMeshPolylinePolygonMeshRasterRayRegionPopupMenusPopupMenuPopupMenuItemshapeSolidSPlineTextToleranceTraceMenuBarPopupMenuMenuGroupsMenuGroupToolBarsToolBarsToolBarItemXLine 集合对象是预先定义的对象,它包含所有相似对象的实例(即这些对象的父对象)。集合对象有以下的对象:
文档(Documents)集合
包含所有在当前AutoCAD进程打开的文档。 模型空间(ModelSpace)集合
包含在模型空间中的所有图形对象(图元)。 图纸空间(PaperSpace)集合
包含在活动图纸空间布局中的所有图形对象(图元)。 图块(Block)对象
包含在指定图块定义中的所有图元。 图块(Blocks)集合
包含在图形中的所有图块。 字典(Dictionaries)集合
包含在图形中的所有字典。 标注样式(DimStyles)集合
包含在图形中的所有标注样式。 组合(Groups)集合
包含在图形中的所有组合。 超级链接(Hyperlinks)集合
包含提供图元的所有超级链接。 图层(Layers)集合
包含在图形中的所有图层。 布局(Layouts)集合
包含在图形中的所有布局。 线型(Linetypes)集合
包含在图形中的所有线型。 菜单条(MenuBar)集合
包含当前显示于AutoCAD的所有菜单。 菜单组(MenuGroups)集合
包含当前装载到AutoCAD中的所有菜单和工具栏。 注册应用程序(RegisteredApplications)集合
包含在图形中的所有注册的应用程序。 选择集(SelectionSets)集合
包含在图形中所有的选择集。 字型(TextStyles)集合
包含在图形中所有的文字样式。 UCSs 集合
包含在图形中所有的用户坐标系统(UCS)。 视图(Views)集合
包含在图形中所有的视图。 视口(Viewports)集合
包含在图形中所有的视口。
三、理解对象的属性和方法
每一对象都关联着属性和方法。属性描述着单个对象的外观,而方法是一种可在单个对象上执行的行为。当对象创建后,你就可通过属性和方法查询和编辑对象。
例如,一个圆对象有圆心属性。该属性以三维世界坐标系统的坐标描述了圆的圆心。更改圆的圆心,你只要简单地将该属性设定为新的坐标。圆对象也有称为偏移(Offset)的方法。该方法可在相对于现存圆的指定偏移距离创建一个新的对象。关于圆对象所有属性和方法的列表,请参考AutoCAD ActiveX和VBA参考中的圆对象。
四、开发实例
目 录
1、程序和文档窗口设置.............................................................................................. 4 2、视图.......................................................................................................................... 5 3、二维图形绘制.......................................................................................................... 5 4、图层.......................................................................................................................... 7 5、用户输入.................................................................................................................. 8 7、栅格图像 Raster................................................................................................ 10 8、计算面积................................................................................................................ 10 9、加载菜单................................................................................................................ 11 10、‘增加菜单按钮和创建菜单按钮 ........................................................................ 11 11、加载线型.............................................................................................................. 12 12、文件File............................................................................................................. 13 13、控制命令输入窗口SendCommand....................................................................... 14 14、三维绘图.............................................................................................................. 14 15、块 (综合练习).................................................................................................... 15 16、运行宏.................................................................................................................. 17
1、程序和文档窗口设置
'''***************************************************************************** Sub MyWindow()
MsgBox ThisDrawing.WindowTitle '= \杨彪绘图01\ ThisDrawing.WindowState = acMin 'acMax 'acNorm End Sub
Sub SetMyAcadTitle() Dim hw&
hw = GetParent(GetParent(ThisDrawing.hwnd)) SetWindowText hw, \杨彪地质编录出图子系统\ Call InitialDZBL '初始化