用户名密码 太空模具网  | 宇宙五金网 | 星星电子网 | 银河汽车网 | 人才频道 | 技术休闲
 
首    页
价格行情
供求商机 产 品 库
求职信息 招聘信息
企 业 库 机床百科 行业资讯
招标信息 展会信息   
人力资讯 图书频道 网上课堂
软件下载 视频教育 网上助手
数控系统 变频器 稳压器 伺服系统
机床附件 机床仪表 机床刀夹具

车床

铣床

刨床

磨床

镗床

钻床

冲床

拉床

锯床

雕刻机

加工中心

电火花机

剪板机

折弯机
市场行情:广东 浙江 江苏 北京 上海 山东 安徽 天津 河北 重庆 台湾 湖北 辽宁 四川 陕西 福建 吉林 黑龙江 山西 云南 贵州
数控铣床的铣技术    高速加工的优势    1-4月我区机床行业销售猛增     机床行业“十五”超常规发展     未来几年机械业需要近百亿气动产品     HL一控四线切割机床电脑控制卡    假冒及短尺钼丝扰乱市场价格秩序    线切割钼丝也有假货    电火花加工技术的论文    电火花线切割--Mastercam9.0基础教程     AutoP+DXF 2006版(支持Win98,Win2000,WinXP系统)    HCCUT恒昌线切割软件发布(绝对超级的CAD线切割软件)    “十一五”我国需着力消除三大体制障碍     据统计日本轴承工业连续三年持续增长     齿轮企业如何进行技术改造提升竞争力     泵阀知名品牌积极开拓中国市场     吉林首家数控机械专利产业化基地成立     从宏观经济环境看2006年中国机床市场     确保产业安全机床行业预警制启动    北航海尔软件产品简介    HF线切割编控一体化系统    磁力泵的工作原理    离合器是起什么作用    线切割钼丝大全    静电的危害    汽车噪音的危害    如何区分二极管和稳压管    湿度的名词解释    欧洲日本是塑料配混机主要出口地     徐工科技首季产品出口超亿元     仪征双环做强活塞环     中国铸造如何择道而行?    春兰打造知识产权盾牌    2005年中国机械工业销售收入百强揭晓 春兰连续六年荣列榜端    秦川机床集团有限公司荣获陕西省“环保贡献奖”先进集体    导电塑料的国内外发展概况    我国数控机床现况与技术发展策略    石墨的性质    拿什么打造中国装备制造业品牌?    德国机械制造业笑看2006    
<% if pyg2("img")<>"" then%><%end if%>
 中国数控机床网 > 新闻中心 > 新品与技术    
NET平台的AutoCAD二次开发
NEWS.C-CNC.COM   2006-5-12    来源:    阅读:生意人使用生意宝,生意越来越旺盛!
本文基于AutoCAD 2006新推出的.NET API为工具,介绍了在.NET平台下对AutoCAD进行二次开发的技术,并与目前常用的VBA、ObjectARX作了对比。同时讨论了如何弥补.NET API某些不足的功能。



当前AutoCAD的二次开发工具主要有:VisualLisp、VBA和ObjectARX等。其中,VisualLisp与VBA较为简单,特别是VBA,使用方便且开发速度较快,但其功能相比ObjectARX有所不足,尤其是对面向对象的功能支持不好。而ObjectARX基于VC平台,在C++的支持下,其功能非常强大,可以很好地运用各种面向对象技术,但其缺点是发开速度比较慢,同时对开发人员的能力要求较高。

.NET是微软新推出的开发平台,具有众多优点。基于.NET平台对AutoCAD进行二次开发,可充分利用.NET的各种优势,在保证功能强大的前提下大大提高开发速度。

一、基于.NET的开发

1..NET API简介

在新推出的AutoCAD 2006中,Autodesk为其开发增加了.NET API。.NET API提供了一系列托管的外包类(Managed Wrapper Class),使开发人员可在.NET框架下,使用任何支持.NET的语言,如VB.NET、C# 和Managed C++等对AutoCAD进行二次开发。其优点是完全面向对象,在拥有与C++相匹配的强大功能的同时,具有方便易用的特点,是较理想的AutoCAD二次开发工具。

2..NET API与传统ObjectARX的主要区别

