# 0. 引言

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

Database db = HostApplicationServices.WorkingDatabase;

图形数据库中包含了很多表(Tables),就像之前使用的块表一样,图层的操作也有一个叫做层表的东西(LayerTable),每一个层表也对应着一个相应的层表记录

之前说过块表(BlockTable),每一个块表对应一个块表记录(BlockTableRecord),模型空间,布局空间都是属于块表记录,绘图相当于是将其放在了块表记录的模型空间里面

同样操作图层也是在操作层表记录

而Database又通过维护下面图中所示的九张表格记录着相应的内容

搞不清楚这些表不要紧,目前先记住前两个

捋清楚上面就可以开始下一步了

下面通过几个关于图层操作的例子来消化图层操作

# 1. 获取所有图层名称

这里也是封装到方法里面,供以后调用

# 2. 删除图层

# 3. 删除所有未使用的图层

# 4. 强行删除图层及图层上的所有实体对象

        /// <summary>/// 强行删除图层及图层上的所有实体对象/// </summary>/// <param name="db">图形数据库</param>/// <param name="layerName">图层名</param>/// <param name="delete"></param>/// <returns></returns>public static bool DeleteLayer(this Database db, string layerName,bool delete){if (layerName == "0" || layerName == "Defpoints") return false;bool isDeleteOK = false;using (Transaction trans = db.TransactionManager.StartTransaction()){LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForRead);lt.GenerateUsageData();if (lt.Has(layerName)){LayerTableRecord ltr = (LayerTableRecord)lt[layerName].GetObject(OpenMode.ForWrite);if (delete){if (ltr.IsUsed){ltr.deleteAllEntityInLayer();  }if (db.Clayer == ltr.ObjectId){db.Clayer = lt["0"];}ltr.Erase();isDeleteOK = true;}else{if (!ltr.IsUsed && db.Clayer != lt[layerName]){ltr.Erase();isDeleteOK = true;}}   }else{isDeleteOK = true;}trans.Commit();}return isDeleteOK;}

# 5. 删除指定图层上的所有实体对象

完整代码自取地址:

https://gitee.com/yuzhaokai/cad_secondary_development_code.git​gitee.com

原文请关注公众号:数据智能笔记

说明一下:图片为什么带水印,我是从我的知乎转载过来的,我要在知乎和公众号一起发文,所以没有多余时间再编辑一个平台了,可以关注我的公众号看原文!

C#之CAD二次开发实例 (13) 图层操作相关推荐

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

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

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

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

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

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

  4. c# cad 二次开发 类库 块的操作

    c# cad 二次开发 类库 块的操作 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServi ...

  5. winform 获取焦点_AutoCAD .NET 二次开发实例(13) 获取块参照坐标并输出到Excel

    点击蓝字关注我 0 引言 需求分析: 当需要在固定位置插入块或者是批量替换块时,可以通过获取块的坐标值,然后根据坐标位置进行插入块或者替换. 关键的第一步:就是获取块参照的坐标值. 结果: 1. 代码 ...

  6. c#CAD二次开发全套视频目录

    本人非专业编程人员,设计院画图民工一名.自学CAD编程,也写了一些小程序!初期学习lisp编程语言,基本了解CAD各中开发模块,写过一些程序!前段时间自学C#CAD二次开发,遍布网上无教学视频.经过自 ...

  7. CAD二次开发(C#) 第一节

    前言 由于工作需要,最近在学习二次开发,将其记录于此,以便日后查看. 语法 涉及"特性","进程"知识点,需要有所了解 #region CAD二次开发--第一节 ...

  8. C#之CAD二次开发 (11) 文本对象

    # 0. 前言 在CAD中文本对象的处理算是一个很重要的内容了,实际工作中也会遇到很多需要批量处理CAD中文本对象的情况 之前就遇到一个批量一对一替换文本的情况,那个实例代码后面也会贴出来,一个小小的 ...

  9. cad二次开发——自动运行dll,加载菜单(收集)

    1.自动加载dll的方法(个人觉得下面第4个方法会更方便) cad加载dll_实现CAD插件启动自动加载的三种方法_weixin_39774556的博客-CSDN博客从网上或者别处淘来的CAD插件,效 ...

最新文章

  1. 【camera-radar】相机-毫米波雷达联合标定方案介绍+实现
  2. MFC Map 许多警告
  3. DNS入门介绍之三BIND安装配置全过程
  4. java基础之抽象类和接口
  5. 李沐《动手学深度学习》PyTorch 实现版开源,瞬间登上 GitHub 热榜!
  6. 直播预告 | 小米人工智能部崔世起:小爱同学全双工技术实践
  7. 如何使用腾讯云提供的虚拟主机
  8. css --- 使用媒体查询当屏幕宽度小于某个值时,隐藏掉某个类
  9. 关于性能测试的通俗解释
  10. java游戏服务器面试_我做游戏开发这八年
  11. 冲刺阶段一 11.15--11.21
  12. Python 中的全局变量
  13. android富文本文件存储,Android富文本
  14. 【转】全栈工程师到底有什么用
  15. 16哈理工新生赛 B 修建传送门 (双指针)
  16. 给SpringBoot Web应用配上JavaFx漂亮衣服
  17. 如何在富途证券开户,富途证券如何开户,如何开通港股账户,如何炒港股
  18. tf神经网络模型预测泰坦尼克号生还
  19. DWCS6搭建jsp开发环境及使用ajax实现用户注册(基于文件)
  20. PHP微信动态二维码活码管理系统源码免授权 独立版 带充值支付

热门文章

  1. Wacom对Blender的设置
  2. 不凡的夫夫(斯特林公式)
  3. HDU1597 find the nth digit
  4. 成分分析类毕业论文文献包含哪些?
  5. 通达OA短信平台,通达OA与天瑞短信平台深度集成,安全可靠,方便快捷
  6. 操作系统哲学原理(18)文件原理-文件系统
  7. 域名icp备案用什么工具查询?
  8. MediaPlayer,切歌进入setOnCompletionListener的问题
  9. 普朗克定律:不同温度下黑体的光谱辐射强度按波长分布的规律Matlab画图
  10. 【WORD】word无法启动转换器mswrd632.wpc导致WORD打不开