Advertisement

cass二次开发vba和lisp_基于VBA的AutoCAD二次开发及应用实例

阅读量:

1引言本文引用地址:http://www.eepw.com.cn/article/190993.htm

AutoCAD 2005是由Autodesk公司提供的软件产品系列,在设计理念和服务理念上都借鉴了工程制图领域的专业规范。它能够轻松地生成平面视图以及具有逼真的三维渲染效果的工程图纸,并被广泛认为是一个非常理想的绘图工具软件。随着计算机辅助设计(CAD)理论和技术的发展越来越迅速,人们对CAD系统的要求越来越高。因此AutoCAD无法完全满足所有用户的个性化需求。设计师希望降低大量重复性工作负担,并通过减少繁琐操作来使他们能够专注于那些富有创造性的高级思维活动。

AutoCAD采用了开放架构,并通过高级编程语言让用户及开发者对其功能进行扩展与定制。旨在实现二次开发,并以最大限度满足用户的具体需求为目标,在设计与绘图过程中展现出更高的便捷性、规范性和专业性。最初作为微软办公软件系列的一部分,在Office 97中引入了标准的宏语言VBA。该软件开发商于其14.1版本起首次引入了内置的VBA开发工具

新一代软件开发平台ViSual BaSic不仅继承了面向对象方法的特性还具有生成可视化的程序语言的能力并且能够生成相应的程序生成器的概念

VBA(Visual Basic for Applications)作为AutoCAD R12之后出现的一种强大的编程环境,在实现基础之上实现了对Visual Basic的支持,并通过面向对象技术以及提供相应的程序接口使得开发者能够迅速有效地访问Autocad图形数据库。这种技术的应用显著提升了软件开发和维护的工作效率

2 VBA的技术特性

2.1 VBA开发AUTOCAD的技术特点

作为微软开发的一种通用编程语言,在程序之间实现自动化;它可以让我们轻松地将各种常见的程序实现自动化操作;同时还可以帮助我们构建个性化的解决方案。

将VBA成功整合至AutoCAD系统中,并与该系统的强大Activex自动化对象模型实现深度结合后,则开创了一种全新的基于Activex技术的AutoCAD定制开发模式。具体而言,则是通过与AutoCAD的强大Activex自动化对象模型的深度结合而实现了一种新型的基于Activex技术的独特定制开发模式

(1)VBA提供强大的窗体创建功能,为应用程序建立对话框及其他屏幕界面。

(2)可以创建自己的工具条。

(3)可以创建功能强大的模块级宏指令,宏名实质上就是模块的过程名。

实现构建类模块的功能对于开发大型工程具有重要意义,并且此类能够支持重用组件

该系统展现出卓越的数据访问与管理能力,并借助ADO(ActivexData Objects)的功能支持对多种类型的数据库(包括但不仅限于Access、dBase及FoxPro等)实现有效的访问与管理。相比直接使用AutoCAD的数据库管理系统而言,则不仅在操作便捷性上更为便捷,在功能多样性方面也更为丰富

该系统展现出卓越的数据访问与管理能力,并借助ADO(ActivexData Objects)的功能支持对多种类型的数据库(包括但不仅限于Access、dBase及FoxPro等)实现有效的访问与管理。相比直接使用AutoCAD的数据库管理系统而言,则不仅在操作便捷性上更为便捷,在功能多样性方面也更为丰富

2.2 VBA AutoCAD ActiveX Automation对象模型

VBA利用AutoCAD ActiveX Automation接口来实现与AutoCAD对象之间的关系。ActiveX是一个基于COM对象模型的标准通信协议,在这种协议下,不同对象可以通过特定的接口进行通信。

ActiveX提供给用户一种在 AutoCAD 的内部环境以及外部环境中进行程序化操作的方法。它是通过将 AutoCAD 对象展示在外部环境中来实现这一功能的方式。当这些对象被展示后, 不同的编程语言、开发环境以及相关应用程序(如 Microsoft Word VBA 和 Excel VBA)就能够方便地进行操作。如图 1 所示的是如何利用 AutoCAD ActiveX 实现不同编程语言与应用之间的交互。

图1 编程语言和应用程序通过AutoCAD AcfiveX访问AutoCAD

在AutoCAD中实现ActiveX接口有两大优点:

多种编程环境能够集成访问AucOCAD图形。在 ActiveXAutomation 出现之前, 开发人员仅限于 AutoLisp 或 C++ 接口。

在Windows环境中与其他应用程序(如MS WORD和ACCESS)分享数据更加便捷

在Activex应用程序中,对象是主要构建块。每个显示的对象都精确对应一个AutoCAD组件。该接口提供了丰富多样性的对象类型。例如:

·直线、圆弧、文字和标注等图形对象都是对象。

·线型与标注样式等样式设置都是对象。

·图层、编组和块等组织结构都是对象。

·视图与视口等图形显示都是对象。

·甚至图形、AutoCAD应用程序本身也是对象。

AutoCAD的对象采用层次结构来进行组织;作为基础的对象而言,层次结构呈现的视图被视为一种对象模型;这种模型则支撑了用户能够访问下一层的对象。

