蔡洪涛,黄伏光,何毅斌
(1武汉工程大学机电工程学院,湖北 武汉 430073;2荆州市特种设备检验检测所,湖北 荆州 434400)
目前市场上流行的计算机辅助绘图软件大都是交互式的,具有功能强大、应用面广的优点[1],但是也有针对性差,绘图效率低的缺点.利用基于约束的参数化设计绘图技术对这类软件进行二次开发,定制专业特点突出的个性软件可以很好地解决这个问题.该技术是指编制图形程序绘制基本结构相似的零部件,当给出图形各个部分的控制参数时便能迅速生成零部件图形的绘图方法[2].国产软件CAXA系统提供了基于VC++的二次开发平台.本文利用此平台开发了JB/T4712-2007“容器支座”[3]中4种支座及裙式支座的参数化绘图软件vesselsupport.eba.将此软件加载到CAXA系统中,能在CAXA的主菜单后生成“容器支座”主菜单,此菜单下有对应于4种支座及裙式支座的子菜单,分别点击,则得到各支座的几个视图.
要安装Microsoft Visual C++6.0和CAXA系统.程序的编译、连接及调试均在VC++6.0中进行.CAXA的二次开发平台EBADS(Electronic Board Application Develop System)提供了对应于CAXA交互式绘图命令的API函数.这些函数包括:交互实现、系统操作、实体部分、数据管理、几何运算和图形编辑等,基本可以实现所有的图形操作[4].
完成安装后将文件CAXA EBADS Wizard Eb-adw.awx拷贝到Microsoft Visual Studio Common MSDev98 Template目录下.在VC++界面的主菜单 TOOLs的子菜单项Options中加入CAXA的头文件和库文件的目录路径,它们分别是CAXA EBADS INCLUDE和CAXA EBADS LIB.
在VC++6.0下利用“CAXA电子图板应用程序开发向导”创建一个新的工程,命名为“vesselsupport”.此工程生成的文件有“Source Files” 、“Header Files”和“Resource Files” .主要文件是 funcdef.h,vesselsupport.cpp和stddll.cpp.在资源编辑中添加菜单资源及子菜单资源.完成后的界面如图1所示.
图1 添加菜单资源
在vesselsupport.cpp文件中添加实现菜单点击并得到响应的代码.代码为:
其中,“ID ANZUO”等是各种支座子菜单的标识符,“anzuo”等是消息响应函数的名称.消息响应函数名称应与fundef.h文件中申明的函数名称一致.本例的此文件全部内容如下:
到目前为止,上述消息响应函数是空的,单击其菜单,无反应.为此应该编写代码,完成对应支座视图的绘制.EBADS提供的API函数相当于交互式的绘图命令,实体的特征点坐标用变量表示,作为函数的参数.程序中图形绘制的代码的编制与实际绘图的过程相同.那么剩下的问题就是数据处理了,本文以耳式支座为例加以说明.
“容器支座”中给出了A型、B型和C型3种结构的耳式支座,根据其适应的筒体直径的不同,每种支座又有8种结构尺寸,每一种结构尺寸有16个尺寸,形成一个二维表格.二维表格习惯上用二维数组表示.先将表格编写为一个数据文件,然后将数据读入二维数组.三种支座的数据表格用三个数据文件.不过,因为二维数组的数据的二维下标没有意义,编程时容易出错,本文再将数据从数组读入一个结构体中,以结构体成员变量作为参数参与图形实体特征点坐标的计算.结构体定义为:
3种支座结构基本相同,只是局部结构有所变化,因此3种支座共用一种绘图的代码,得到基本的结构视图后,再作修改.
根据上述框图编制的程序代码即是消息响应函数erzuo(int&step,int&flag)的主要内容.将此代码保存为一个单独的.cpp文件,加载到工程vesselsupport中,编译、连接,无错误后,生成 vesselsupport.eba文件.将此文件拷贝到CAXA Ebads 目录下,运行CAXA系统,单击主菜单文件下的“应用程序管理器”,加载此文件,则得到如图2的界面.可见在CAXA系统的主菜单后面生成了“容器支座”主菜单.此时“耳式支座”就相当于一个绘圆、绘直线的命令了.试绘制支座,如果3种支座都能正确绘制,则证明程序正确;否则修改绘图部分代码,再编译连接生成(.eba)文件,再运行,直到结果正确.下图是容器直径为3000 mm,厚度为20 mm,3种类型的6号支座的绘制结果.
CAXA的二次开发平台EBADS提供了应用程序模板,用户只需要在此框架内添加功能实现代码就可完成相应的程序编制.采用面向图形对象实体的方法编程,与实际的绘图过程类似.其API函数好记易学.利用本文方法编制的化工设备支座的程序能实现各种支座的参数化绘图,有快速准确的特点,具有较强的实用价值.
[1]郑晨升.实用CAXA绘图及二次开发技术[M].北京:化学工业出版社,2005
[2]孙家广.计算机辅助设计技术基础[M].北京:清华大学出版社,2000
[3]JB/T4712-2007《容器支座》[EB/OL〗 .(2011-03-20)http://www.5ibzq.com.
[4]龙宋军,张文斌,魏中平.CAXA系统设计与开发[M].北京:国防工业出版社,2004.