.NET API与传统ObjectARX的区别主要源于在.NET环境下开发应用程序与在VC环境下开发应用程序的区别。首先,在VC环境下,程序员需要自己管理内存的申请和释放,而.NET采用了垃圾回收机制,由.NET框架自行判断内存回收的时机并实行回收,从而解决了令C++程序员头痛的内存泄漏问题。也正是由于这个特点,在.NET环境下不能象在C++环境下那样利用析构函数释放其他的资源,需要程序员在程序中显式地释放。在.NET API中,主要通过Dispose来函数进行资源的释放。

其次,ObjectARX中的各种反应器(Reactor)在.NET API中由外包类映射为各种事件(Event),可通过定义这些事件的响应函数来响应AutoCAD的各种操作。同时对于错误信息的处理也从函数返回值改变为通常异常来处理,使其更好地兼容.NET。由于VB.NET、C#等语言都是完全面向对象的,没有全局函数的概念,所以.NET API将ObjectARX下的全局函数封装为.NET API下的某些对象或对象的属性,如ObjectARX下与用户交互的系列全局函数被封装为CommandLinePrompt类。

3.使用.NET API

下面以C#为例,在Microsoft Visual C# 2005 Express Edition Beta平台上,先新建一个Class Library项目,再将AutoCAD2005安装目录下的acdbmgb.dll与acmgb.dll作为引用添加进项目中。这两个文件包含了.NET API中所有的外包类。

然后在要使用.NET API的类中添加以下语句以引用.NET API的命名空间。需要添加的语句如下:

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Geometry;

这样就可以利用.NET API进行开发了。以下代码可在AutoCAD注册为一个命令“AddLine”,该命令可在当前工作空间中添加一条起点为(0,0,0),终点(200,200,0)的直线。代码如下:

[CommandMethod ("AddLine")]
public static void AddLineCmd()
{
Database db = HostApplicationServices.WorkingDatabase;//获得当前工作空间的数据库
BlockTable bt = (BlockTable)db.BlockTableId.Open(OpenMode.ForRead); //获得块表
BlockTableRecord btr = (BlockTableRecord)bt[BlockTableRecord.ModelSpace].Open(OpenMode.ForWrite); //获得模型空间的块表记录
Line line = new Line(new Point3d(0, 0, 0), new Point3d(200, 200, 0));//创建一条直线
try {
btr.AppendEntity(line);//将直线添加到模型空间中
line.Close();//关闭该直线
}
finally {
btr.Close();//关闭块表记录
bt.Close();//关闭块表
}
}

由此可见,上述语句与在VC下的开发非常类似,其过程都是先得到数据库,然后依次打开块表、块表记录,接着添加实体,最后关闭块表、块表记录。值得注意的是finally语句,无论try块中的语句是否发生异常,finally块中的语句都会被执行,从而确保关闭块表和块表记录的操作会被执行。

写完代码后进行编译,编译完成将得到一个dll文件。在AutoCAD 2006中通过“netload”命令即可选择该dll文件进行加载,加载成功后即可以通过“AddLine”命令执行上述代码。遗憾的是目前的.NET API版本还不支持卸载,若要卸载只能关闭AutoCAD。

4..NET API的初始化与清除

在ObjectARX中,“acrxEntryPoint”函数是ARX程序的载入点,程序的初始化和清除均可在该函数中进行。而在.NET API中则首先需要将初始化代码封装在一个类中,同时该类需要压迫实现
IExtensionApplication接口。该接口包含Initialize与Terminate两个函数。其中Initialize负责加载程序时的初始化操作,Terminate则负责进行卸载程序时的清除操作。代码如下:

