十五年专注于
液压缸筒生产

全国咨询热线:
400-086-9833

   热门关键词修理 加工 活塞杆 缸筒 不锈钢

无标题文档

天圆液压产品中心

当前位置:主页 > 行业资讯 >

.NET平台的液压站AutoCAD二次开拓(2)

时间:2017-06-22 08:01来源:天圆网站 作者:天圆液压 点击:
在今朝的.NET API中,其成果与传统的ObjectARX对比有所不及,有相等的ObjectARX函数今朝还没有封装到.NET API中, 缸筒 ,如GetPoint等。但可以通过COM方法行使ActiveX来补充.NET API的不敷。 5..NET API与COM交互

在今朝的.NET API中,其成果与传统的ObjectARX对比有所不及,有相等的ObjectARX函数今朝还没有封装到.NET API中,缸筒,如GetPoint等。但可以通过COM方法行使ActiveX来补充.NET API的不敷。

5..NET API与COM交互操纵

Database db = HostApplicationServices.WorkingDatabase;
public static void obj_Modified(AcadObject obj) {
//初始化操纵

本文以C#为例,对基于.NET API的AutoCAD二次开爆发了较具体的先容。.NET API在具有ObjectARX强盛成果的同时具有VBA行使利便易用的利益,同时具有C++的强盛成果,是较为抱负的开拓器材。但今朝.NET API在某些方面尚有些不敷,但跟着其版本的更新、完美,定会成为浩瀚开拓职员的首选器材。

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

}
[assembly: ExtensionApplication (typeof (ARXExample.MyARX) ) ]
CommandLinePrompts.Message("object modified!" + obj.ObjectID + "\n");
    using Autodesk.AutoCAD.Geometry;

    //为obj添加相应Modified变乱
}
    {
    btr.AppendEntity(line);//将直线添加到模子空间中
        obj.Modified += new IAcadObjectEvents_ModifiedEventHandler(obj_Modified);
个中变乱相应函数obj_Modified的暗示如下所示:

.NET是微软新推出的开拓平台,具有浩瀚利益。基于.NET平台对AutoCAD举办二次开拓,可充实操作.NET的各类上风,在担保成果强盛的条件下大大进步开拓速率。

        obj = (AcadObject)((AcadDatabase)db.AcadDatabase).ObjectIdToObject(objId.OldId);

3.行使.NET API

    Line line = new Line(new Point3d(0, 0, 0), new Point3d(200, 200, 0));//建设一条直线

.NET API与传统ObjectARX的区别首要源于在.NET情形下开拓应用措施与在VC情形下开拓应用措施的区别。起首,在VC情形下,措施员必要本身打点内存的申请和开释,而.NET回收了垃圾接纳机制,由.NET框架自行判定内存接纳的机缘并实施接纳,从而办理了令C++措施员头痛的内存走漏题目。也正是因为这个特点,在.NET情形下不能象在C++情形下那样操作析构函数开释其他的资源,必要措施员在措施中显式地开释。在.NET API中,首要通过Dispose来函数举办资源的开释。

    BlockTableRecord btr = (BlockTableRecord)bt[BlockTableRecord.ModelSpace].Open(OpenMode.ForWrite); //得到模子空间的块表记录
try {

[CommandMethod ("AddLine")]

……

写完代码后举办编译,编译完成将获得一个dll文件。在AutoCAD 2006中通过“netload”呼吁即可选择该dll文件举办加载,加载乐成后即可以通过“AddLine”呼吁执行上述代码。遗憾的是今朝的.NET API版本还不支持卸载,若要卸载只能封锁AutoCAD。

    }
foreach (ObjectId objId in btr) {
    bt.Close();//封锁块表

在新推出的AutoCAD 2006中,Autodesk为其开拓增进了.NET API。.NET API提供了一系列托管的外包类(Managed Wrapper Class),使开拓职员可在.NET框架下,行使任何支持.NET的说话,如VB.NET、C# 和Managed C++等对AutoCAD举办二次开拓。其利益是完全面向工具,天圆液压缸筒,在拥有与C++相匹配的强盛成果的同时,具有利便易用的特点,是较抱负的AutoCAD二次开拓器材。

1..NET API简介

public class MyARX : IExtensionApplication {
[assembly: CommandClass (typeof (ARXExample.MyARX) ) ]

    BlockTable bt = (BlockTable)db.BlockTableId.Open(OpenMode.ForRead); //得到块表
AcadObject obj;

二、结论

这样就可以操作.NET API举办开拓了。以下代码可在AutoCAD注册为一个呼吁“AddLine”,该呼吁可在当前事变空间中添加一条出发点为(0,0,0),终点(200,200,0)的直线。代码如下:

其次,ObjectARX中的各类回响器(Reactor)在.NET API中由外包类映射为各类变乱(Event),可通过界说这些变乱的相应函数来相应AutoCAD的各类操纵。同时对付错误信息的处理赏罚也从函数返回值改变为凡是非常来处理赏罚,使其更好地兼容.NET。因为VB.NET、C#等说话都是完全面向工具的,没有全局函数的观念,以是.NET API将ObjectARX下的全局函数封装为.NET API下的某些工具或工具的属性,如ObjectARX下与用户交互的系列全局函数被封装为CommandLinePrompt类。

public void Terminate() {
增进了COM引用后,措施就可以行使很多VBA中的成果了。以AutoCAD ActiveX中的变乱为例,以下代码可觉适当前事变空间中全部的图元添加Modified变乱:

(责任编辑:admin)
分享按钮
------分隔线----------------------------