.NET 开发AutoCAD2006指南(二)
C#才鸟
在上一篇文章中向大家简单讲了.NET开发AutoCAD的流程,其中介绍了我编写的一个简化程序开发的ZHFARX库。下面向大家介绍ZHFARX库中的主要函数及如何用它来编写.NET程序。关于ZHFARX库的所有函数的说明,请大家参考本章附件中的ZHFARX帮助文档。
在介绍ZHFARX库之前,让我们首先来了解一下有关的基本概念。你可以把AutoCAD看作为一个数据库,而AutoCAD中有关的东西都放在这个数据库的相关表中。例如,你用Line命令在AutoCAD的模型空间中添加了一条直线,那么AutoCAD会创建一个直线类的实例并把它加入到数据库的模型空间块表记录中。在传统的C++编写ObjectARX程序的时候,你必须首先打开当前数据库的块表(因为模型空间是在块表中的),然后打开模型空间对应的块表记录,在记录中加入直线类的实例,然后分别关闭块表和模型空间块表记录。而在.NET程序中,相应的代码编写是这样的:
Database db= Application.DocumentManager.MdiActiveDocument.Database;
//获得当前数据库
DBTransMan tm=db.TransactionManager;
//获取事务处理
using(Transaction trans=tm.StartTransaction())//开始事务处理
{
BlockTable bt=(BlockTable)tm.GetObject(db.BlockTableId,OpenMode.ForRead,false);
//打开当前数据库的块表
BlockTableRecord btr=(BlockTableRecord)tm.GetObject(bt[BlockTableRecord.ModelSpace],OpenMode.ForWrite,false);
//打开模型空间块表记录
btr.AppendEntity(ent);//在记录中加入实体
tm.AddNewlyCreatedDBObject(ent,true);//
trans.Commit();//提交事务
}
从上面的代码中可以看到,.net用事务处理代替了C++中的打开和关闭操作(当然你也可以像C++一样使用相应的Open和Close函数来进行打开和关闭的操作,但ObjectARX托管封装类已把这两个函数标记成了过时的函数,也就是说不建议用户使用它们)。
有一点要大家注意的是,对象没有被加入到AutoCAD数据库之前,你可以对它进行直接的操作(如改变颜色,移动,设置实体的几何属性等)。但一旦对象被加入到AutoCAD数据库中,你就必须使用事务处理来打开它然后进行相应的操作。比如说,你在AutoCAD中加入了上面的直线,而你想改变这条直线的颜色,你不能直接调用直线的Color或ColorIndex属性来进行设置,你必须首先用事务处理的GetObject()函数打开这个直线对象,然后你才能调用Color或ColorIndex属性来对直线设置颜色。
上一页 下一页






