这些函数对大家很有用,如果想获取详细源代码请加云幽学院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/二次开发再说实体(六)的更多相关文章

  1. C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五)

    C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五) 1.创建一个图形对象的步骤如下见上一篇博客(三)2.添加删除实体的工具函数见上一篇博客(四) 3.添加圆的例子(完 ...

  2. C#/AutoCAD 2018/ObjectArx/二次开发添加删除实体的工具函数(四)

    1.添加删除实体 C# ObjectARX二次开发添加删除实体是非常容易主要代码如下: 添加实体: objId = btr.AppendEntity(entity); trans.AddNewlyCr ...

  3. C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)

    1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录( ...

  4. 使用.NET开发AutoCAD——C#/AutoCAD 2018/ObjectArx/二次开发入门(二)

    1.开发环境配置: (1)安装AutoCAD2018: (2)安装VS2015: (3)安装ObjectARX 2018类库: (4)安装ObjectARX 2018 .NET开发向导(ObjectA ...

  5. ObjectARX二次开发创建自己的静态库,如同objectARX库一样

    objectARX二次开发的时候,经常会用到一些重复使用的类,如果类已经足够的好,那么我们可以编译成静态库,加快开发和编译的速度,提高工作效率. 环境vs2010+objectARX2012wizar ...

  6. VC++开发AutoCAD 2018/objectARX 用向导新建项目无法新建的问题

    话说笔者最近想用新机子上装的AutoCAD ObjectARX 2018来进行二次开发,兴致勃勃安装了ARX API和向导, 然后打开VS2015,新建项目,无法新建. 折腾了一下,还是没有解决,后面 ...

  7. AutoCAD ObjectARX 二次开发(2020版)--3,执行ARX文件--

    上一节中我们在initApp()函数中,将helloWorld()函数注册给了CAD主程序,注册指令的字符串为“Hello”. void initApp() { acedRegCmds->add ...

  8. [转]ObjectARX二次开发vs编译器版本ARX版本对应说明

  9. TFS二次开发系列:六、TFS的版本控制

    在TFS中对于版本控制是在WorkSpace工作区来控制的. 首先我们先整理WorkSpace的一些基本使用方法. CheckIn:迁入挂起的操作 CreateMapping:创建一个本地映射地址 D ...

随机推荐

  1. 双刃剑MongoDB的学习和避坑

    双刃剑MongoDB的学习和避坑 MongoDB 是一把双刃剑,它对数据结构的要求并不高.数据通过key-value的形式存储,而value的值可以是字符串,也可以是文档.所以我们在使用的过程中非常方 ...

  2. python爬虫--爬取某网站电影信息并写入mysql数据库

    书接上文,前文最后提到将爬取的电影信息写入数据库,以方便查看,今天就具体实现. 首先还是上代码: # -*- coding:utf-8 -*- import requests import re im ...

  3. java实现组合问题

    刚才刚更新了排列问题,顺带把组合问题也发表一下 1.问题描述: 已知有m个球,从m个球中取n个球有多少种不同的取法. 2.输入示例: 请输入总球的个数和要取的球的个数 6 5 3.输出示例: 共有6种 ...

  4. 二、CSS

    css基本语法及页面引用 css基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值 ...

  5. [HDU5799]This world need more Zhu

    题面戳我 题意: 给定一棵树,m次操作,每次询问某一棵子树中,或者是某一条路径上,出现次数为a的所有数字之和与出现次数为b的所有数字之和的gcd 原题表述:the \(\gcd\) of the su ...

  6. [BZOJ4736]温暖会指引我们前行

    BZOJ(BZOJ上的是什么鬼...) UOJ 任务描述 虽然小R住的宿舍楼早已来了暖气,但是由于某些原因,宿舍楼中的某些窗户仍然开着(例如厕所的窗户),这就使得宿舍楼中有一些路上的温度还是很低. 小 ...

  7. 使用Ant打包Web前台程序

    概述 本文通过一个简单的Web项目作为例子描述如何用ANT完成Web前台程序的打包工作.包含文件拷贝.编译.打包三部分:完成这三部就可以得到一个War了,放到Tomcat下就可以运行了. ANT的安装 ...

  8. Linux中“is not in the sudoers file”解决方法

    当在终端执行sudo命令时,系统提示"hadoop is not in the sudoers file": 其实就是没有权限进行sudo,解决方法如下(这里假设用户名是cuser ...

  9. Windows下Python环境的搭建

    我刚开始接触Python没多久,当然这也是为初学者来更好的去入门Python,我电脑上既跑着Windows也跑着Red Hat的Linux,相比较而言,开发我还是更青睐于Linux系统,很多开发工具红 ...

  10. EasyUI动态加载panel,并给panel添加内容

    例子: 给布局内动态添加一个panel,给panel一个id,加内容的时候加到这个id里就可以了 var str=$('<div> <textarea id="contex ...