允许用户直接使用自定义变量来引用对象。在引用对象时,请注意包含其层次结构。例如,在VBA环境中创建一个圆只需提供圆心坐标与半径值。

Sub drawcircle()

  • Dim ptl(2)As Double

Dim radius As Double

ptl(0)=23

ptl(1)=78

Dtl(2)=67

radius=56

’调用Addcircle方法绘制圆

ThisDrawing.Modelspace.addcircle ptl,radiusEnd Sub

3 AUTOCAD VBA实例应用

这个具体实例详细阐述了使用VBA在AUTOCAD中实现参数化绘图的技术基础及其在实际项目中的应用情况,并构成了CAD系统中的关键组成部分。

3.1绘制三维图形实例说明

(1).程序运行界面如图2所示,允许用户设置中心点位置、桌面尺寸以及桌腿半径,并设定桌子的高度后,系统将在三维空间中自动生成一个桌子模型.

(2).编程思路

主要难点在于实现内外圆面域的创建,并对生成的桌腿模型进行旋转角度调整和完成后的整体上色处理。

3.2 VBA开发AutoCAD2005的技术流程

在AUTOCAD2004软件界面中选择[工具]菜单下的[宏]选项卡中的[VBA管理器]工具栏,在其弹出的[VBA管理器]对话框中单击[新建]按钮,并命名为一个适当的名称后将其保存到指定的位置。

(2) 点击位于[VBA管理器]窗口中的[Visual Basic编辑器]按钮。
切换至VBA集成开发环境。
从菜单栏中的'插入'选项卡中选择'用户窗体'。
将一个用户窗体添加至工程模块。

图2 创建桌子运行界面

在用户的窗体界面中添加如图2所示的相关控件,并根据表格逐一配置它们的各项属性。

(4)相关代码:l>.在Cammandbutton2命令按钮的单击Click事件的代码为:

图3桌子的参数化绘图

在AutoCAD2004软件界面中,默认状态下可访问[视图/着色/体着色]菜单选项组,并对该系统生成的三维模型应用体着色功能以实现其视觉效果展示。

图4 创建桌子运行界面

此实例可与数据库建立连接,在使用时可以直接调用数据库中的参数,并可直接执行以获取所需图形

4 AUTOCAD VBA数据库连接技术

4.1 ADO数据库访问技术

随着CAD技术的发展,在CAD软件中使用数据库的情况越来越多。作为Microsoft ActiveX Data Objects(ADO)的简称,“ADO作为一种新型的数据库访问技术”,将DA0和RD0所使用的对象模型进行了“动态化”的改进,并增强了与现有系统资源的“兼容性”。作为新型的技术手段,在这种新的访问模式下,“虽然仍然包含少量的对象”,但却显著增加了数据属性的数量以及相关的功能模块

本节主要阐述ADO控件与MICROSOFT、ACCESS数据库之间基本操作的实现过程。其中各字段的相关属性存放在数据库DESK.mdb中,并且能够方便地访问和查看各项数据信息。此外该系统还支持新增数据项以及对现有数据内容进行更新或删除的操作流程。

在调用ADO对象之前,在VBA集成开发环境中打开[工程/引用]菜单项,并从下拉列表中选择[microsoft ActiveX Data Objects 2.5 Livrary]选项以建立对ADO对象模型的引用。

图5 引用ADO的对象模型

4.2 ADO编程

在编程过程中使用AD0的一个典型的存取数据的步骤为:

(1)连接数据源。可以使用连接对象的Open方法打开数据库对象,例如:

adoCon.Open“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=“_

Left(strPath,Len(strPam)一6)”\DESK.mdb;”

(2)打开记录集对象。可以使用记录集对象的Open方法打开记录集对象,例如:

adoRs.Open“biaoData2”,adoCon,adOpenDynamic,adLockOptimiStic

(3)在不同数据集合间切换时通常可以用到集合对象的方法如Move MoveFirst MoveNext MovePrevious以及MoveLast等这些功能可帮助完成数据之间的转换操作。为了新增一条数据可以在集合对象中调用AddNew()函数实现这一功能。当需要修改当前数据内容时仅需对数据库中对应的集合对象重新赋值即可完成修改工作。而删除现有数据则可以通过集合对象提供的Delete()方法来实现。

其中,记录集在进行添加的操作之后,必须使用Update方法更新数据库。

(4)断开连接。可以通过调用close方法来断开与记录集及数据库连接对象之间的关联关系,在程序退出前请确保及时调用该方法以关闭这两个关联的对象以避免潜在资源泄漏问题。为了提升用户的交互体验,在工程系统架构中建议增加一个新的用户界面窗口,并在其界面上放置如图6所示的控件元素以实现功能交互需求。

向工程中添加一个用户窗体,并在窗体中放置如图6所示的控件。

图6桌子的数据库连接

5 结束语

基于VBA的AutoCAD二次开发技术能够有效拓展AUTOCAD的功能,并通过参数化设计提升设计效率。例如,在零件标准图库的建立方面取得了显著成果。对于大型CAD应用软件的构建而言,这项技术具有重要的应用价值。此外,在这一领域内已有多个企业开始自行研发CAD系统,并已展现出显著的应用价值

全部评论 (0)

还没有任何评论哟~