AutoCAD普通表格转换为表格对象的方法

上传人:野鹰 文档编号:1585613 上传时间:2017-06-27 格式:DOC 页数:3 大小:133.51KB
返回 下载 相关 举报
AutoCAD普通表格转换为表格对象的方法_第1页
第1页 / 共3页
AutoCAD普通表格转换为表格对象的方法_第2页
第2页 / 共3页
AutoCAD普通表格转换为表格对象的方法_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《AutoCAD普通表格转换为表格对象的方法》由会员分享,可在线阅读,更多相关《AutoCAD普通表格转换为表格对象的方法(3页珍藏版)》请在金锄头文库上搜索。

1、AutoCAD 普通表格转换为表格对象的方法吴伟中, 贾长学( 河南工业大学机电工程学院, 郑州 450007)摘要: 表格是 A utoC A D 新引入的对象类型, 使绘制和编辑表格变得相当简单。文中介绍了把用直线和文字制成的“表格”转换成表格对象的原理和方法, 并给出了转换的流程。关键词: 表格对象 ; A utoC A D ; 二次开发; A ctiveX 技术表格( Table) 是 AutoCAD 自 2005 版开始新引入的对象, 给工程图样中各类表格的绘制和编辑带来了极大的方便 , 同时表格对象与 Excel 工作表的相互转换也相当简单。早期用一般方式绘制的“表格” 仅在外观上

2、和表格对象类似, 但不具备表格对象的特性, 不能用相关的表格命令修改, 也不能直接输出到 Excel, 而在实际设计中, 经常要在已有图纸基础上修改 , 由此想到, 若能把普通的“表格” 转换为表格对象将给以后的设计带来许多便利。本文利用 AutoCAD 的 ActiveX 技术, 用 Visual LISP 编程, 实现了将普通 表格 转换为表格对象。1. 普通“表格”绘制的方法工程图中 mn 行列型的“ 表格 ”较为常见, 如明细栏、材料汇总表等, 这类表格的特点是行、列关系比较单一,文字的规律性强。AutoCAD 2005 版之前 , 绘制“ 表格” 一般采用以下几种方法 :( 1) 用

3、 LINE 或 PLINE 绘制表格线框 , 然后在线框的单元格内填写单行或多行文字 ( TEXT 或 MTEXT) 形成“表格”;( 2) 用第三方制作的表格专用工具绘制表格;( 3) 在 Excel 中处理表格 , 再用专门工具转换或直接粘贴到 AutoCAD 中。以上( 2) 、( 3) 两种方式因为都要用到专门开发的表格工具 , 绘制的 表格 格式和特性是程序制订的。第( 1) 种方法较为常用, 为多数用户采用, 故此是本文讨论的重点。2. “表格”转换为表格对象的方法在单行( 多行) 文字和线条组成的“ 表格” 中, 文字是组成表格的主要角色, 表格线条属于辅助性的元素, 在转换过程

4、中可以忽略。因此, 表格转换的实质就是将原“ 表格” 中的文字转换到新创建的表格对象中, 并放置在对应的单元格内。文字的样式、对齐方式、颜色、图层、高度以及表格样式等可保留原有设置, 或者采用当前的图形设置。2.1 文字插入点坐标的获取在 Visual LISP 中, 可用 ENTGET 方法通过图元名取得文字的构造参数表 , 例如:( ( - 1.)( 0.TEXT)( 330.)( 5.2904A)( 100.AcDbEntity)( 67.0)( 410. Model)( 8.TXT)( 100.AcDbText)( 10 15 20 0.0)( 40. 14.0)( 1.进汽包)( 5

5、0.0.0)( 41.1.0)( 51.0.0)( 7.GBCBIG)( 71.0)( 72.0)( 110.0 0.0 0.0)( 210 0.0 0.0 1.0)( 100.AcDbText) ( 73.0) )其中,( 0. TEXT) 表示这是一 TEXT 对象,( 8.TXT)表示所在图层为 “TXT”,( 10 15 20 0) 表示文本的插入点坐标为( 15, 20, 0) ,( 1.进汽包) 表示文字内容。由此可见 ,只要抽取文字的有关信息 ( 插入点坐标、文本内容、图层、文字样式等) 建立原始数据表( LISP 表) , 再以插入点坐标为关键元素, 对表中的信息进行分析、筛选

