C#/AutoCAD 2018/ObjectArx/二次开发再说实体(六)
这些函数对大家很有用,如果想获取详细源代码请加云幽学院yunyou.ke.qq.com报名免费课程,如果想学习更系统、更全面的知识请报名收费课程,有大量开发案例共享。
1、获取模型空间中所有实体
#region "获取模型空间中所有实体"
/// <summary>
/// 获取模型空间中所有实体
/// </summary>
/// <param name=""></param>
/// <returns>实体ID的列表</returns>
public List<Autodesk.AutoCAD.DatabaseServices.ObjectId> GetEntitiesInModelSpace()
{
List<Autodesk.AutoCAD.DatabaseServices.ObjectId> objects =
new List<Autodesk.AutoCAD.DatabaseServices.ObjectId>();
using (Autodesk.AutoCAD.DatabaseServices.Transaction transaction =
Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.
MdiActiveDocument.TransactionManager.StartTransaction())
{
Autodesk.AutoCAD.DatabaseServices.BlockTable blockTable =
(Autodesk.AutoCAD.DatabaseServices.BlockTable)transaction.GetObject(
Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase.BlockTableId,
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead);
Autodesk.AutoCAD.DatabaseServices.BlockTableRecord blockTableRecord =
(Autodesk.AutoCAD.DatabaseServices.BlockTableRecord)transaction.GetObject(
blockTable[Autodesk.AutoCAD.DatabaseServices.BlockTableRecord.ModelSpace],
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead);
foreach (Autodesk.AutoCAD.DatabaseServices.ObjectId objId in blockTableRecord)
{
objects.Add(objId);
}
transaction.Commit();
}
return objects;
}
#endregion
2、获取实体
#region "获取实体"
/// <summary>
/// 获取实体
/// </summary>
/// <param name="ObjectId"></param>
/// <returns>DBObject</returns>
private DBObject GetObject(ObjectId id)
{
DBObject obj = null;
using (Transaction transaction = Application.DocumentManager.
MdiActiveDocument.TransactionManager.StartTransaction())
{
obj = transaction.GetObject(id,
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead, true);
transaction.Commit();
}
return obj;
}
#endregion
3、给实体添加XData
#region "如何给实体添加XData"
/// <summary>
/// 如何给实体添加XData
/// </summary>
/// <param name="DBObject,int"></param>
/// <returns>bool</returns>
public static bool AttachXData(DBObject obj, int MyData)
{
RegAppTableRecord app = new RegAppTableRecord();
app.Name = "云幽学院";
using (Transaction transaction =
Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
{
try
{
Database workingdatabase = HostApplicationServices.WorkingDatabase;
SymbolTable table = (SymbolTable)transaction.GetObject(workingdatabase.RegAppTableId,
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, false);
if (!table.Has(app.Name))
{
table.Add(app);
transaction.AddNewlyCreatedDBObject(app, true);
}
if (!obj.IsWriteEnabled)
obj.UpgradeOpen();
obj.XData = new ResultBuffer(
new TypedValue((int)DxfCode.ExtendedDataRegAppName, app.Name),
new TypedValue((int)DxfCode.ExtendedDataInteger32, MyData));
transaction.Commit();
transaction.Dispose();
}
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.添加删除实体 C# ObjectARX二次开发添加删除实体是非常容易主要代码如下: 添加实体: objId = btr.AppendEntity(entity); trans.AddNewlyCr ...
- 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 ...
- ObjectARX二次开发创建自己的静态库,如同objectARX库一样
objectARX二次开发的时候,经常会用到一些重复使用的类,如果类已经足够的好,那么我们可以编译成静态库,加快开发和编译的速度,提高工作效率. 环境vs2010+objectARX2012wizar ...
- VC++开发AutoCAD 2018/objectARX 用向导新建项目无法新建的问题
话说笔者最近想用新机子上装的AutoCAD ObjectARX 2018来进行二次开发,兴致勃勃安装了ARX API和向导, 然后打开VS2015,新建项目,无法新建. 折腾了一下,还是没有解决,后面 ...
- AutoCAD ObjectARX 二次开发(2020版)--3,执行ARX文件--
上一节中我们在initApp()函数中,将helloWorld()函数注册给了CAD主程序,注册指令的字符串为“Hello”. void initApp() { acedRegCmds->add ...
- [转]ObjectARX二次开发vs编译器版本ARX版本对应说明
- TFS二次开发系列:六、TFS的版本控制
在TFS中对于版本控制是在WorkSpace工作区来控制的. 首先我们先整理WorkSpace的一些基本使用方法. CheckIn:迁入挂起的操作 CreateMapping:创建一个本地映射地址 D ...
随机推荐
- Struts2(六) 用Struts完成客户列表显示
Struts完成客户列表显示 所用的基础知识 在之前的随笔中已经讲过.这篇是介绍如何使用Struts 完成客户列表显示 . 下面是 完成的代码执行逻辑图: 抽取项目部分代码 相信大家认真看一遍就明 ...
- Struts(五)Action的访问
在struts开发中,Action作为框架的核心类,实现对用户的请求的处理,Action被称为业务逻辑控制器.一个Action类代表一次请求或调用.Action就是用来处理一次用户请求的对象 Acti ...
- java 堆 栈 常量池
java 堆中保存new 出来的对象(每个对象都包含一个与之对应的class的信息,[class信息存放在方法区]),堆中分配的内存,有虚拟机的自动垃圾回收器管理,栈内存只对其所属线程可见. java ...
- eclipse -解决Unhandled event loop exception GC overhead limit exceeded
今天第一次遇到这个问题, 拿出来和大家分享一下. 首先说明下我发现这个错误的过程, 看下面的三张图片 1,在本地weblogic发布项目的时候 2 , 等待一段时间, 出现以下错误 3 , 点击上 ...
- 异常-----Template user.ftl not found
freemarker 1.错误描述 java.io.FileNotFoundException: Template user.ftl not found. at freemarker.template ...
- python根据索引删除内容并写入文本
在python中,有个好用的模块linecache,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行.linecache.getline(filename,li ...
- CSS实现网页背景图片自适应全屏
一张清晰漂亮的背景图片能给网页加分不少,设计师也经常会给页面的背景使用大图,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块露白,简而言之,就是实现能自适应屏幕大小又不会变形 ...
- NOIp2017 滚粗记
NOIp2017 滚粗记 Day0 早上 早自习的时候,班主任忽然告诉我们, 我们要参加期中考试... 这对于我们真是一个沉重的打击... 但是,管不着了 明天就死去考试了 上午 \(8:10\)到了 ...
- Graham凸包算法简介
凸包真是一个神奇的算法.. 概念 凸包,我理解为凸多边形 叉积 对于向量AB和向量BC,记向量AB*向量BC = AB * BC * sin ∠ABC,而叉积的绝对值其实就是S△ABC/2 对于平面上 ...
- postgresql搭建从库
postgresql搭建从库 master 10.40.196.27 slave 10.40.55.69 需求:master和slave作为主从流复制,当master宕机后,slave切换为新主 ...