C#之CAD二次开发实例 (13) 图层操作
# 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.gitgitee.com
原文请关注公众号:数据智能笔记
说明一下:图片为什么带水印,我是从我的知乎转载过来的,我要在知乎和公众号一起发文,所以没有多余时间再编辑一个平台了,可以关注我的公众号看原文!
C#之CAD二次开发实例 (13) 图层操作相关推荐
- c# cad 二次开发 类库 netload 图层操作、创建图层、删除图层、设置当前图层等
c# cad 二次开发 类库 netload 图层操作.创建图层.删除图层.设置当前图层等 using Autodesk.AutoCAD.ApplicationServices; using Auto ...
- 我的CAD二次开发程序中的操作excel的部分
这是我的CAD二次开发程序中的操作excel的部分,特此分享 using System; using System.Collections.Generic; using System.Text; us ...
- 关于objectArx /CAD二次开发中“属性块”操作
关于objectArx /CAD二次开发中"属性块"操作 属性块就是在图块上附加一些文字属性(Attribute),这些文字可以非常方便地修改.属性块被广泛应用在工程设计和机械设计 ...
- c# cad 二次开发 类库 块的操作
c# cad 二次开发 类库 块的操作 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServi ...
- winform 获取焦点_AutoCAD .NET 二次开发实例(13) 获取块参照坐标并输出到Excel
点击蓝字关注我 0 引言 需求分析: 当需要在固定位置插入块或者是批量替换块时,可以通过获取块的坐标值,然后根据坐标位置进行插入块或者替换. 关键的第一步:就是获取块参照的坐标值. 结果: 1. 代码 ...
- c#CAD二次开发全套视频目录
本人非专业编程人员,设计院画图民工一名.自学CAD编程,也写了一些小程序!初期学习lisp编程语言,基本了解CAD各中开发模块,写过一些程序!前段时间自学C#CAD二次开发,遍布网上无教学视频.经过自 ...
- CAD二次开发(C#) 第一节
前言 由于工作需要,最近在学习二次开发,将其记录于此,以便日后查看. 语法 涉及"特性","进程"知识点,需要有所了解 #region CAD二次开发--第一节 ...
- C#之CAD二次开发 (11) 文本对象
# 0. 前言 在CAD中文本对象的处理算是一个很重要的内容了,实际工作中也会遇到很多需要批量处理CAD中文本对象的情况 之前就遇到一个批量一对一替换文本的情况,那个实例代码后面也会贴出来,一个小小的 ...
- cad二次开发——自动运行dll,加载菜单(收集)
1.自动加载dll的方法(个人觉得下面第4个方法会更方便) cad加载dll_实现CAD插件启动自动加载的三种方法_weixin_39774556的博客-CSDN博客从网上或者别处淘来的CAD插件,效 ...
最新文章
- 【camera-radar】相机-毫米波雷达联合标定方案介绍+实现
- MFC Map 许多警告
- DNS入门介绍之三BIND安装配置全过程
- java基础之抽象类和接口
- 李沐《动手学深度学习》PyTorch 实现版开源,瞬间登上 GitHub 热榜!
- 直播预告 | 小米人工智能部崔世起:小爱同学全双工技术实践
- 如何使用腾讯云提供的虚拟主机
- css --- 使用媒体查询当屏幕宽度小于某个值时,隐藏掉某个类
- 关于性能测试的通俗解释
- java游戏服务器面试_我做游戏开发这八年
- 冲刺阶段一 11.15--11.21
- Python 中的全局变量
- android富文本文件存储,Android富文本
- 【转】全栈工程师到底有什么用
- 16哈理工新生赛 B 修建传送门 (双指针)
- 给SpringBoot Web应用配上JavaFx漂亮衣服
- 如何在富途证券开户,富途证券如何开户,如何开通港股账户,如何炒港股
- tf神经网络模型预测泰坦尼克号生还
- DWCS6搭建jsp开发环境及使用ajax实现用户注册(基于文件)
- PHP微信动态二维码活码管理系统源码免授权 独立版 带充值支付