当前位置: 主页 > 科教商情 > 论文精选 >

基于ObjectARX的塔板三维参数化绘图

2018-07-17 | 编辑:中机教育网 | 来源:机械创新与产教融合新思 | 浏览量:

基于ObjectARX的塔板三维参数化绘图

杨海如  陈国治
(黄冈师范学院机电工程学院,湖北 黄冈 438000)
 
摘  要:三维图形不仅能够真实地反映物体的实际情况,而且能够使用户直观地看到产品的实际效果,易于与加工制造技术相结合,提高设计、生产效率。介绍了ObjectARX 2007的编程环境和参数化绘图的特点。并利用AutoCAD的二次开发工具ObjectARX的三维功能,实现了化工塔设备中塔板三维实体造型模块的开发。利用ObjectARX 环境下的ADO数据库接口技术,访问外部塔板参数数据库,真正实现绘图的参数化。通过此实例,介绍了ObjectARX 的三维实体造型的设计方法和关键技术。此软件经过实际应用,收到良好效果。
关键词:参数化绘图;ObjectARX;三维实体造型;塔板

0  引言

三维图形能够真实地反映物体的实际情况,不仅能可靠地生成二维视图,而且用户能够直观地看到产品的实际效果,易于与加工制造技术相结合,提高设计、生产效率。本研究是在Windows XP环境下,以ObjectARX 2007为二次开发工具,以Visual Studio 2005为开发工具,在AutoCAD 2007中实现了化工塔设备中塔板的三维参数化绘图。

1  ObjectARX 2007的编程环境

ObjectARX 2007是基于AutoCAD 2007的一种编程环境,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能够快速地访问AutoCAD图形数据库。ObjectARX程序实际为动态连接库,与AutoCAD共享同一地址空间,能直接利用AutoCAD核心数据库和函数。与其他二次开发工具相比,ObjectARX具有模块性强、独立性强、开发能力强、速度快、面向对象的编程技术等优点,是AutoCAD新一代强有力的开发工具。此外,ObjectARX编程环境可利用MFC类库来编制丰富的Windows 风格界面,采用了面向对象的编程技术,开发人员可在其提供的基类上派生出自定义的类,给开发工作带来极大的方便。

2  参数化绘图

参数化绘图是一种利用零件或产品组成形状上的相似性,以基本参数作为变量编写相应的程序来定义图形的方法。参数化同时,还要满足图形的约束条件,设计者可以建立这些基本参数的外部数据库,利用ObjectARX程序调用相应的参数数据库中的数据,系统会自动完成相应实体形状的改变。
参数化绘图的基本特征是通过访问外部参数数据库进行操作,因此它具有较好的交互性,用户可以利用绘图系统全部的交互功能修改图形及其属性,进而控制参数化的过程。参数化绘图具有简单、方便、易开发和使用的特点,能够在现有的绘图系统基础上进行二次开发。
塔板零件三维参数化造型就是用尺寸参数控制零件的尺寸结构,实现塔板三维图形绘制。筛孔塔板是化工塔设备的主要零部件之一,根据筛孔塔板的产品特点,采用CAD 二次开发工具ObjectARX 2007,以Visual Studio 2005为编程语言,利用MFC 类库的Windows 风格界面,开发出功能强大、界面友好的筛孔塔板的三维参数化绘图模块。
在系统开发过程中,利用ObjectARX环境下的ADO数据库接口技术,访问外部塔板参数数据库,真正实现参数化。设计好的塔板的参数和ObjectARX强大的三维绘制功能结合,使得系统能真正快速、高效地绘制三维塔板的实体造型图。

3  筛孔塔板的三维参数化绘图

塔板上的溢流装置包括溢流堰、降液管和受液盘等几部分结构和尺寸有很多类型,各种类型的塔板结构尺寸会有很大差异,首先设计一个筛孔塔板类型选择对话框,如图1所示,要求用户对溢流方式、降液管的类型和受液盘类型进行选择。确定溢流方式、降液管的类型和受液盘类型后,单击确定按钮就可以进入塔板参数输入对话框,如图2所示。
     
         图1  塔板类型选择                               图2  塔板参数输入

3.1  塔板主要参数的计算

