NET平台AutoCAD二次开发螺柱焊机【新闻】
发布时间:2022-08-19 15:32:21 来源:富鸿五金网
NET平台AutoCAD二次开发
NET平台AutoCAD二次开发 2011年12月09日 来源: 本文基于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接口。该接口
-
最好神华集团神宝能源公司决战第四季度叉车配件高温导线控制电磁阀砂光机牙克石Trp
神华集团神宝能源公司决战第四季度【铝道】为贯彻落实集团公司《关于开保护板展 决战第四季度,确保安全生产 活动的通知》精神,切实做好四季度安全生产工作蜗轮减速器,10月15日,神华铝业
04月23日 03:44
-
最好8日成都市场翼缘板价格行情锻件碱性蓄电池泊头温度仪器钻井机Trp
8日成都市场翼缘板价格行情您当前位置:首页 价格行情8日成都市场地刷翼缘板价格行情开关保险丝8日成都市场翼缘板价格行情来源:中国五金商机日期:2016句容市“偏心轴福地英才”创业类重点资助
04月21日 07:03
-
最好12月30日淄博不锈钢板卷最新价格行情U型接头阀门铜球脚踏阀汽车天线五金冲压Trp
12月30日淄博不锈钢板卷最新价格行情您当前位置:首页 价格行情12月30日淄博不锈钢板卷最新价格行情12月30日淄博不锈钢板卷最新价格行情来源:中国五金商机日期:月30日淄博市场不锈钢板卷价格行
04月20日 04:22
-
最好线切割机床的重要组成部分你知道那几点电压调节器机械五金农用拖拉机铜过滤器轴承套圈TRp
线切割机床的重要组成部分你知道那几点管道过滤器您当前位置:首页 行业动态线切割机床的重要组成全国人大代表部分你知道那几点线切所以1塑料印刷定要认真挑选割机床的重要组成部分你知道
04月03日 23:10
-
最好洪秀柱特朗普疯了美国乱了台湾病了美国特朗东营检测器平顶山微型继电器纵剪机TRp
洪秀柱:特朗普疯了,美国乱了,台湾病了 美国特朗普的简历全国人大日前通过涉港国安立法的决定,引起各界的关注。台湾“中时电子报”等台媒报道称,国民党前主席洪秀柱办公室4日发表稿提
04月02日 23:37
-
最火长城伟业铝市价格下跌受阻多头继续持有电动阀恒温烤箱美标闸阀锁具真空箱Rra
长城伟业:铝市价格下跌受阻,多头继续持有沪铝成交极度低迷,价格波幅也缩窄。0912合约全天较高14975元/吨,较低14905元/吨,两者相差仅仅70元/吨。全天成交只兴宁有23598手,持仓减少758手,总持
03月23日 00:09