|
|
基于ActiveX Automation对Auto CAD进行二次开发的技术
信息来源:太空模具网]
[摘要] 介绍了ActiveX Automation技术和Auto CAD对象模型的基本知识,在此基础上探讨了对Auto CAD进行二次开发的技术。
关键词 ActiveX Automation技术 Auto CAD对象模型 二次开发
[Abstract]The ActiveX Automation technology and the basic knowledge regarding Auto CAD object
model were introduced. And based on this, the technology of a second development of Auto
CAD was studied and discussed.
Key words ActiveX Automation technology, Auto CAD object model, a second development
1 ActiveX Automation概述
ActiveX Automation是微软公司建立的标准,它的前身是OLE Automation(Object Linking and Embedding Automation),随着OLE Automation技术的不断发展进步,其功能和应用领域也在不断地完善和扩张,当其超越其自身原始的标准定义时,就被重新定义为ActiveX Automation。
ActiveX Automation的核心技术是允许一个Windows应用程序通过暴露对象控制和操作另一个Windows应用程序。需要特别指出的是,ActiveX Automation并不是直接获取及处理数据,而是间接地通过暴露对象的方法和属性,利用对象的方法和属性获取、 设置及处理数据。可以这样说ActiveX Automation是一个桥梁,它在Windows应用程序与Auto CAD之间建立了一种控制关系,这样就可以利用这一技术开发出基于Auto CAD的应用程序。
ActiveX Automation是通过两个应用程序之间的对话来实现,对话是以请求和响应的模式来进行的,ActiveX Automation程序分为两个部分,即客户机程序和服务器程序,对话是在二者之间进行的。
2 Auto CAD对象模型
2.1 自动化对象
Auto CAD作为一个ActiveX Automation Server是通过对象的方式暴露自己的功能,而对象其实就是一个服务器程序片段的抽象表示。作为一个对象,它包含以下三方面的内容:
(1)对象的类型或类。该项目用以说明对象自身的数据类型及格式。在Visual Basic 5.0常用的对象的类型有Object,Variant等。
(2)对象的方法。对象的方法是该对象可执行的各种操作,实际上是内嵌于对象内部的函数和子程序,它对编程者来说是一个黑盒子,当给它输入确定的参数后,它就会返回具有确定类型的返回值或者执行一个确定的操作,但其内部是如何执行的,对编程者而言是不可知的。例如Arc对象有拷贝、移动、旋转、擦除、刷新、偏置等方法,Document对象有建立新图、打开已有图形、保存图形、获取系统变量、设置系统变量等方法。
(3)对象的属性。对象的属性是描述该对象的特征,其特征是以数据形式表现出来的。一个对象包含有许多的属性,每个属性都有其确定的数据类型,当我们将一个对象的所有的属性都赋予确定的值以后(不论是缺省值还是人工干预设置的值),那么这时这个对象也就随之确定下来。例如Line对象有起点、终点、层、颜色、线型、可见性等属性,对于Arc对象有弧心、半径、起始角、终止角、起点、终点、层、颜色、线型、可见性等属性。
2.2 Auto CAD对象模型
Auto CAD R14 ActiveX Automation暴露相当数量的对象Automation Clients,每个对象都带有许多方法和属性。这些对象是以层次的方式排列的,见图1,最高层是Auto CAD Application对象,这个对象就是Auto CAD应用程序本身,在它的下层有两个对象,一个是Document对象,另一个是Preferences对象。通过Document对象可以对该图形文档上的所有实体及参数进行各种操作。通过Preferences对象可以访问Auto CAD应用程序本身的系统参数,可对这些参数进行各种操作。
3 编写程序实例
在对Auto CAD进行二次开发时,所要编写的是客户机程序。在编写程序时,首先应建立客户机与服务器之间的联系,具体方式如下:
Set Cad_App=GetObject(,“Auto CAD.Application”)
对象Cad_App所代表的就是Auto CAD应用程序本身, 通过对象Cad_App可以对其暴露的所有的对象进行各种操作。下面是一个利用Visual Basic开发的客户机程序的实例,其功能是在模型空间中绘制直线、圆和圆弧。
图1 Auto CAD应用程序对象层次结构示意图
Const PI=3.1415926358979
Dim AcadObj As Object ’定义acadObj为Object类型
Dim MoSpace As Object ’定义MoSpace为Object类型
Private Sub Form_Load()
’建立应用程序与Auto CAD的连接,并设置Acad_
Obj对象为Auto CAD应用程序
Set AcadObj=GetObject(,“Auto CAD.Application”)
’设置MoSpace对象为模型空间对象
Set MoSpace=AcadObj.ActiveDocument.ModelSpace
’将Auto CAD应用程序设置为显示状态
AcadObj.Visible=True
End Sub
’画直线子程序
Private Sub Draw_line_Click()
Dim a_line As Object ’定义a_Line为Object类型
Dim Start_Point(0 To 2) As Double
’定义Start_Point为Double数组类型
Dim End_Point(0 To 2) As Double ’定义End_Point
为Double数组类型
’设置直线起点坐标
Start_Point(0)=-3.5
Start_Point(1)=6#
Start_Point(2)=0
’设置直线终点坐标
End_Point(0)=18.8
End_Point(1)=4#
End_Point(2)=0
’在模型空间中画一条直线
Set a_Line=MoSpace.AddLine(Start_Point,End_Point)
End Sub
’画圆子程序
Private Sub Draw_Circle_Click()
Dim a_Circle As Object ’定义a_Circle为Object类型
Dim Circle_Center(0 To 2) As Double
’定义Circle_Center为Double数组类型
Dim Circle_Radius As Double
’定义Circle_Radius为Double类型
’设置圆心坐标
Circle_Center(0)=25#
Circle_Center(1)=4#
Circle_Center(2)=0
’设置圆半径
Circle_Radius=3#
’在模型空间中画一个圆
Set a_Circle=MoSpace.AddCircle(Circle_Center,Cir_
cle_Radius)
End Sub
’画圆弧子程序
Private Sub Draw_Arc_Click()
Dim a_Arc As Object ’定义a_Circle为Object类型
Dim Arc_Center(0 To 2) As Double
’定义Circle_Center为Double数组类型
Dim Arc_Radius As Double
’定义Circle_Radius Double类型
Dim Start_Angle As Double
’定义Start_Angle为Double类型
Dim End_Angle As Double ’定义End_Angle为Double类型
’设置弧心坐标
Arc_Center(0)=3#
Arc_Center(1)=12#
Arc_Center(2)=0
’设置圆弧半径
Arc_Radius=6#
’设置圆弧起始角
Start_Angle=45*PI/180#
’设置圆弧终止角
End_Angle=270*PI/180#
’在模型空间中画一条圆弧
Set a_Arc=MoSpece.AddArc(Arc_Center,Arc_Radius,
Start_Angle,End_Angle)
End Sub
4 结束语
实践证明,通过运用ActiveX Automation对Auto CAD进行二次开发的技术,一方面可以充分利用Auto CAD应用程序强大的图形处理功能,另一方面,可以利用多种Windows环境下可视化编程语言(例如Visual Basic,C++,Delphi等)所具有的强大的数据处理功能、网络及多媒体技术。将二者优势合二为一,就可以在较短时间内开发出功能强大的CAD应用软件,这对于企业缩短产品设计周期、提高产品开发效率有着重要的现实意义。 |
|