1、添加删除实体
C# ObjectARX二次开发添加删除实体是非常容易主要代码如下:
添加实体:
objId = btr.AppendEntity(entity);
trans.AddNewlyCreatedDBObject(entity, true);
删除实体: entity.Erase(true);
2、基本过程
在代码YunyouXueYuan命名空间,新增Tools类。这个例子非常简单,想学习AutoCAD二次开发(c#、C++等语言)、BIM软件二次开发、Java、python等在线课程的同学,请关注云幽学院的视频课程 yunyou.ke.qq.com。
3、代码实现具体实现方法如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace YunyouXueYuan { public class Tools { #region "添加实体" /// <summary> /// 添加实体。 /// 将实体添加到当前模型空间上。 /// </summary> /// <param name="entityID">实体ID</param> /// <returns>true:成功 false:失败</returns> public bool AddEntity(Entity entity, out ObjectId objId) { objId = ObjectId.Null; try { using (Database db = HostApplicationServices.WorkingDatabase) { using (Transaction trans = db.TransactionManager.StartTransaction()) { using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)) { objId = btr.AppendEntity(entity); trans.AddNewlyCreatedDBObject(entity, true); } trans.Commit(); } } } catch { return false; } return true; } /// <summary> /// 添加实体。 /// </summary> /// <param name="entity"></param> /// <returns></returns> public bool AddEntity(Entity entity) { //返回结果id ObjectId objId = ObjectId.Null; try { using (DocumentLock docLock = Application.DocumentManager.MdiActiveDocument.LockDocument()) { using (Database db = HostApplicationServices.WorkingDatabase) { using (Transaction trans = db.TransactionManager.StartTransaction()) { using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)) { objId = btr.AppendEntity(entity); trans.AddNewlyCreatedDBObject(entity, true); } trans.Commit(); } } } } catch { //添加失败 return false; } return true; } #endregion #region "添加多个实体" /// <summary> /// 添加实体。 /// 将实体添加到当前模型空间上。 /// </summary> /// <param name="entityID">实体ID</param> /// <returns>true:成功 false:失败</returns> public bool AddEntity(Entity[] ents, out ObjectIdCollection objId) { objId = new ObjectIdCollection(); try { using (Database db = HostApplicationServices.WorkingDatabase) { using (Transaction trans = db.TransactionManager.StartTransaction()) { using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)) { foreach (Entity ent in ents) { objId.Add(btr.AppendEntity(ent)); trans.AddNewlyCreatedDBObject(ent, true); } } trans.Commit(); } } } catch { return false; } return true; } #endregion #region "删除实体" /// <summary> /// 删除实体。 /// 删除当前模型空间上的实体。 /// </summary> /// <param name="id">实体ID</param> /// <returns>true:成功 false:失败</returns> public bool DelEntity(ObjectId id) { try { if (!id.IsNull) { using (Database db = HostApplicationServices.WorkingDatabase) { using (Transaction trans = db.TransactionManager.StartTransaction()) { Entity entity = (Entity)trans.GetObject(id, OpenMode.ForWrite, true); entity.Erase(true); trans.Commit(); } } } else { return false; } } catch { return false; } return true; } #endregion #region "删除多个实体" /// <summary> /// 删除实体。 /// 删除当前模型空间上的实体。 /// </summary> /// <param name="entityID">实体ID</param> /// <returns>true:成功 false:失败</returns> public bool DelEntity(ObjectIdCollection ids) { try { using (Database db = HostApplicationServices.WorkingDatabase) { using (Transaction trans = db.TransactionManager.StartTransaction()) { using (BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)) { foreach (ObjectId id in ids) { Entity entity = (Entity)trans.GetObject(id, OpenMode.ForWrite, true); if (entity == null || entity.IsErased == true || entity is ProxyEntity) { continue; } entity.Erase(true); } } trans.Commit(); } } } catch { return false; } return true; } #endregion } }
C#/AutoCAD 2018/ObjectArx/二次开发添加删除实体的工具函数(四)的更多相关文章
-
C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五)
C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五) 1.创建一个图形对象的步骤如下见上一篇博客(三)2.添加删除实体的工具函数见上一篇博客(四) 3.添加圆的例子(完 ...
-
C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)
1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录( ...
-
使用.NET开发AutoCAD——C#/AutoCAD 2018/ObjectArx/二次开发入门(二)
1.开发环境配置: (1)安装AutoCAD2018: (2)安装VS2015: (3)安装ObjectARX 2018类库: (4)安装ObjectARX 2018 .NET开发向导(ObjectA ...
-
C#/AutoCAD 2018/ObjectArx/二次开发再说实体(六)
这些函数对大家很有用,如果想获取详细源代码请加云幽学院yunyou.ke.qq.com报名免费课程,如果想学习更系统.更全面的知识请报名收费课程,有大量开发案例共享. 1.获取模型空间中所有实体 #r ...
-
ObjectARX二次开发创建自己的静态库,如同objectARX库一样
objectARX二次开发的时候,经常会用到一些重复使用的类,如果类已经足够的好,那么我们可以编译成静态库,加快开发和编译的速度,提高工作效率. 环境vs2010+objectARX2012wizar ...
-
VC++开发AutoCAD 2018/objectARX 用向导新建项目无法新建的问题
话说笔者最近想用新机子上装的AutoCAD ObjectARX 2018来进行二次开发,兴致勃勃安装了ARX API和向导, 然后打开VS2015,新建项目,无法新建. 折腾了一下,还是没有解决,后面 ...
-
jooml二次开发---添加文章组件
在写一个joomla组件的时候需要手动添加excel表格,并把表格当做文章的内容添加到前台文章中, 开始不知道怎么下手,索性先把一个基本的组件写出来,在joomla网站上测试是可以访问这个组件的,在p ...
-
Arcengine 二次开发添加右键菜单
最近在搞arcengine 二次开发,遇到了好多问题,也通过网上查资料试着慢慢解决了,把解决的步骤记录下来,有需要帮助的可以看一下,也欢迎各位来批评指正. 想给自己的map application在图 ...
-
通达OA 公共文件柜二次开发添加管理信息(图文)
公共文件柜当内容较多时,管理起来非常easy乱,特别是当有多个名字相近的目录时.这里通过简单的开发添加了两个管理信息,能够通过添加备注的方式加以区分. watermark/2/text/aHR0cDo ...
随机推荐
-
PHP反射API
近期忙着写项目,没有学习什么特别新的东西,所以好长时间没有更新博客.我们的项目用的是lumen,是基于laravel的一个轻量级框架,我看到里面用到了一些反射API机制来帮助动态加载需要的类.判断方法 ...
-
POJ1584 判断多边形是否为凸多边形,并判断点到直线的距离
求点到直线的距离: double dis(point p1,point p2){ if(fabs(p1.x-p2.x)<exp)//相等的 { return fabs(p2.x-pe ...
-
对上次“对字符串进行简单的字符数字统计 探索java中的List功能 ”程序,面向对象的改进
之前的随笔中的程序在思考后发现,运用了太多的static 函数,没有将面向对象的思想融入,于是做出了一下修改: import java.util.ArrayList; import java.util ...
-
struts2 validation.xml 注意点
1.首先应该注意validation.xml的名字,一定要以Action的类名加“-validation.xml”作为文件名.入LoginAction-validation.xml. 2.LoginA ...
-
static:get()什么意思
在类里面static关键词相当于self关键词
-
c语言中堆栈和静态空间
什么是堆空间.栈空间与静态空间 堆空间:由程序员自己分配空间,如malloc需要指定分配多少个多大的字节空间,不用的时候需要自己释放 栈空间:栈空间是由系统自动分配与释放,如int,char等大小都已 ...
-
解决netaddr不能安装0.7.6以上版本
今天在Jenkins上添加了两个新jobs,但是同事提交代码后的自动测试运行出现错误.查看原因是tox命令在安装包依赖的时候,找不到大于0.7.6以上的版本,但可是我们明明安装过0.7.10了呀. 后 ...
-
解决 TCP_socket 粘包问题
所谓粘包问题主要还是C/S两端数据传输时 因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的 根本原因:粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多 ...
-
Xcode搭建Python编译环境
* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...
-
Unity3d-Particle System系统的学习(三)
这节课我们来实战下上几节讲的几乎所有Particle System用到的参数. 我们今天制作下图所示的粒子: 类似于带有光晕的魔法球.用到的材质也就是上节课用到的材质贴图. http://pan.ba ...