为了验证用户输入参数是否合理,程序设计了一个参数计算功能,对用户输入的参数首先进行计算,计算出开孔率、开孔数等由用户输入参数推导出来的参数。然后输出反馈给用户进行参考。如图2所示,当用户输入设计参数后,程序会在对话框右上显示塔板的开孔率,开孔数等参数。实现代码如下:
         CString str;
          float s1=m_tabanzhj/2-m_wd-m_ws;
          float s2=m_tabanzhj/2-m_wd-m_wss-m_jinkouh1;
          float rr=m_tabanzhj/2-m_wc;
          float area1=((float)asin(s1/rr)+(float)asin(s2/rr))*rr*rr;
          float area2=s1*(float)sqrt(rr*rr-s1*s1)+s2*(float)sqrt(rr*rr-s2*s2);
          float areak=area1+area2;
          str.Format("%6.2f",m_tabanzhj*m_tabanzhj/4*asin(m_yiliuyanch/m_tabanzhj)-m_yiliuyanch*(m_tabanzhj/2-m_wd)/2);                                                                                                     //计算降液管所占面积Af
          GetDlgItem(IDC_STATIC_AF)->SetWindowText(str);                                //显示输出Af
          str.Format("%6.2f",m_tabanzhj*m_tabanzhj/4*asin(2*m_wdd/m_tabanzhj)-m_wdd*(m_tabanzhj/2-m_wd-m_jinkouh1));                                                                                                       //计算受液盘所占面积A’f
          GetDlgItem(IDC_STATIC_AFF)->SetWindowText(str);                             //显示输出A’f
          str.Format("%6.2f",areak);
          GetDlgItem(IDC_STATIC_AA)->SetWindowText(str);                               //显示输出开孔区面积
          str.Format("%i",p);
          GetDlgItem(IDC_STATIC_N)->SetWindowText(str);                                  //显示输出开孔数
          str.Format("%6.2f",p*314.15926*m_kongzhj/2*m_kongzhj/2/areak);          //计算开孔率
          GetDlgItem(IDC_STATIC_LV)->SetWindowText(str);                                //显示输出开孔率

3.2  塔板的三维实体的生成

由于筛孔塔板属于复杂实体,在程序中不能通过某单一方法直接把塔板画出来。对于复杂的造型必须利用基本三维实体和二维图形扫描变换得到的实体,进行并(Union)、差(Subtract)和交(Intersection)集合运算,并对实体进行旋转、阵列等编辑操作,最后经过动态显示和消隐处理后,得到更加真实的三维实体。所以需要把塔板分成小部分,再通过实体的并、交、差集合运算最终生成筛孔塔板的实体。具体步骤如下:
1)用拉伸的方法生成塔板实体;
2)利用基本实体生成降液管、溢流堰和进口堰,经坐标变换后“并”入塔板主体;
3)在塔板上“差”出筛孔,这需要先设计筛孔排列方式和排列规则。采用叉排,相邻两阀吹出的气流搅动液层的作用比顺排明显,而且相邻两阀容易被吹开,液面梯度较小,鼓泡均匀,所以采用叉排。根据孔的排列方式,采用双for( )循环程序结构实现塔板的均布开孔。
                   for(int i=0;i<(int)xkongshu;i++)//外层X方向循环
                            {
                                                                           }
                                     for(int j=0;j<jj;j++)//内层Y方向循环
                                     {…...
                                                                           }

4  结论

CAD 软件三维造型功能的强弱,直接关系到产品三维设计的质量。AutoCAD软件的三维造型功能在大多数情况下,可满足不同领域三维设计要求。但有时不是很方便,本文应用ObjectARX编程技术,对AutoCAD 的三维造型功能进行二次开发,使其更加方便快捷。该二次开发设计为特定产品参数化、系列化设计提供了有效方法,可减少企业在产品设计中的工作量。经过实际应用,收到良好效果。

参考文献

[1]    张南展,林国荣.基于ObjectARX的阀体三维参数化绘图[J].福州大学学报(自然科学版),2003(5):569-572.
[2]    陈敏恒,丛德滋,方图南,齐鸣斋.化工原理[M].北京:化学工业出版社,2000.

    X关闭
    X关闭