对于CAD二次开发的人来说,可能需要对某一图层下的实体(点,线,面域,块,三维实体)进行不同的操作。下面的方法,即可实现获取指定图层名称下的所有实体ID。

输入参数为图层名称;

返回值为:对象主键集合

说明:该方法中用到了 一下集中类型:

选择结果【PromptSelectionResult】,用来存储选择后的结果;

类型数组【TypedValue[]】,用来填装过滤条件;

过滤器 【SelectionFilter】,用编辑器(editor)过滤时使用;

本人的习惯是首先定义过滤条件(即实例化类型数组),之后再创建过滤器对象。

通过编辑器(Editor)实现过滤后,获得过滤结果。过滤结果类型为ObjectId[] 。遍历该数组即可获得所有满足过滤条件的对象

#region "取得图层下的所有对象id"
        /// <summary>
        /// 取得图层下的所有对象id
        /// </summary>
        /// <param name="name">图层名称</param>
        /// <returns>id集合</returns>
        public ObjectIdCollection GetObjectIdsAtLayer(string name)
        {
                        ObjectIdCollection ids = new ObjectIdCollection();

PromptSelectionResult ProSset = null;
                      TypedValue[] filList = new TypedValue[1] { new TypedValue((int)DxfCode.LayerName, name) };
                        SelectionFilter sfilter = new SelectionFilter(filList);
                      Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
                       ProSset = ed.SelectAll(sfilter);
                     if (ProSset.Status == PromptStatus.OK)
            {
                
                SelectionSet sst = ProSset.Value;
                
                ObjectId[] oids = sst.GetObjectIds();
                
                for (int i = 0; i < oids.Length; i++)
                {
                    
                    ids.Add(oids[i]);
                }
            }

return ids;
        }
        #endregion

以上方法实现了获取指定图层名称的所有实体主键。读者也可以根据自己的需要,编写自己的过滤条件,从而实现不同的功能如:修改方法中的过滤条件:

TypedValue[] filList = new TypedValue[1] { new TypedValue((int)DxfCode.LayerName, name) };

为:

TypedValue[] filList = new TypedValue[2]
                { new TypedValue((int)DxfCode.LayerName, name),
                  new TypedValue((int)DxfCode.Start, GetDxfName(type)) };

时:就可以过滤出指定图层下,指定类型(type)的所有实体

若读者对过滤器不熟悉,可以读一下李冠亿先生的《深居浅出AutoCAD二次开发》中相关的章节。本人则将在后续博客中,和大家讨论过滤器的相关内容。

如有纰漏,请网友指正。

如有问题:请加qq1419226548或QQmail给我。 若转载,请注明出处。谢谢。

CAD 二次开发 图层操作(3)取得指定图层下的所有对象id相关推荐

  1. CAD二次开发(Vba)------ 查找不同图层中(直线、多段线)的相交点,并进行标注、将编号、坐标点输出到excel文件中

    插件地址如下: https://download.csdn.net/download/AIABIUBIU/21004587?spm=1001.2014.3001.5503 插件使用方法 1.在cad中 ...

  2. C++ ARX CAD二次开发实体操作

    得到选中的实体,修改实体如等分线段 AcGeVector3d是点阵的集合,通过等分点的差集得到. 新的点可以通过点与点阵相差得到. static void ArxProject2partLine(vo ...

  3. CAD二次开发--系统找不到指定的文件/应用程序不支持实时(JIT)调试解决办法【即:C#调用外部exe文件在CAD内部执行失败处理办法】

    我们知道一个大型的程序系统很多功能之间是相互独立的,因此对于一个exe可执行文件我们可以直接进行调用,丰富我们程序中的功能!但是今天在测试的时候发现,原本调试时候可以调用的exe文件,在打包后竟提示错 ...

  4. CAD 二次开发 图层操作(1)创建图层

    CAD二次开发的资料比较少,除了李冠亿先生的<深居浅出AutoCAD二次开发>这本书之外,目前没有找到合适的参考资料.现将自己工作中用的的一些方法贴出来.方便各位网友快速入门. #regi ...

  5. C#之CAD二次开发实例 (13) 图层操作

    # 0. 引言 图层在CAD中也是一个重要的角色,自然而然二次开发也必不可少,先来回顾一下图形数据库,也就是下面这个东西 Database db = HostApplicationServices.W ...

  6. c# cad 二次开发 类库 netload 图层操作、创建图层、删除图层、设置当前图层等

    c# cad 二次开发 类库 netload 图层操作.创建图层.删除图层.设置当前图层等 using Autodesk.AutoCAD.ApplicationServices; using Auto ...

  7. c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格

    c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCA ...

  8. 关于objectArx /CAD二次开发中“属性块”操作

    关于objectArx /CAD二次开发中"属性块"操作 属性块就是在图块上附加一些文字属性(Attribute),这些文字可以非常方便地修改.属性块被广泛应用在工程设计和机械设计 ...

  9. 我的CAD二次开发程序中的操作excel的部分

    这是我的CAD二次开发程序中的操作excel的部分,特此分享 using System; using System.Collections.Generic; using System.Text; us ...

最新文章

  1. [导入]MsAjax Lib- Array.remove 函数
  2. oracle M4,oracle高级部分 - osc_9gm4ypss的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 深度揭秘!蚂蚁业务自定义监控大盘是怎么设计的?
  4. 多功能拼团商城源码-带优惠券功能+自适应移动端+对接免签约支付
  5. Maven学习总结(44)——Maven构建时生命周期及其常用集成命令详解
  6. C++_类和对象_C++多态_多态的基本语法_静态多态_动态多态_虚函数---C++语言工作笔记069
  7. 轨迹压缩文献阅读: Similarity-Based Compression of GPS Trajectory Data
  8. maven学习(6)-Maven依赖范围
  9. 自定义控件:属性为控件需要注意的地方
  10. 现学活用的XPath爬取豆瓣音乐
  11. 国网四川电力应用大数据服务经济社会发展
  12. Windows新版算号器技术原理
  13. html field属性,field标签属性详解
  14. lua unpack php,Lua 可变参数 和 table.unpack() 函数
  15. 如何利用微信答题小程序实现盈利呢
  16. python chm模块_python3.7.0官方参考文档 最新api文档 chm
  17. Spring5框架day01之IOC容器
  18. CentOS_7环境搭建L2TP服务器
  19. Termux搭建图形化环境及tk开发
  20. python使用redis_python如何连接redis

热门文章

  1. STM32F103ZE驱动PMW3901光流模块
  2. 开源至上:面试官轮轮虐你?深入剖析
  3. 如何使用EasyNVR+CDN突破萤石云在直播客户端数量上的限制,做到低成本高性价比的直播...
  4. 读计算机带笔记本还是台式,选台式机还是选笔记本?这里有点心得告诉你
  5. 关于滑轮组的计算机知识点,【中考备考】初三物理常考知识点讲解:滑轮
  6. pc端高德地图获取当前位置
  7. IntelliJ IDEA必会的几个常用设置
  8. 【C++】引用以及关联函数(详解)
  9. Open For Bussiness (HelloWorld)
  10. x1 php168,新手快速入门教程