免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 3781|回复: 2
收起左侧

[二次开发] 基于ActiveX Automation对Auto CAD进行二次开发的技术

[复制链接]

46

主题

7

铜板

2

好友

工程师

地信网是中国最好的地质地信类网

Rank: 7Rank: 7Rank: 7

积分
423
发表于 2010-3-21 17:05 | 显示全部楼层 |阅读模式
基于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应用软件,这对于企业缩短产品设计周期、提高产品开发效率有着重要的现实意义。

1

主题

947

铜板

2

好友

技术员

Rank: 3Rank: 3

积分
91
发表于 2013-8-7 18:25 | 显示全部楼层
想学习下了,就是看不懂那程序的意思!!

评分

参与人数 1铜板 +1 收起 理由
admin + 1 亲,你好快哦~~~

查看全部评分

回复 支持 反对

使用道具 举报

9

主题

6831

铜板

8

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2010
发表于 2022-12-14 15:30 | 显示全部楼层
感谢分享 !!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表