100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > api arx autocad_[ARX]利用AutoCAD .NET API进行AutoCAD的二次开发(一)

api arx autocad_[ARX]利用AutoCAD .NET API进行AutoCAD的二次开发(一)

时间:2022-01-07 00:29:49

相关推荐

api arx autocad_[ARX]利用AutoCAD .NET API进行AutoCAD的二次开发(一)

利用AutoCAD API进行AutoCAD的二次开发(一)

--直线

大家好!从今天开始我向大家介绍如何利用AutoCAD API进行AutoCAD的二次开发。由于我只学过C#,因此在所讲的例子中一律使用C#。至于广大的程序员,我想编程的原理是一样的,并且因为和C#都属于.net语言,因此熟悉的朋友对理解C#程序是没有太大问题的(呵呵,如果有哪位愿意把相关的C#程序翻译成程序,那就更好了)。

由于AutoCAD API是比较新的东西,我几乎没有找到比较系统的教程或参考,因此我会使用明经通道出版的《AutoCAD VBA 开发精彩实例教程》的实例来进行讲解。

好了,闲话少说,让我们直接进入 AutoCAD API的世界。

一、准备工作

这指的是如何添加相关的引用和命名空间。用AutoCAD API进行AutoCAD的二次开发,必须添加的引用是acdbmgd.dll和acmgd.dll,这可以在AutoCAD的安装目录下找到。还必须添加的是在visual 的添加引用时在com选项下选择“AutoCAD 类型库”和“AutoCAD/ObjectDBX Common 16.0类型库”这两项。

然后在程序的开头加入以下命名空间:

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.Colors;

using Autodesk.AutoCAD.Geometry;

using Autodesk.AutoCAD.Runtime;

using DBTransMan=Autodesk.AutoCAD.DatabaseServices.TransactionManager;

using Autodesk.AutoCAD.Interop;

using Autodesk.mon;

这些命名空间是要在每一个程序中都要加入的。

二、第一个实例--创建直线

(1)在visual 中,新建一个类库工程,然后添加相关的引用及在程序的开头加入有关的命名空间(请参见一)。

(2)创建基准函数(AddLine)。基准函数就是与系统提供的方法一致的函数。其实现的步骤如下:

l在程序文件中加入以下私有字段:

private Database db; //代表AutoCAD数据库对象

private DBTransMan tm; //代表AutoCAD事务处理管理器

private Transaction myT;// 代表AutoCAD事务处理

BlockTable bt; //代表AutoCAD块表

BlockTableRecord btr;// 代表AutoCAD块表记录对象

l在类的构造函数部分加入以下代码:

db = HostApplicationServices.WorkingDatabase;//取得当前运行的AutoCAD的数据库对象

tm = db.TransactionManager;// 定义一事务处理管理器

l主程序AddLine

public Line AddLine(Point3d pt1, Point3d pt2)

{

Line line;//声明一直线对象

try

{

Initialize();//相关的初始化工作,是一自定义函数

line = new Line(pt1, pt2);//给line对象赋于具体的值

btr.AppendEntity(line);

tm.AddNewlyCreatedDBObject(line, true);//在AutoCAD中加入创建的直线

mit();//提交事务处理

ffice

ffice" />

}

finally

{

DisposeAll();//有关的清理工作,是一自定义函数

}

return line;

}

上面程序中的Initialize函数如下:

public void Initialize()

{

myT = tm.StartTransaction();//开启事务处理

bt = (BlockTable)tm.GetObject(db.BlockTableId, OpenMode.ForRead, false);//获取AutoCAD块表对象

btr = (BlockTableRecord)tm.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false); //获取AutoCAD块表记录对象

}

DisposeAll函数如下:

public void DisposeAll()

{

bt.Close();//关闭块表

btr.Close();//关闭块表记录

myT.Dispose();//销毁事务处理

}

如果大家对上面的东西不是很清楚的话,也没有关系,因为你只要知道这是前期的准备工作,以后只要调用相关的函数就可以了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。