VBA开发AUTOCAD实现参数化绘图_第1页
VBA开发AUTOCAD实现参数化绘图_第2页
VBA开发AUTOCAD实现参数化绘图_第3页
VBA开发AUTOCAD实现参数化绘图_第4页
VBA开发AUTOCAD实现参数化绘图_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.:.; VBA开发AUTOCAD实现参数化绘图 王假设慧 Realizing The Parameter-Drawing taking the VBA and AUTOCAD(.山西大学工程学院,山西省 太原,) Wang Ruo HuiEngineering Colledge of SHANXI University, Taiyuan )摘要: 引见了采用VBAVisual Basic for Application进展AutoCAD的二次开发,运用AutoCAD ActiveX Automation接口技术访问AutoCAD对象,采用ADO实现AUTOCAD与Microsoft Acce

2、ss的数据通讯,实现程序参数化绘图的根本思绪及程序设计流程. 关键词:VBA AutoCAD ActiveX Automation ADO 参数化绘图Abstract: Taking the ActiveX Automation of VBA and AutoCAD to access the AutoCAD drawings, and the ADO to make the data communication between the AUTOCADand ACCESS , the parameter-drawing can be well realized in the way what

3、is described in the article .Key words:VBA AutoCAD ActiveX Automation ADOthe parameter-drawing 引言:传统的人机交互式绘图普通需求用准确的尺寸值定义几何元素,输入的每一条线都必需有确定的位置,图形一旦建立,即使构造类似但想改动图形大小尺寸,只能对图形进展编辑。而在工程设计中,一方面,进展新产品设计时不可防止地需求多次反复修正,需求进展多方面的综合协调和优化;另一方面,许多的专业图纸设计中,很多图形构造具有一定的类似性,往往只是尺寸的大小不同,其图形随尺寸参数的变化而相应变化。因此,希望有一种比交互式绘

4、图更方便、更高效、更适宜构造类似图形绘制的方法.为理处理这个问题,他们可研制出一种绘图软件,图中尺寸参数经过交互方式输入,随后经过运转有关程序,确定一切的绘图信息,自动绘出图形,这种任务方式通常称为程序参数化绘图.这就是参数化绘图要处理的问题,同时它也是CAD系统很重要的一个环节. 程序参数化绘图的本质程序参数化绘图主要适用于图形构造方式根本固定而构造尺寸参数变化的图形。程序参数化绘图的本质,就是将图形信息记录在程序中。图形的描画通常可分为:图形的拓扑关系、图形的几何参数以及这些几何参数与图形构造参数之间的联络。通常用一组变量记录图形的几何参数,用一系列的赋值语句表达几何参数与构造参数之间的关

5、系,然后用一系列的调用语句来描画图形的拓扑关系。如下图图形的几何参数是四个点的坐标x,y,x,y,x,y和x,y,构造参数是两个尺寸a和b。这些参数之间的关系为:x=x;y=y;x=x;y=y;x=x+a;y=y+b。 x,y x,y b x,y a x,y 图 图形的描画. 程序参数化绘图的实现途径 为了实现参数化绘图,需求建立一个计算机图形软件系统运用这个系统可以简化图形设计运用程序的编制,并能方便地运用计算机程序实现图形地输入和输出建立一个图形系统可以有三种方式:()设计公用图形言语()修正高级程序设计言语,使其具有图形处置的功能()建立图形设计程序包前两种方式都需求用低级或高级言语重写

6、一个编译器普通来说,修正或者重写一个编译器的任务量比较大,而且图形设计过程并非简单的数据处置过程,还包括许多文件构造和存贮构造的问题,从而使上述任务的复杂性大大添加有些绘图软件配有内部公用绘图言语,如AutoCAD配有AutoLISP编程言语,DDM/DIMENSION图形软件配有DAL绘图言语等,利用这些言语用户可以开发参数化绘图软件但是这些言语的数组,循环,函数,逻辑关系等功能普通较差,不宜作大量的计算任务,编程也不太方便第三种方式即建立图形设计程序包,其根本思想是选择一种适宜的高级程序设计言语作为主言语,在此言语中扩展一系列的过程调用,以实现图形设计任务在这种情况下,用户编写的图形描画程

