5. 块定义(AttributeDefinition)
愿你出走半生,归来仍是少年!
环境:.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6.
目录
1. 插入块定义
2. 块定义的属性定义列表获取
在CAD中针对点的符号化通常使用块参照进行表达,在CAD中对应Insert实体,在开发中对应的类为BlockReference。在插入Insert实体前,通常需要在CAD的dwg文件中插入块定义对象。在CAD的操作界面中也可以看见当前文件中包含了哪些块定义。
在CAD的块表中包含多条块记录,一个块定义其实就是一条记录。所以针对块定义的操作其实也就是针对块表的操作。
1. 插入块定义
此处插入块定义的方法是做了一个基于System.IO.FileInfo的扩展方法,通过FileInfo对象可以比较方便的在插入块定义前进行文件存在的判断以及文件类型的判断,这样能保证插入的文件存在且文件肯定为dwg文件。
/// <summary>/// 将指定文件插入当前的文档中作为块定义/// </summary>/// <param name="file">dwg文件</param>/// <param name="trans">事务</param>/// <param name="db">数据库</param>public static void InsertBlockDefine(this FileInfo file ){try{Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;using (Transaction trans = doc.Database.TransactionManager.StartTransaction()){if (!file.Exists){return;}if (file.Extension.ToUpper() != ".DWG"){return;}//当前文档块表BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;string defineName = file.Name.Replace(file.Extension, "");//块表中存在该块表记录, 并且没有被删除if (bt.Has(defineName) && !bt[defineName].IsErased)return;else{using (Database defineDb=new Database(false,true)){//读取DWG文件信息; 参数: 文件名, 打开方式, 是否允许转换版本, 密码defineDb.ReadDwgFile(file.FullName, FileShare.Read, true, null);//关闭、释放读取dwg的库defineDb.CloseInput(true);//将一个数据库插入到当前数据库的一个块中ObjectId idBTR = db.Insert(defineName, defineDb, false);} }trans.Commit();}}catch (Exception ex){throw ex;}}
2. 块定义的属性定义列表获取
块定义的优势就是包含了自定义图形并且可以随意的设置属性,以保证在CAD中可以表达出点位置下的空间和属性。
3. 获取所有块定义
当要对图纸进行清理时,会存在将多余的块定义删除,这个时候需要获取所有的块定义。
5. 块定义(AttributeDefinition)相关推荐
- cad二次开发-C#-VS-镜像-判断用户当前是否已选择实体-将实体对象添加到模型空间-添加实体到块表记录-将块定义插入到模型空间
创建新图层 public static void CreateLayer(string LayerName){Document acDoc = Application.DocumentManager. ...
- (17)ObjectARX2015 + vs2012创建块定义
1. 说明 本篇举例块定义中包含两条直线和一个圆. 2. 思路 所有的实体都保存在块表记录中,而块表记录则存储在块表中.实际上,用户在 AutoCAD 中定义块相当于增 ...
- lisp删除块中图元_删除块定义以及删除块参照|二次开发objectarx-lisp|中国膜结构网|PVDF|ETFE|PTFE|进口膜材|国产膜材|膜材价格 - 中国最专业的膜结构论坛...
删除块定义以及指定的块中块(结合上一章) void CTest5::deleteAcDbBlockReference(CString& strBlockName) { // 获得当前图形数据库 ...
- python定义模块结束语_python-模块定义、导入、优化
在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 说的通俗点:模块就好比 ...
- python基础5-模块定义、导入方法、import本质、time和datetime、random、os、sys、shutil、shelve、xml、ConfigParser、hashlib、re
目录 1. 定义 2.使用方法(导入方法) 3.import的本质 4.导入优化 5.模块的分类 6.内置模块 time和datetime模块 random模块 os模块 sys模块 shutil模块 ...
- 定义__asm块作为C宏
Microsoft 专用 C 宏用于插入程序集代码提供了一种简便方式.源代码,但是,它们要求额外的问题,因为宏展开到一个逻辑行. 若要创建无困难宏,请遵循以下规则: __asm 块括在大括号. 将在每 ...
- AutoCAD.NET学习笔记之绘制、插入图形和块
AutoCAD打印模型的图元的基本组成是"块",其存储于内部数据库中的块表之中. 目录 访问内部数据库的方法 访问块表的方法 块表.模型空间 绘制.插入图形 插入块 访问内部数据库 ...
- 6.块参照(BlockReference)
愿你出走半生,归来仍是少年! 环境:.NET FrameWork4.5.ObjectArx 2016 64bit.Entity Framework 6. 目录 1. 普通块引用的插入 2. 属性块引用 ...
- 基于C#的AutoCAD二次开发之块操作
基于C#的AutoCAD二次开发之块操作 什么是块? 块由多个在逻辑上相关的图形对象所定义的整体. 块的优点有哪些 统一作业标准.提高作业效率 压缩图形文件 便于修改和维护 块的分类 块的分类 简单块 ...
- c#CAD二次开发 块、属性块的一些重要的知识点概念
本人录制c#CAD二次开发视频 基础入门全套,感兴趣可以淘宝搜索店铺 PT的cad小店 https://i.xue.taobao.com/detail.htm?spm=a2174.7765247.0. ...
最新文章
- java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
- linux tcpdump monitor模式 抓不到包 解决办法
- DOS命令编译JAVA程序
- 第四范式携手智源研究院 共推全球最大智能模型应用发展
- 『ACM-算法-lowbit』算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位
- GitHub 2019年度报告,用户超4000万
- Android逆向笔记-大部分内购游戏破解思路
- oracle根据多个条件分别修改符合条件的记录
- vue php tree,Vue 实现树形视图数据功能
- 美团搜索推荐多业务商品排序探索与实践
- [深度学习]图片的几种读写方式以及相互转换
- 录屏软件——大黄蜂,rar压缩包,解压后直接安装使用即可
- 3D次时代来临 如何玩转红蓝立体游戏
- 万字吐血好文,一线分析师的4大总结。
- DUTOJ-1205: 对圣杯宝具的威力值
- android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、爆炸菜单、风扇叶片效果等源码
- python使用opencv实现人脸检测
- Ubuntu下安装NS-3图文教程
- Nginx页面报错404及解决办法
- 转载:Network 之三 Ethernet(以太网)物理介质(10Base、100Base-T、100Base-TX等)介绍
热门文章
- 适合客厅的挂画 山水画让家活色生香
- matlab求解常微分方程(组)---dsolve、ode系列函数详解(含例程)
- 【Java游戏合集】手把手教你制作游戏
- 【挨踢人物传】向立天:从电视编导到技术总监,只要努力,你也能铸就传奇(第七期)...
- Matplotlib系列(三):坐标轴变换及注释
- 笔记本电脑Haswell黑苹果opencore睡眠实战
- python指南针_Mircopython: 在BPIbit上制作指南针
- matlab安装后不能打开怎么办,matlab7.0安装后打不开_matlab7.0安装后不能用
- Beta 多样性排序分析方法与比较
- 爬虫中proxies小分享