您好,欢迎来到星星旅游。
搜索
您的当前位置:首页利用AutoCAD VBA编程实现从EXCEL表到AUTOCAD文件转换的探讨

利用AutoCAD VBA编程实现从EXCEL表到AUTOCAD文件转换的探讨

来源:星星旅游
维普资讯 http://www.cqvip.com 四川测绘第31卷第4期2008年8月 165 利用AutoCAD VBA编程实现从EXCEL表 到AUTOCAD文件转换的探讨 孟金龙 杜良法 (1.山东正元地理信息工程有限责任公司,山东济南250014; 2.中国地质大学地球物理与信息技术学院,北京1 0083) [摘要]本文对表格文件转换工作机理进行了分析,阐述了表格线条和表格文字的转换过程,提高了在AutoCAD 中文字标注的灵活性。 [关键词]表格文件转换;Excel;AutoCAD [中图分类号3P283.7 [文献标识码]B [文章编号]1001—8379(2008)04—0165—03 The Table File Conversion from Excel to AutoCAD by AutoCAD VBA Programming MENGJin—long ̄DULiang-fa (1.Shandong Zhengyuan Geographical Information Engineering Co.Ltd.,Jinan 250014,China; 2.School of Geophysics and Information Technology,China University of Geosciences,Beijing 1 00083,China) Abstract:This paper analyses working principle of the table file conversion.The author states the conversion of the table line and atble characters.It is an easy way to improve the characters labeling in AutoCAD. Key words:Table file conversion;Excel;AutoCAD 1 前言 在制表过程中,经常遇到两个概念,表和方格。 在Microsoft Excel中,与表对应的对象是工作表 在工程制图中,常常需要在图中插入表格,一 (Sheet或Worksheet),与每一个表格方格相对应 般有两种方法。第一种方法是利用:剪贴板,将 的对象是单元格区域(range),它可以仅包括一个 Microsoft Excel表格拷贝至剪贴板中,然后打开 单元格(cel1),也可以由多个单元格合并而成。在 AutoCAD文件,再将剪贴板中的文件粘贴至所需位‘ AutoCAD中,没有与表对应的对象,但表可以理解由 置。这种方法十分简单,但有其固有的缺点。①在 若干条线和文字对象组合而成。根据上述分析,可 保存文件时必须将.xls和.dwg文件保存在一起,一 以发现如下的转换方法: 旦缺少excel环境,则需再对表格继续修改。②同 读取Microsoft Excel文件中的最小对象~单 时打开多个表格操作,需要占据较大的内存空间。 元格区域(range)的主要信息——线条和文字,然 ③文件体积很大,表格有时在.dwg文件中以图标形 后在AutoCAD文件里在指定图层、位置画线条,书 式显示,不便于观察。第二种方法是利用Microsoft 写文字。通过循环,遍历所有单元格区域(range), Excel、AutoCAD都提供的VBA功能,编程进行转换, 边读边写,最终完成表格的转换。转换过程中,保 将Microsoft Excel表格按原来样子转换,即把 持线条、文字及其相关属性不发生改变。 Microsoft Excel表格中的文字和线条信息全部读取 2.2表格线条的转换 出来,在AutoCAD文件里按照一一对应的方式写出 Microsoft Excel中内嵌的VBA为我们获取 来,确保转换后的表格与原表格一致。这样彻底避 Excel文件信息提供了极大便利。通常,通过访问 免了前种方法的缺点,便于表格内容编辑。本文着 range对象,可以获得许多信息。访问分析表格的属 重介绍了此方法。 性应从分析range开始。每一个range包括许多对 2表格转换工作机理分析及具体实现方法 象和属性,例如,font对象可以返回range的字体 信息。通过遍历,即可获得整个表格信息。获取表格 2.1表格转换工作机理分析 信息的目的在于准确地按照位置画表格线,同时确 维普资讯 http://www.cqvip.com 四川测绘第31卷第4期2008年8月 定文字位置。在获取表格信息时,存在一个最佳算 法问题。以下就画线问题为例,阐述问题和解决方 法。假设表格由、a(a>:1)行b(b>:1)1列组成, x、 y为 2.3.1表格文字本身的转换 分析AddMText命令可以得出:表格文字所在位 置、文字内容宽度和文字内容,均可通过此命令来 循环变量,表格完全由单元格组成,由于在每个单 元格都有4条边,让x从l开始循环到a,再 y从1 开始循环到b,读取每个单元格的4条边,会读取 a,b*4次,重复读取a,b*2次。当x=l时,读取上边; 当y=l时读取左边;其余情况读取右边,下边。共 读取a+b+a,b*2次。以3行4列为例,共读取 3+4+3.4.2=31次,与实际表格的边数相同,没有重 复读取。 添加。然而表格文字字体、大小、倾斜、加粗等却 不能。一般的方法是采用修改字体形文件的方法来 实现,方法烦琐,不便于实现,而且仅对修改过形 文件的字体有效。况且当同一文字块内的不同文字 的字体、大小、倾斜、加粗不同时,使用修改字体 形文件的方法也无法实现。本文介绍一种直接利用 对合并单元格信息的读取是个难点。因为如果 按照单元格的位置依次读取,那么由a行b列个单 元格(cel1)合并而成的单元格区域(range)仅有 Mtext命令提供的方法进行转换。 在AddMText命令中,影响文字内容和文字属性 的参数Text。在具体文字前加上一定的控制符号可 以控制文字的文字属性,具体控制符号可以参阅 AutoCAD帮助文件。例如, (\F宋体; \015:\w1.5:ABCDEFG}把“ABCDEFG”设置成宋体、 向右倾斜l5度,每个字的宽度是正常宽度1.5倍。 主要采用的方法是:读取Microsoft Excel文 件某一单元格区域里的某第j个字符属(字体、大 小、倾斜、加粗),读取Microsoft Excel文件某一 单元格区域里的某第j+1个字符属性,如果与第J 4条边,采用上述计算方法,需要读取a+b+a,b,2 次,重复读取a+b+a,b*2—4次。以3行4列为例, 共读取3+4+3.4.2=31次,重复读取3l一4=27次。 算法有重复。如果按照行号,列号读取,合并单元 格的行号、列号只有一个,其值为最靠左、靠上的 那个单元格的行号、列号。例如,将A2:E5的单元 格合并后,其行号为2,列号为A。这样由多个合并 单元格组合后的表格行号、列号有间断,不连续, 无法进行循环读取信息。作者通过研究发现,函数 address()和单元格的mergearea属性可以获得合 个字符相同,则二者采用同样的控制符号;若不同, 则从第j+1个字符开始,重复前面的工作。 2.3.2表格中表格文字位置的转换 对文字对象的属性的直接控制来实现其转换, 通过with…end with结构可以很容易地控制文字的 高度、图层、颜色、书写方向。由于Mtext文字提 供支持的排列位置分为9种,必须根据Microsoft Excel表格文字的排列方式加以合适的判定,然后进 行转换。 并单元格的准确信息。具体方法为:读取cells(X, y)单元格时,用address()判断包含celIs(x, y)单元格的合并单元格区域C.mergearea的绝对地 址,如果前4个字符与celIs(x,y)单元格的地址 相同,为cells(x,y)单元格为合并单元格区域最 靠上、靠左的那个合并单元格,读取其4条边信息, 否则不读取。这样,彻底避免了重复读取,同时提 高了整个读取和画线速度。 在AutoCAD中,线条有多种,考虑能够方便控 制线条属性,选用了多义线。具体命令如下: RetVal=object.AddLightWeightPoly1ine(Vertice 3应用 随着科学技术的发展,管线普查或其他的工程 制图中,将Microsoft Excel表格转换到AUTOCAD 文件应用非常广泛,越来越受到制图者的青睐。下 面以成都市中心城区地下管线普查探测工程中将煤 气管线穿越电力沟调查情况统计表转换到AuTOCAD sList) 2.3表格文字转换 表格文字转换包括表格文字本身转换和表格文 字在表格中位置的转换两个部分。 在AutoCAD中,文字标注的形式有多种,与 文件为例做简单的说明,Microsoft Excel表格中的 内容如图1所示。 , 通过函数address()和单元格的mergearea属性 可以获得合并单元格的准确信息,调用AutoCAD提 供的VBA画多义线命令语句和添加多行文本的命令 语句,将相应的所需要的参数传递给这两个函数的 变量,经过一系列的循环,就可得到如图2所示。 图2右上角表格放大图如图3所示。 Microsoft Excel单元格区域多行文本内容相对应 的是多行文本命令。AutoCAD提供的VBA添加多行文 本的命令语句是: RetVal=objeCt‘.AddMText(InsertionPoint, Width,Text) 在AutoCAD图形中能够很直观的查阅到煤气管 线与电力沟管线碰撞的位置及各自管线相应的属 性。 通过修改RetVal的属性可以控制表格文字在表 格中的位置。 维普资讯 http://www.cqvip.com

四川测绘第31卷第4期2008年8月 167 图1 2006—10测区煤气管线穿越电力沟调查情况记录表 图2 3—23综合管线图 图3放大图 4结束语 大学出版社,2004. [2]二代龙震工作室.AutoCAD VBA函数库查询词典[M].北 利用AutoCAD VBA编程实现从Ex ̄el表格中的 京:中国铁道出版社,2003. 内容转换到AutoCAD文件,使每个文字的风格均可 [3]夏强.Microsoft Excel VBA开发精彩实例教程[M].北 以得到很效的控制,极大提高了文字标注的灵活性, 京:中国机械出版社,2004. 使AutoCAD文件更加美观。用AutoCAD VBA编程代 替手工操作,避免手工操作带来不必要的错误 提 高了数据使用的可靠性。 参考文献 [1]张帆.Aut0CAD VBA开发精彩实例教程[M].北京:清华 [收稿日期]2008一O1—09 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务