7、序由两部分组成:一是主言语语句,另一个是主言语中扩展了的过程调用语句在扩展某种高级言语使其具有图形处置功能时,最好能利用已有的较成熟的图形软件. 程序参数化绘图的技术道路要实现程序参数化绘图程序的编制, 本文采用AutoCAD为绘图支撑软件,采用VBAVisual Basic for Application进展AutoCAD的二次开发,运用AutoCAD实现参数化绘制工程图纸. . AUTOCAD简介AutoCAD是当今最流行的二维绘图软件, AutoCAD有强大的二维功能,如绘图、编辑、剖面线和图案绘制、尺寸标注以及二次开发等功能,同时有部分三维功能。虽然AutoCAD是一个非常好的通用计算

8、机辅助绘图和设计软件系统,但每一行业和专业都有自的行业和专业规范,许多单位也有本人的技术规格和企业规范,每个设计工程师和绘图员更有各自独特的任务方式和习惯。因此AutoCAD不能够完全满足每个用户的详细而特定的要求。对AutoCAD进展定制和二次开发,能使AutoCAD可以更加符合用户的需求,更方便、更规范、更专业的实现设计和绘图中的运用。AutoCAD提供的开放式体系构造正是为运用户可以根据各自的需求来改良和扩展AutoCAD的许多功能而着想的AutoCAD提供AutoLISP、ADS、ARX、VBA作为二次开发的工具。在许多实践运用领域如机械、建筑、电子中,一些软件开发商在AutoCAD的

9、根底上已开发出许多符合实践运用的软件,很好的实现了参数化绘制工程图纸. VBA开发AutoCAD采用面向对象的程序设计方法, 运用Visual Basic在AutoCAD 上用VBA技术进展二次开发, 可以较好地实现系统程序参数化绘图。VBA是经过AutoCAD ActiveX Automation接口来建立和AutoCAD对象间的联络。ActiveX是建立在COM对象模型之上的一个规范通讯协议,它允许对象之间经过一定的接口相互通讯。而AutoCAD ActiveX提供在AutoCAD外控制编程的机制,经过运用AutoCAD对象,实现控制AutoCAD。 在 AutoCAD 中实现 Activ

10、eX 接口有两大优点: 更多的编程环境可以编程访问 AutoCAD 图形。在 ActiveX Automation 出现以前,开发人员只能运用 AutoLISP或 C+ 接口。与其他 Windows 运用程序如 Microsoft Excel 和ACCESS共享数据变得更加容易。对象是一切 ActiveX 运用程序的主要构造块。每一个显示的对象均准确代表一个 AutoCAD 组件。AutoCAD ActiveX 接口中有许多不同类型的对象。例如:直线、圆弧、文字和标注等图形对象都是对象。 线型与标注款式等款式设置都是对象。图层、编组和块等组织构造都是对象。视图与视口等图形显示都是对象。甚至图形

11、、AutoCAD 运用程序本身也是对象。AutoCAD对象是经过分层方式来组织的,运用程序对象为根对象。这种分层构造的视图被归结为对象模型。对象模型提供了用户访问下一层对象的途径,如下图。ApplicationPreferencesDocumentsDFaceDocumentDSolidBlockBlocksAttributeDatabaseModelSpaceBlockRefPaperSpaceCirclePViewportDimPointAngDictionaryDictionariesDimAngularXRecordDimStylessDimStyleDimOrdinateDimRad

12、ialFileDependencyFileDependenciessGroupGroupsEllipseHyperlinksLayerLayersExternalRefHyperlinkLayoutLayoutsLeaderLineTypesLineTypesLinePlotConfigurationPlotConfigurationsMInsertBlockRegisteredApplicationRegisteredApplicationsSelectionSetsSelectionSetMLineTextStyleTextStylesPointUCSUCSsPolyfaceMeshVie

13、wViewsPolygonMeshhViewportsViewportsRayDatabasePreferencesRegionPlotSummaryInfoSolidUtilitySplineMenuBarTablePopupMenuTextMenuGroupsTraceMenuGroupPopupMenusXline集合PopupMenuPopupMenuItemToolbars对象ToolbarToolbarItem图 AutoCAD的对象模型用户可直接经过用户定义变量援用对象。直接援用对象,应包括对象的层次。举一个最简单的例子,以下语句是添加一条直线到模型空间。Sub Drawline