6、 , 即可将该表重构为包含行数、列数、文字内容及对应行列信息的表格对象所需的新表。2.2 表格转换的方法如上所述, 取得文字信息数据后, 即可根据文字插入点的坐标来判定表格的行数和列数以及文字的归属, 即判定文字位于哪个单元格。2.2.1 总行数和列数的判定表格的行数、列数可以由用户输入, 但从方便用户操作的角度看, 由程序自动判断行数和列数显然更人性化。对不存在空白单元格的“表格”, 判断方法比较简单 , 只要多个文字具有相同的 y 坐标则判定为同属一行, 具有相同的 x 坐标则判定为同属一列。但是实际的表格中往往存在空白单元格, 不能简单的采用以上办法, 需加以改进。假设抽取文字的插入点

7、x, y 坐标和内容 text 三要素作为子表, 构建如下形式的数据模型表 tb_list:( ( x1 y1 text1)( x2 y2 text2)( x3 y3 text3) ?( xn yn textn) )根据表格文字的每一行具有相同的 y 坐标、每一列具有相同的 x 坐标这一特点, 遍历 tb_list 表, 统计表中每个 y 坐标、x 坐标出现的次数 m、n, 即为表格的总行数 m 和总列数 n。判定流程参见图 1。 由于绘图的不规范性, 表格内同一行文字的 y 坐标或同一列行文字的 x 坐标可能存在一定的偏差, 故此需设置容差机制, 比如以字高的一半作为阈值, 只要文字插入点的

8、 x、y 坐标在允许误差范围以内, 则可以认定其同属一行或同属一列。 在排序后的 tb_list 中, 每一个子表( xi yj textij) 均与单元格( i j) 相对应。据此, 先用 object.AddTable 方法创建新的表格对象, 再从 tb_list 表中分离得到按单元格列顺序排列的文字, 将其填充到对应的单元格中即完成了表格对象的转换。原始表格根据需要可以删除或保留。图 2 为转换流程图。为简洁计, 省去了出错检查、特殊情况分析判断等辅助流程。 2.3 “表格”的预处理有些普通“表格” 在绘制时可能不是很规范, 为了降低表格转换的难度, 提高转换的效率和准确性, 在表格转换

9、之前可对原始普通表格进行预处理, 处理措施包括文字的行对齐、列对齐、文字样式和对正方式的统一、同一单元格内的多个文字对象合并成一个对象等。如果有必要, 也可将所有的文字全部转换成 MEXT 或 TEXT 一种类型, 这是因为单行文字和多行文字有差别, 混合处理有可能产生误判。文字预处理可以通过对象特性对话框, 结合 FILTER、特性匹配等工具手动进行, 也可以编制程序自动处理, 具体算法从略。当然, 如果不对“表格” 进行规范化预处理也是可以的, 但是需要修改以上表格转换的算法, 由于要考虑如何处理可能出现的各种不规范情况, 程序的算法将变得更加复杂。由此可见, 制图越规范, 后期对图形数据

10、的处理和再利用就越简单, 效率越高,因此规范化的设计是应予高度重视的一项重要措施。3. 结语利用 ActiveX 技术进行二次开发, 实现了把用 LINE( 或 PLINE) 和 TEXT( 或 MTEXT) 命令绘制的普通“ 表格 ”转换为AutoCAD 的表格对象, 为以后高效、快捷地进行表格操作创造了条件, 因此具有较高的实用价值。本文只针对常见的表格形式给出了转换的算法, 在此基础上修改、完善, 可实现将其它形式的表格 转换为表格对象。 参考文献 1 朱玉.用 VBA 实现 Excel 电子表格到 AutoCAD 表格的转换 J .机床与液压, 2004( 12) : 176- 178. 2 陈伯雄, 冯伟.Visual LISP 程序设计技巧与范例 M .北京.人民邮电出版社, 2003. 3 杜平安.AutoCAD 明细表自动导入 Excel 的实现方法 J .工程图学学报, 2003( 1) : 50- 56. ( 编辑明涛)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 建筑规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号