用VB实现Excel数据与AutoCAD数据的共享
——《Excel数据绘图程序》简介
戴晓兵
(中国水电顾问集团中南勘测设计研究院,湖南长沙,410014,
msjldai@163.com)
摘要:笔者利用Visual Basic 6.0程序设计语言、Visual Basic for Applications(简称VBA)宏控制语言以及AutoCAD ActiveX对象接口技术,编写了《Excel数据绘图程序》。该程序可将Excel格式的数据或文本字符直接导入到AutoCAD,并自动生成相应的图形,从而实现了绘图自动化。该程序还提供了从AutoCAD图形中提取文本字符、坐标值和距离等项功能。实现了Excel数据与AutoCAD数据的共享。根据本程序的设计思路,可以添加新的绘图和计算功能,并可以移植到其他领域,为AutoCAD和Excel的二次开发提供了很好的范例。
关键词:绘图程序 Visual Basic 6.0 Excel VBA AutoCAD ActiveX 绘图自动化
1 引言
笔者从事水电工程的设计和水工模型试验研究工作多年,在工作中经常利用Excel进行水力学计算、处理大量的模型试验数据,并绘制AutoCAD图形。由于在绘制AutoCAD图形时需要进行大量的数据输入,使得绘图过程枯燥乏味,工作效率低下,并且容易出现输入错误。
为了避免大量的重复劳动、提高工作效率,笔者利用Visual Basic 6.0程序设计语言、Visual Basic for Applications宏控制语言以及AutoCAD ActiveX对象接口技术,编写了《Excel数据绘图程序》,并在Excel 2003和AutoCAD 2004(AutoCAD 2007)的环境下编译完成。该程序可将Excel格式的数据或文本字符直接导入到AutoCAD,自动生成相应的图形,从而实现了绘图自动化。该程序同时还提供了从AutoCAD图形中提取文本字符、坐标值和距离等项功能,实现了Excel数据与AutoCAD数据的共享。
2 程序的控制流程和数据交换
由于VB6.0/VBA程序语言良好的通用性以及AutoCAD中使用的ActiveX接口技术,为用户进行二次开发提供了技术基础。该绘图程序就是利用VB6.0程序设计语言对AutoCAD、Excel和记事本进行控制,实现了数据交换和共享(控制流程如图1所示)。绘图程序中主要的数据交换流程有:
(1) Excel数据→AutoCAD图形;
(2) AutoCAD图形→文本数据(Excel数据);
(3) Excel数据→文本数据(*.dat格式);
(4) 文本数据(*.dat格式)→Excel数据。
图1 绘图程序控制流程图
3 程序的功能和界面
《Excel数据绘图程序》以水工模型试验数据为基础,对日常工作中经常绘制的图形和计算进行了程序编写,以满足工作的需要。
绘图程序实现的主要绘图命令有:点(point)、直线(line)、多段线(pline)、样条曲线(spline)、文字(text、mtext)、三维网格曲面(3Dmesh)和三次样条插值计算,以及提取文本字符、坐标值和距离等AutoCAD图形数据。根据本程序的设计思路,可以添加新的绘图命令和计算功能。
该程序由主程序界面和绘图参数界面两部分组成,主程序界面用于选择绘图或计算功能,绘图参数界面用于输入数据区域和选择参数。主程序界面如图2所示、绘图参数界面如图3~5所示。
主程序界面的绘图或计算功能选择包括以下十二项内容:
(1)水工模型试验数据绘图。其中包含了垂线流场分布、平面流场分布、水面线、压力线、水边线等6种图形的绘制;
(2)脉动随机过程绘图。其中包含了时均压力过程线、脉动压力过程线、功率谱密度函数等图形的绘制;
(3)矩形堰、三角堰流量表。用于生成矩形堰和三角堰的测针读数与流量关系表格;
(4)天然河道水位流量表。用于生成水位(或测针读数)与流量关系表格;
(5)绘制水位流量关系曲线。用于绘制水位流量关系等散点样条曲线;
(6)标注数据值、绘数据点。用于绘制二维或三维散点图;
(7)标注文字、绘数据点。用于在给定的坐标位置标注文字;
(8)绘制三维网格曲面。用于绘制地形网格曲面或压力网格曲面;
(9)创建等高线(等压线)数据文件。用于将Excel数据文件转换成dat格式的数据文件,绘制等高线(等压线)图形;
(10)创建脉动压力数据文件。用于将dat格式的数据文件转换成Excel数据文件,绘制随机过程线等图形;
(11)提取AutoCAD图形数据。用于提取AutoCAD图形中的文本字符或数据、读取三维坐标点、测量距离等;
(12)绘制横断面。利用点坐标(X、Y、Z)数据,绘制地形横断面图、开挖剖面图等。
图2 主程序界面 图3 平面流场分布绘图参数界面
图4天然河道水位流量计算界面 图5 dat格式数据文件转换界面
4 Excel数据格式
为了保证绘图程序能够有效地调用数据或文本字符,需要对Excel数据格式进行适当的规定。遵照绘图习惯,纵向桩号(或纵向距离)定义为X坐标,测点高程(或横向距离)定义为Y坐标,流速、压力或掺气浓度等水工模型试验数据作为当前给定坐标点的绘图参数,所有数据或文本字符均必须按行号和列号连续排列,但不限制行号和列号的起始位置。
在主程序界面上(图2),当鼠标移动至(或单击)数据格式示例按钮即可显示九种Excel数据格式,以备查询。图6~图9为四个绘图功能的Excel数据格式示例。
图6 绘制平面流场数据格式 图7 绘制垂线分布数据格式
图8 标注文字数据格式 图9 绘制三维网格曲面数据格式
5 程序的使用
《Excel数据绘图程序》为可执行文件,双击即可运行,可分以下三个步骤:
(1)按绘图程序规定的Excel数据格式整理好数据;
(2)运行绘图程序,程序自动打开主程序界面(图2所示)。在主程序界面中选择绘图或计算功能;
(3)程序进入绘图参数界面(图3~图5所示),在绘图参数界面中按照提示输入数据区域和其他参数,单击确定即可。程序随即自动连接AutoCAD文档(当无活动的AutoCAD文档时,则自动打开新文档),并绘制相应的图形。
下面简单介绍5个绘图实例。
5.1 实例一:绘制平面流场和垂线流速分布图
天然河道水流流态通常利用表面流速分布场进行描述,平面流速分布场绘图示例见图10,图中包含了四个象限的流速方向,概括了水工模型试验中可能遇到的各种表面流速情况。
水流流速沿水深的变化规律用垂线流速分布描述。垂线流速分布绘图示例见图11,图中包含了不同桩号和高程测点的水流流速。
因为绘制平面流速分布场和垂线流速分布场是水工模型试验数据处理工作经常遇到的绘图工作,因此绘图程序提供了该项功能。绘图步骤如下:
步骤一:按照图5或图6所示的数据格式整理好模型试验数据;
步骤二:双击运行绘图程序,在主程序界面中选择“水工模型试验数据绘图”功能;
步骤三:在“选择绘图类型”界面中单击“绘制平面流场”或“绘制垂线流速或掺气”功能;
步骤四:在绘图参数界面中,按照提示输入数据区域和其他参数,单击确定即可。
图10 天然河道平面流速分布场 图11 垂线流速分布场
5.2 实例二:绘制三维网格曲面
泄水建筑物的底板(如消力池底板)的动水压力、三维地形(如冲刷坑)等,可用三维网格曲面图进行描述。三维网格曲面绘图示例见图12,绘图步骤如下:
步骤一:按照图9所示的数据格式整理好模型试验数据;
步骤二:双击运行绘图程序,在主程序界面中选择“绘制三维网格曲面”功能;
步骤三:在绘图参数界面中,按照提示输入数据区域和其他参数,单击确定即可。
图12 三维网格曲面图
5.3 实例三:绘制水位流量关系曲线(XY散点图)
在水利水电工程的设计工作中,泄水建筑物的泄流能力是非常重要的水力学指标,也是水工模型试验的重要研究内容。绘图程序提供了自动绘制水位流量关系曲线的功能。水位流量关系曲线绘图示例见图13,绘图步骤参照实例二。
5.4 实例四:绘制脉动压力过程线
水流对泄水建筑物的动水压力作用是一个随机过程,脉动压力是随机过程的重要特征,因此脉动压力成为一个重要的水力学指标。绘图程序提供了绘制脉动压力过程线、时均压力过程线及功率谱密度函数曲线功能。脉动压力过程线绘图示例见图14,绘图步骤参照实例一。
图13 水位流量关系曲线 图14 脉动压力过程线
5.5 实例五:提取地形断面数据,绘制横断面图
剖取河道横断面或地形边坡是工程设计与科研工作中经常遇到的。绘图程序提供了从地形等高线图中读取三维坐标点数据(X,Y,Z),再利用坐标点数据绘制地形横断面图。绘图步骤如下:
步骤一:在地形图中绘制剖切线,并将剖切线后置(即draworder命令,或从菜单栏中选择:工具→显示顺序→后置,然后按提示选择剖切线即可);
步骤二:运行绘图程序,并在程序界面中点击:“提取AutoCAD图形数据→提取三维坐标值”;
步骤三:返回至地形图中,按命令行的提示按顺序点取地形等高线与剖切线的外观交点;
步骤四:返回至程序界面中,在文本框中选择点坐标值,并复制、粘贴至Excel文档。在Excel菜单栏中利用:“数据→分列”等功能将坐标值导入单元格(分成X、Y、Z三列)。横断面数据提取完毕;
步骤五:返回至主程序界面,点击:“绘制横断面”,输入XYZ数据区域,点击确定即可。
对于一些特殊的地形图,如果图中的等高线不含高程值,或局部地形高程需要人工判读时,可以在主程序界面中点击:“提取AutoCAD图形数据→提取二维坐标(输入高程)”,然后在提示框中手工输入高程值即可。
6 结语
《Excel数据绘图程序》提供了水工模型试验常用的图形绘制功能和计算功能,绘图程序主界面和参数界面简单明了,根据界面的提示可以很方便地操作运用,简单实用,是极好的绘图和计算工具软件。根据本程序的设计思路,可以添加新的绘图和计算功能,并可以移植到其他领域,为AutoCAD的二次开发应用提供了很好的范例。
参考文献
[1] 甄彤 陈卫东,Visual Basic 程序设计教程,第1版,北京:机械工业出版社,2004年
[2] (美)Reed Jacobason,跟我学用VBA开发Excel 2002应用,第1版,北京:科学出版社,2002年
[3] 张帆主编 郑立楷 卢择临 王成煌编著,AutoCAD VBA二次开发教程,第1版,北京:清华大学出版社,2006年
[4] 卓宗雄 周晓津,学用VBA提高Office效率,第1版,北京:人民邮电出版社,1996年
作者简介:戴晓兵(1963-),男,湖南长沙,教高。
联系电话:0731-5073284 13873105159
邮 箱:
msjldai@163.com 邮 编:410014
通信地址:湖南长沙圭塘中南勘测设计研究院科研所