14、( )定义两个三维的数组startPoint和endPointDim startPoint( to ) As Double Dim endPoint( to ) As Double 定义LineObj为直线对象Dim LineObj As AcadLine定义起点startPoint() = startPoint() = startPoint() = 定义终点endPoint()=endPoint()=endPoint()=调用AddLine方法绘制直线Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)End su

15、b. 参数化绘制图形程序的编制. 创建基准函数在实践工程中设计良好的底层库可以节省很多的编码量,并且有助于团体协作的实现底层库最好在工程编码开场之前就曾经完全确定. 在以上创建二维对象方法的根底上,采用对系统提供的方法进展封装,创建底层函数库,即由对象的基准函数构成.,其中还包含一些常用的计算函数 基准函数就是与系统提供的方法参数一致的函数,其他的函数均调用基准函数创建对象.如.创建直线基准函数的详细步骤如下:.在AUTOCAD中,选择工具/宏/VBA管理器菜单项,在弹出的VBA管理器对话框中单击新建按钮,创建一个新的工程,然后选择该工程,单击另存为按钮,将其保管在适当的位置。.在VBA管理器

16、对话框中单击Visual Basic编辑器按钮,进入VBA集成开发环境,选择插入/模块菜单项,向工程中添加一个规范模块。.选择插入/过程菜单项,选择类型为函数,范围为公有的,在称号文本框中输入Addline,单击确定按钮,就在当前的模块中添加了AddLine函数。提示: 在VB中,子程序和函数的主要区别就在于,子程序没有前往值,但函数可以有前往值,而在VBA中,宏的定义经过子程序来实现.因此他们创建底层函数均运用函数。.创建直线的基准函数代码为:Public Function AddLine(ByVal ptSt As Variant, ByVal ptEn As Variant) As Ac

17、adLineSet AddLine = that Drawing .Model Space .AddLine (ptSt, ptEn)End Function需求留意的是,基准函数称号与VBA中对应的方法坚持一致.函数的前往值为AcadLine,输入参数为两个Variant类型的变量,分别用于表示起点和终点的位置。Set是VBA的一个关键字,用于对象变量的赋值(数值变量的赋值形如a=b),而函数的前往值运用形如函数称号=表达式的方式来实现。 .参数化绘制根本二维对象运用AutoCAD VBA开发的软件,大部分仍属于交互式的软件,必需思索和用户进展交互的问题AutoCAD本身提供了两种人机交互的

18、方式,一种是在命令中进展操作,另一种那么是经过对话框输入参数 在VBA中要利用圆心和半径创建圆:.首先在AUTOCAD中,选择工具/宏/VBA管理器菜单项,在弹出的VBA管理器对话框中单击新建按钮,将其保管在适当的位置。在VBA管理器对话框中单击Visual Basic编辑器按钮,进入VBA集成开发环境,选择插入/用户窗体菜单项,向工程中添加一个用户窗体.在用户窗体上插入如图.所示的相关控件,并把相对应的文本框称号分别修正为text,text,text.在文本框后面添加一个拾取按钮,并把拾取按钮的Caption属性修正为空,单击PICTURE属性后的.按钮,从弹出的加载图片对话框中,选择配套光

19、盘中的PICKSET图片,设置PICTUREPOSITION属性为参数,就得到了如图.中的拾取点按钮效果.双击确定按钮,在该按钮的CLICK事件中添加下面的代码:Private Sub CommandButton_Click() 图.Dim pt() As DoubleDim radius As DoubleDim addcircle As AcadCirclept() = Text.Text:pt() = Text.Textradius = Text.TextUserForm.HideThisDrawing.ModelSpace.addcircle pt, radiusEnd Sub.双击窗

20、体上的取消按钮,进入代码窗口,在该按钮的CLICK事件中添加下面的代码:Private Sub CommandButton_Click()EndEnd Sub.双击窗体上的拾取按钮,进入代码窗口,在该按钮的CLICK事件中添加下面的代码:在VBA中建立圆心的拾取点代码如下:Private Sub CommandButton_Click()Dim PtPick As VariantUserForm.HidePtPick = ThisDrawing.Utility.GetPoint(, 请在屏幕上选择起点:)Text.Text = PtPick(): Text.Text = PtPick()Use