namespace ARXExample {
public class MyARX : IExtensionApplication {
……
public void Initialize() {
//初始化操作
}
public void Terminate() {
//清除操作
}
……

}
同时,为加快加载速度,可在MyARX.cs的文件头加入以下语句:
[assembly: ExtensionApplication (typeof (ARXExample.MyARX) ) ]
[assembly: CommandClass (typeof (ARXExample.MyARX) ) ]

这样在加载程序时AutoCAD将直接通过MyARX中的Initialize语句进行初始化,同时注册MyARX中的命令。否则,AutoCAD将搜索dll中所有的类以找到实现IExtensionApplication接口的类进行初始化,如找不到则不进行初始化。同样,通过CommandClass属性,AutoCAD也会直接到MyARX类中搜索要注册的命令。当程序中包含的类数目较多时,通过ExtensionApplication和CommandClass这两个属性可显著地加快程序的加载速度。

5..NET API与COM交互操作

在目前的.NET API中,其功能与传统的ObjectARX相比有所不及,有相当的ObjectARX函数目前还没有封装到.NET API中,如GetPoint等。但可以通过COM方式使用ActiveX来弥补.NET API的不足。
增加了COM引用后,程序就可以使用许多VBA中的功能了。以AutoCAD ActiveX中的事件为例,以下代码可以为当前工作空间中所有的图元添加Modified事件:

Database db = HostApplicationServices.WorkingDatabase;
BlockTable bt = (BlockTable)db.BlockTableId.Open(OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)bt[BlockTableRecord.ModelSpace].Open(OpenMode.ForWrite);
try {
AcadObject obj;
//遍历块表记录
foreach (ObjectId objId in btr) {
//由ObjectId得到ActiveX中的AcadObject对象
obj = (AcadObject)((AcadDatabase)db.AcadDatabase).ObjectIdToObject(objId.OldId);
//为obj添加响应Modified事件
obj.Modified += new IAcadObjectEvents_ModifiedEventHandler(obj_Modified);
}
}
finally {
btr.Close();
bt.Close();
}
其中事件响应函数obj_Modified的表示如下所示:
public static void obj_Modified(AcadObject obj) {
CommandLinePrompts.Message("object modified!" + obj.ObjectID + "\n");
}

二、结论

本文以C#为例,对基于.NET API的AutoCAD二次开发作了较详细的介绍。.NET API在具有ObjectARX强大功能的同时具有VBA使用方便易用的优点,同时具有C++的强大功能,是较为理想的开发工具。但目前.NET API在某些方面还有些不足,但随着其版本的更新、完善,定会成为众多开发人员的首选工具。
 ■ 相关链接
 · 三维设计软件Pro/Engineer
 · Pro/ENGINEER 中的文本处理
 · 从GENESIS 130H谈第四代数控
 · Pro/ENGINEER Wildfi
 · Internet的发展与我国焊接行业的
 · CimatronE微铣削软件挑战三大极
 · A New Mechanism For
 · 思美创天津CimatronE8发布会圆
 · Fooke五轴加工中心Endura90
热点新闻
机电一体化毕业论文
手机MP4怎样下载的?
2003年度全国工业重点行业效益十佳企业名单
什么是数控机床?
MasterCAM下载清单
Ug教程下载网址大全
2004年9月机械零部件厂商企业推荐
数控车床编程实例
安利传销内幕揭秘
海天注塑机
第二届广西国际机床、模具及机械加工设备展览会
第十届中国国际机床及工模具(成都)展览会
东莞模具人才告急
数控专业毕业论文范文网址
2007第二届中国苏州国际机床及工模具展览会
直流无刷电机的工作原理
2006中国数控机床展览会
机床企业名录(部分)
AutoCAD 2006 Beta2 新特性一览
电磁阀的工作原理

最新新闻
数控铣床的铣技术
高速加工的优势
1-4月我区机床行业销售猛增
机床行业“十五”超常规发展
未来几年机械业需要近百亿气动产品
HL一控四线切割机床电脑控制卡
假冒及短尺钼丝扰乱市场价格秩序
线切割钼丝也有假货
电火花加工技术的论文
电火花线切割--Mastercam9.0基础教程
AutoP+DXF 2006版(支持Win98,Win2000,WinXP系统)
HCCUT恒昌线切割软件发布(绝对超级的CAD线切割软件)
“十一五”我国需着力消除三大体制障碍
据统计日本轴承工业连续三年持续增长
齿轮企业如何进行技术改造提升竞争力
泵阀知名品牌积极开拓中国市场
吉林首家数控机械专利产业化基地成立
从宏观经济环境看2006年中国机床市场
确保产业安全机床行业预警制启动
北航海尔软件产品简介
中国数控机床网关于本网 - 广告刊登-服务中心-网页设计- 域名空间-投稿信箱- 联系我们-投诉举报-友情链接
版权所有:泰州市德基软件公司   网络实名:中国数控机床网www.c-cnc.com
      腾讯QQ:498808488      客户服务热线:0523-86228810  86229597
传真:0523-86229597   E-mail:
jc@c-cnc.com
经营许可证编号:苏B2-20050154 苏ICP备05030923号