100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C#进行CAD二次开发学习笔记-01

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

时间:2023-09-07 05:11:07

相关推荐

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

一些基础知识

需要引用CAD的库文件常用接口和类与C++ ---- ObjectArx库的一些区别

需要引用CAD的库文件

accoremad.dll

acdbmgd.dll

acmgd.dll

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

常用接口和类

// 获取当前数据库 写法1Database 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);mit();} 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库的一些区别

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

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