21、rForm.ShowEnd Sub在这段代码中,获取点的位置实现方法为GETPOINT,其前往值必需为VARIANT类型的变量,用来存储点的位置.在此过程中,还要在适当的时候隐藏和显示窗体,不然AUTOCAD无法获得控制权,程序就会出错.餐厅器具冰箱二维参数化绘图实例如下图为餐厅器具冰箱的参数化过程图此过程主要表达的是由图形的几何参数和构造参数来进展图形的参数化绘制基点坐标和尺寸长度。拾取基点后:输入长度和宽度。即可绘制出其二维图形. 参数化绘制三维图形 AUTOCAD VBA二次开发具有强大的平面图形绘制功能。运用它编制的程序可以得到复杂的二维图形。但二维图形存在一定的局限性和缺陷,由于无法

22、实现尺寸关联,不能直观察看产品的设计效果,虽然可以经过轴测视图的方式来处理,但操作费事,效果不佳,而假设运用三维图形,就可以弥补二维图形的在表现上的缺乏。以下引见VBA中关于三维建模部分的功能。采用的和二维操作一样的界面风格,从窗体中输入参数得到图形。. 三维弹簧模型实例阐明该例提供了简约的对话框界面,用户只需输入参数:中心点,旋转圈数,起始半径,程度增长,垂直增长和每圈分段数就可得到按要求的三维螺旋线如图图 编程思绪:计算机运用多边形来模拟圆形,这里的程序同样运用这个原理,每一个螺旋线都是由许多小线段直线组成,当直线足够多时,就呈现出螺旋线的效果。假设可以得到各个点的坐标,就可以利用多段线建

23、立一条螺旋线,但是二维多段线无法获得Z 方向的坐标,因此只能运用三维多段线用柱坐标表示螺旋线的控制点的坐标比较方便,因此在程序中有一个重要的问题就是柱坐标和平面直角坐标的转换。由于是用多段线来表示圆,固 圆形的分段数的设定时竟能够多,少了就的到多段线螺旋。所以初值他们定为。如绘制多段线调用内置函数 Dim ObjPline As AcadDPolyline Set ObjPline = ThisDrawing.ModelSpace.AddDPoly(PtControl).圆筒模型实例阐明: 运转本实例,可以在图形窗口中创建一个圆筒模型,大小,半径,深度都可以改动。如图:图编程思绪他们知道圆筒有

24、两种画法,一种是建立平面的图形,得到两个圆建立面域后拉伸得到,一种是直接建立两个圆柱体,但两个圆柱体是同心的,在进展差集计算得到挖空的模型。本程序就是建立两个同心但大小和半径不同的圆柱体,差集得到上图模型。如主要代码:Dim objCylinder As AcadDSolid Dim objCylinder As AcadDSolidSet objCylinder = ThisDrawing.ModelSpace.AddCylinder(ptCen, radius, height) 创建圆柱体 Set objCylinder = ThisDrawing.ModelSpace.AddCylind

25、er(ptCen, radius, height)布尔运算的第一步:圆柱体减去圆柱体objCylinder .Boolean acSubtraction, objCylinder. 系统数据库管理程序参数化绘图过程中,有效的管理图形数据,特别对一些规范件,通用件,建立规范参数图库,是很重要的一个环节.可以采用Microsoft Access进展数据库管理,衔接方法采用ADO,实现AUTOCAD与ACCESS的数据通讯,其主要功能是对参数化生成的图形的几何参数和构造参数进展记录并管理这些数据。. 数据库衔接方法ADO数据库衔接方法ADO是Microsoft ActiveX Data Object

26、s的简称,ADO作为一种更新的数据库访问技术,“扩展了DAO和RDO所运用的对象模型,包含较少的对象和更多的属性、方法、事件。ADO衔接数据库的编程思绪:在运用ADO对象之前,需求在VBA集成开发环境中,选择工程援用菜单项,从弹出的对话框中选中microsoft ActiveX Data Objects . Library选项,援用ADO的对象模型如图图 在编程过程中运用ADO的一个典型的存取数据的步骤为: 衔接数据源。可以运用衔接对象的Open方法翻开数据库对象,例如: adoCon.Open Provider=Microsoft.Jet.OLEDB.;Data Source= & _ Left(strPath, Len(strPath) - ) & CT.mdb; 翻开记录集对象。可以运用记录集对象的Open方法翻开记录集对象,例如: adoRs.OpenbingxiangData,adoCon,adOpenDynamic,adLockOptimistic 运用记录集。在各个记录集

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论