C#进行CAD二次开发学习笔记-01

需要引用CAD的库文件

accoremad.dll
acdbmgd.dll
acmgd.dll

这些库文件在CAD的安装目录下

常用接口和类

// 获取当前数据库 写法1
Database db = HostApplicationServices.WorkingDatabase;
// 或者 写法2
//Document doc = Application.DocumentManager.MdiActiveDocument;
//Database = doc.Database;

一个示例函数,添加实体到当前数据库
关键知识点:Transaction事务的使用:在C# .Net进行CAD实体的编辑修改时,需要开启事务,在编辑完成之后,提交事务

// 示例函数。添加实体到数据库中
public static ObjectId AddEntityToDatabase(this Database db, Entity ent)
{
	ObjectId idRet = ObjectId.Null;
	// 在C# .Net进行CAD实体的编辑修改时,需要开启事务,在编辑完成之后,提交事务
	using(Transaction trans = db.TransactionManager.StartTransaction())
	{
		// 打开块表
		BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
		// 打开块表记录
		BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
		// 将实体添加到块表记录
		idRet = btr.AppendEntity(ent);
		// 添加新的实体到事务中, 很关键
		trans.AddNewlyCreatedDBObject(ent, true);
		trans.Commit();
	}            
	return idRet;
}

// 判断实体是否已经加入到数据库中
bool bNew = ent.IsNewObject; // true:已经添加到数据库中,如果需要编辑,要用写方式打开,false,未在数据库中添加,可直接编辑

一些实体和常用类

// CAD实体
Line line = new Line(); // 直线
Arc arc = new Arc(); // 圆弧
Circle circle = new Circle(); // 园
Polyline pl = new Polylline(); // 多段线
Point2d pt2d = new Point2d(); // 2d点
Point3d pt3d = new Point3d(); //3d点
// 常用类型
Vector3d vct = new Vector3d(); // 向量
Matrix3d matrix = new Matrix3d(); // 矩阵,实体在编辑:移动,复制,镜像,阵列时经常用到相关内容
// 一些其他
ObjectId idRet = ObjectId.Null; // 实体id

使用C#开发时,实体的一些基础的接口和ObjectArx的接口有一点差别,此处不一一记录,需要慢慢积累。

与C++ ---- ObjectArx库的一些区别

  1. 在C#中,实体new出来的是对象,不是指针Line line = new Line(); 此处line不是指针对象。不用进行指针清理等工作
  2. 在事务中打开的实体对象,不用专门进行关闭,无论是都打开还是写打开。
  3. C#和C++的一些区别,比如集合使用List<>; 或者在静态函数的第一个参数,使用关键字this修饰时,可以使用第一个参数的对象直接调用该函数,挺好用的。
  4. ……
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值