分享

应用ActiveX技术进行AutoCAD二次开发

 anrain 2011-08-26

 

应用ActiveX技术进行AutoCAD二次开发

于亚东1

    Autodesk公司的AutoCAD软件广泛地应用于设计领域。AutoCAD作为强大而专业的工程绘图软件,近几年在工程地质制图方面也得到了广泛应用,如钻孔柱状图、剖面图等。但由于CAD本身的原因以及地质图件的特殊性,完全依赖CAD而不借助第三方软件或对CAD进行二次开发,实现地质图件的计算机化也是一件非常困难的事情。好在CAD是一个灵活而又开放的系统,它提供了许多开放式的接口,允许用户通过这些接口对CAD进行二次开发,以满足不同用户的需要。

在当前AutoCAD系统中,最常见的开发用具是AutoLispVisualLispADSARX,但Lisp处理数据库能力差,编制界面困难,而ARXADS是基于C++语言的开发环境,要求相对较高。幸运的是,在AutoCAD R14以后的版本中,Autodesk公司在AutoCAD中加入了ActiveX自动化服务功能(ActiveX Automation server capabilities,使得用户可以通过可视化编程工具,如Visual Basic(以下简称VB)对AutoCAD进行二次开发,不但提高了工作效率,也满足了不同专业的需要。本文简略地说明AutoCAD中的ActiveX对象模型结构及对模型对象的编程引用。

1    AutoCAD中的ActiveX对象模型

    AutoCAD ActiveX提供了一种机制,或者说是一种方法,可以供开发者通过编程手段来操纵AutoCADActiveX是由一系列的对象,按一定的层次结构组成的,每一个对象都代表了AutoCAD中的一个明确的功能。每一个对象本身包含着自己的属性和方法,通过方法可以实现对象的一些操作,如控制CAD的启动,打开一个文档,一条直线的生成。而属性则是对象自己本身所具有的一些性质,如一个文本对象,它的属性有文本的高度,宽度、文本的颜色,所在层等。应用程序正是通过对AutoCAD暴露的各级对象的方法和属性的引用控制AutoCAD工作的。

理解AutoCAD的对象模型是实现编程的基础。AutoCAD以层次结构组织对象,在顶层是Application对象(AutoCAD 本身),其他对象均为Application对象的子对象。在Application对象下面是Preferences(优先设置)和Document(文档)对象,通过Preferences对象可以对AutoCAD Tools > Preferences菜单项中的几乎每一个选项进行访问和修改,以获取或改变AutoCAD的优先设置。Document对象是控制AutoCAD图形文件的直接对象,它代表某一个装入的CAD图形文件(一般设为当前激活的文件)。Document对象下面有Model Space(模型空间)和Paper Space(图纸空间)对象及Blocks()Layers ()views(视图)、 utility(功能)等一系列对象(集合),其含义与AutoCAD中相似。Model Space是当前图形文件中

 图形实体,如直线、圆、多义线等的集合,每个实体即是一个对象,可通过属性和方法改变1.中国兵器工业北方勘察设计研究院

实体或生成新实体。对非图形实体,如层(layer)、线形(line type)等的访问则通过访问Document对象下面的相应的集合类型的子对象,如Layers LineTypes等来实现。集合类型的对象可以使用VB中所有的集合操作方法。Plot对象提供了访问Plot对话框中各选项

   的桥梁,使应用程序具有用不同方式控制AutoCAD出图的能力。Utility对象使用户在AutoCAD命令行与CAD交互成为可能,通过它可以处理整型、浮点型、字符型等用户输入,还可以接受点(Point)或角(Angle)等AutoCAD的特殊量。以上简要地说明了CAD中的对象及其层次结构关系,有了这些理解对编程控制CAD就不难了。

2    AutoCAD对象的使用

2.1 AutoCAD Application对象

    如上所述,Application对象位于AutoCAD层次对象结构的顶层,它代表AutoCAD自身,所有的应用程序必须从Application对象的建立开始。

    打开VisualBasic6.0,新建工程,双击窗体,键入以下代码:

Private Sub Form_Load()

On Error Resume Next

'`如果目前系统中已有执行CAD程序,则取得已执行CAD物件

Set aCADapp = GetObject(, "AutoCAD.Application")

If Err Then

Err.Clear

'`如果目前系统尚未有执行CAD程序,则建立CAD物件

Set aCADapp = CreateObject("AutoCAD.Application")

End If

aCADapp.Visible = True '`请务必将物件Visible属性设为true

End Sub

    完成对Application对象的建立后,启动程序的同时,便激活AutoCAD绘图环境。

2.2 Document对象

    图形实体是指所有CAD的图元物体,如点(point)、线(Line)、圆(Circle)、弧(Arc)、文字(Text)等,它们包含于ModelSpacePaperSpace集合对象中。对实体的操作总要从这两个集合开始,向下查找相应实体所属的方法或属性。而图形实体的操作包括实体的生成、编辑和查询。 ModelSpacePaperSpace是所有图形实体的集合,因此要取得图中的某一实体,一般采用遍历查找的方法,下面是关于CAD图形实体生成和编辑的实例代码。

    1)生成矩形的代码(如图1

Private Sub Command1_Click()

Dim p1(0 To 2) As Double ,p2(0 To 2) As Double ,p3(0 To 2) As Double

Dim p4(0 To 2) As Double

Dim lineObj As Object

p1(0) = CDbl(Text1.Text):p1(1) = CDbl(Text2.Text):p1(2) = 0#

p2(0) = CDbl(Text1.Text):p2(1) = CDbl(Text4.Text):p2(2) = 0#

p3(0) = CDbl(Text3.Text):p3(1) = CDbl(Text4.Text):p3(2) = 0#

p4(0) = CDbl(Text3.Text):p4(1) = CDbl(Text2.Text):p4(2) = 0#

Set lineObj = aCADapp.ActiveDocument.ModelSpace.AddLine(p1, p2)

'`划第二点到第三点

Set lineObj = aCADapp.ActiveDocument.ModelSpace.AddLine(p2, p3)

'`划第三点到第四点

Set lineObj = aCADapp.ActiveDocument.ModelSpace.AddLine(p3, p4)

'`划第四点到第一点

Set lineObj = aCADapp.ActiveDocument.ModelSpace.AddLine(p4, p1)

aCADapp.Update

End Sub

     2)模拟镜像功能(以画同心圆为例,如图1

Private Sub Command2_Click()

Dim circleObj

Dim centerPoint(0 To 2) As Double

Dim radius As Double

Dim a As Integer , b As Double

centerPoint(0)=CDbl(Text6.Text):centerPoint(1)=CDbl(Text7.Text)

centerPoint(2) = 0#

b = CDbl(Text8.Text)

For a = 1 To CDbl(Text8.Text) \ 16

b = b - 15

radius = b

Set circleObj = aCADapp.ActiveDocument.ModelSpace.AddCircle(centerPoint, radius)

aCADapp.Update

Next a

End Sub

 

 

 

 

 

 

 

 

3)在固定位置进行文字标注(如图1

Private Sub Command3_Click()

Dim TextObj

Dim pt2(0 To 2) As Double

pt2(0) = 210 : pt2(1) = 160 : pt2(2) = 0

Set TextObj = aCADapp.ActiveDocument.ModelSpace.AddText(Text5.Text, pt2, 15)

aCADapp.Update

End Sub

    随着AutoCAD2002AutoCAD2004版本的推出,ActiveX模型对象和CAD的二次开发手段都得到了极大的丰富。以上是本人用VBCAD平台上进行二次开发的一些体会,由于成文时间仓促,错误和不足在所难免,望不吝指正。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多