山东建筑材料网络社区

石材铺设编号系统软件设计新方法

只看楼主 收藏 回复
  • - -
楼主
  

摘要:本文介绍了利用ObjectARX二次开发技术,以VC++.NET为开发环境,实现石材铺设编号系统设计的方法。文中简单叙述了ObjectARX开发技术特点,详细阐述了石材铺设编号系统的实现原理及方法,对界面功能和操作方法做了详细介绍,并利用操作实例进一步说明系统功能。最后对铺设结果进行了分析和总结。

关键词:石材铺设   编号   加工单输出   ObjectARX

The New SoftwareDesign Method of Stone Paving and Numbering System

Li Hongfei   Zhao Min  Li Gang   Pan Weizhi

(School ofTraffic and Mechanical Engineering, Shenyang Jianzhu University, LiaoningShenyang  110168)

Abstract:The design methodof stone paving and numbering system is introduced in this paper. This systemis developed by using ObjectARX secondary development technology and in the developmentenvironment of VC++.NET. ObjectARX is simply described and the principle of this system has been elaborated in detail.Moreover, interface function and operational approach are both introduced inthe paper in detail. The function of this system is shown by giving an example, and the paving result is analyzedand summed up in the end.

Keywords: stone paving,numbering, processing table output, ObjectARX


引言

石材铺设编号系统是指在平面石材铺设设计中,能够代替人工绘图和计算,实现参数化石材自动铺设、编号和输出加工单功能的计算机辅助设计方法。该系统旨在提高平面石材铺设设计的效率,减少人工工作量,减小出错率。之前利用AutoList等方法进行过此类系统的开发,已经具有强大的操作功能,但是在对大范围复杂区域铺设时出错率仍然比较高,运行速度慢【1-2】,故本文利用ObjectARX二次开发技术,以VC++2005.NET为开发平台,开发出了一套石材铺设编号系统,该系统增加了AutoCAD在石材装饰设计领域的应用功能,提高了平面石材铺设设计的效率,实现了石材铺设设计的自动化过程。

1 ObjectARX简介及在设计中的应用

ObjectARX是AutoCAD二次开发工具的一种,它实现了真正面向对象的编程,以C++作为编程语言,本质上为Windows动态链接库(DLL)程序,与AutoCAD共享地址空间,直接调用AutoCAD的核心函数,还可以直接访问AutoCAD数据库的核心数据结构和代码,创建能够全面享受AutoCAD固有命令特权的新命令。ObjectARX程序设计环境为程序员使用、用户化和扩充AutoCAD提供了一个面向对象的C++应用程序开发接口[3-4]。利用ObjectARX的上述特性,使用VC++.NET编程环境,在AutoCAD界面的基础上增加了新的功能模块,开发出的石材铺设模块以动态链接库的形式存在,只要在装有AutoCAD软件的计算机上,随时可以调用此模块进行铺设设计,移动存储使用都十分方便。

在VC++环境下编写ObjectARX程序需要加载ObjectARX的头文件(inc)和库文件(lib)到解决方案中,以便在编程中使用ARX相关的类和库文件[5]。根据实际应用需要,将此系统的功能分成铺设,编号及加工单输出三大类,而铺设又分为按行列铺设和按板尺寸铺设。整个系统设计包括菜单设计,各功能模块对话框界面设计和底层代码实现。

2 界面设计

2.1 菜单界面设计

为了在CAD中使用铺设相关命令更加方便,利用AutoCAD2008自定义菜单项功能,在CAD原界面的基础上增加了石材铺设菜单项,其添加位置及子菜单项包含的内容如图1所示。

 
图1 菜单界面示意图

这些菜单项分别与调用相应对话框命令连接,故在使用铺设相关命令时除了可以在命令行输入命令外,也可直接点击相应菜单项,使操作更加方便快捷。

2.2 对话框界面设计

图2中显示了板型铺设的对话框界面。对话框操作过程如下:在编辑框中输入数据,点“选择区域”按钮则对话框会自动隐藏,用鼠标选择到要铺设的外围区域后返回对话框界面,同样的方式选择起点,然后根据需要对编号方式进行修改,点“铺设预览”按钮,将再次隐藏对话框,显示铺设编号结果供用户预览,单击鼠标左键返回对话框,点击“输出清单”按钮,系统将自动弹出Excel表格,列出了对应编号石材板的尺寸及所需块数,此时区域标识号和清单标题均为系统默认内容,若对铺设结果不满意,可点“取消”按钮将刚铺设的结果取消掉,同时退出对话框,若满意,可直接点击“退出”按钮退出对话框。而行列铺设方式的对话框与此类似,只是将参数“板长”和“板宽”改成“行数”和“列数”,同时不需要选取铺设起点。


图2 板型铺设对话框界面

编号对话框界面如图3所示,编号格式是:区域标识号+序号,区域标识号可以按用户喜好自行设定,如设成英文字母A,则板的起始编号为“A-0”。编号方式分为3种,按尺寸编号即相同尺寸石材板编号值相同;归类编号即同一尺寸各板材的编号是连续的,并在输出清单时归为一类;顺序编号即按铺设的顺序逐一编号。当铺设中选择的编号方式为“后续编号”时就需要调用此对话框实现对板材的编号。

图4则显示了加工单输出对话框界面,它提供更多的加工单内容设置功能,可根据用户需要对各项内容进行设置。


图3 编号对话框示意图

 
图4 加工单输出对话框界面

3 程序设计

用户界面只是提供了一个可视化的操作环境,真正实现目标功能还需要完善的底层程序设计。程序设计流程图如图5所示。下面仅对中心点计算、边缘处理、编号和输出清单等设计中的突出问题进行说明。

  
图5 程序设计流程图

铺设时,每块板的位置主要由它的中心点坐标来决定的,在行列铺设中,第一块板的中心位置是外区域顶点围成的最大矩形区域的左下点,而板型铺设中第一块板的中心点就是铺设起点的坐标,然后根据输入的铺设参数,将铺设区域以铺设起点为中心分成左上,右上,左下和右下四个区域,分别计算出各板材的中心坐标。以板型铺设的右上区域为例,在铺设角度在0〜90°之间时,每块板的中心点坐标计算方法如下:


(1)
 

   (2)

其中ptCenterru代表板材的中心点坐标,ptCenter为铺设起点坐标,banl,bank,f,b则分别代表板材的长,宽,板材之间的缝宽和倾斜角度,i和j是循环系数,它们的最大值由铺设区域最大跨度决定。

确定好铺设中心点后,就可以根据中心点和板材的长宽值确定板的各角点的坐标值,最后根据各角点坐标值来创建实体模型,可利用addVertexAt函数实现,其定义如下:

Acad::ErrorStatusaddVertexAt(

unsigned intindex,

constAcGePoint2d& pt,

double bulge = 0.,

double startWidth= -1.,

double endWidth =-1);

参数index是输入索引,而pt即为对应的端点值,其它参数均有默认值,与设计无关,可以不做改动,这样根据端点个数循环调用此函数添加端点值,最后调用setClosed()函数完成首尾点的连接就实现了多边形实体的创建。

3.2 铺设边缘处理

在以板型方式或对不规则图形铺设时,在区域边缘有的板材会有部分超出边界的现象,此时需要找出该板材模型与外边界的交点,然后以交点和该板材在区域的顶点为顶点值来创建适合区域边缘的新板材模型,需要根据板材与区域边界相交形式的不同进行不同的处理,最后将新板材模型添加到模型空间,同时删除原板材模型。

3.3 编号及显示方法

为了使编号处理更加方便,在创建每个板材模型时需要提取出它的长宽尺寸值,利用ObjectARX扩展字典功能可以将长宽值作为自定义数据添加到板材模型的扩展字典中,这些值隶属于特定的实体,在编号和输出加工单时可以直接访问板材模型的扩展字典,以读取对应板的长宽值。

将编号值显示在模型空间对应位置上,主要是利用ObjectARX创建文字的方法,在图形规定位置上添加多行文字显示编号值,经过测试,多行文本的起始位置和高度确定方法如下:

(3)

    (4)

                                 (5)

其中ptQd和height分别代表多行文字的起点和高度;ptCenterBan,banl和bank分别代表板材的中心点坐标,板材的长宽值。

3.4 输出EXCEL清单方法

将板材尺寸信息输出到EXCEL表格中,首先要能够利用VC实现对EXCEL的操作,而VC操作Excel主要有以下两种方法:

(1)利用ODBC把Excel文件当成数据库文件,来进行读、写、修改等操作,用C++编写的控件类CSpreadSheet提供了对Excel读写的支持。

(2)利用Automation(OLE Automation)方法。将Excel当成组件服务器,利用VBA,又分为基于MFC的和SDK两种。

第一种方法中,控件以ODBC读写Excel文件,需要ODBC驱动程序,Excel文件必须列标记,且首行列标记唯一(字段),可以实现读写EXCEL中数据功能,但把所有的输入都被当作为字符串来处理,在单元格内容前面都被excel强制加了个单引号前缀。经过编程测试发现,无论是数据显示效果还是对EXCEL格式的操作都不是很理想,故最终采用基于MFC的OLE编程方法,它对EXCEL的操作方法简单,容易理解,功能较为全面。

基于MFC的OLE编程方法实现VC操作Excel的初始化过程依次是:导入Excel库文件,初始化COM组件,创建Excel服务器(启动Excel),设置Excel的状态。使用此方法可以实现新建、数据输入、表格处理等多种功能,本设计中可实现的操作效果如图7所示。

4 操作实例

图6为板型铺设方式的铺设结果,编号方式选择的是归类编号,其中各参数为:长500mm,宽450mm,缝宽4mm,角度0°,铺设起点为(8046.4541, 3193.5183)。图中选中的四变形就是其中的一块工程板,铺设起点的不同会有不同的铺设效果,若对铺设不满意,可以点击“取消”按钮把刚铺设的结果取消,用户可根据实际情况,选择合适的铺设方式,得到满意的铺设效果。

 
图6 铺设效果图

图7为输出的EXCEL列表清单,编号方式为归类编号,用户可根据需要填写制作人和日期等信息,将显示于表格最下方。


图7 加工清单示意图

5 结论

本文采用ObjectARX与VC++的混合编程技术,开发出了以AutoCAD2008为工作平台的石材铺设编号CAD系统,该系统实现了对复杂区域的铺设和编号功能,方便了方案选取的同时也减少了手工绘图的工作量,提高了工作效率,增强了AutoCAD在石材行业中的具体应用功能。

参考文献

[1] 赵民等编著.建筑装饰石材计算机辅助设计[M].北京:化学工业出版社,2005.

[2] 王荣.饰面石材CAD的开发与应用研究[D].武汉:武汉理工大学,2007.

[3] 闻涛,赵良臣. 用ObjectARX进行AutoCAD二次开发的研究[J]. 浙江工程学院学报, 2003,20(1):37-40

[4] 董玉德.赵韩.CAD二次开发理论与技术[M].合肥:合肥工业大学出版社,2009.

[5] 张伟,刘伟涛,许云华.利用objectARX对Aut0CAD2006进行二次开发及其应用[J]. 机械研究与应用,20(2),2007.

(此文发表于《石材》2011年6期)

广告赞助商



《石材》杂志微信公众平台

已获得原创保护   欢迎业内关注


由中国石材协会主办的行业权威专业期刊《石材》,创刊于1983年,是中国石材行业在国内外公开发行的国家级正规石材科技期刊,也是石材行业唯一一本被国家图书馆、国家版本图书馆馆藏收录的杂志。每月一期,全年十二期,英文名《STONE》,国内刊号CN11-3373/TU,国际刊号ISSN1005-3352,内地订价8元/月,全年96元,港澳台地区全年订价为港币300元,国外订价为全年60美元,与其他报刊一样在全国各地邮局统一公开订阅发行,邮局发行代号为82-704。

我刊已正式注册开通了微信公众平台,微信名为“石材杂志”微信号为“shicaizazhi”大家扫一扫《石材》封面右上角二维码或在个人微信添加朋友中搜“石材杂志”,或直接添加微信号“shicaizazhi”,关注即可进入“石材杂志”微信公众平台,查看精彩内容。


本刊邮箱:shicai1983@126.com 

本刊Q Q:645688956;2012440684;810404669

百度搜索:石材杂志-中国知网


欢迎订阅,订购方式如下:

1.微信在线订阅:

点击文末“阅读原文”进入订阅页面或在微信公众号文字输入状态下输入“订阅”点击回复链接即可完成在线订阅。

2.银行转账订阅:

开户银行:工商银行北京百万庄支行      

户       名:《石材》杂志有限公司

账       号:0200001409024576248

3.邮局汇款订阅:

地       址:北京市海淀区三里河路11号国家建设部南配楼(邮编100831)

收款单位:《石材》杂志有限公司

4.邮局订阅:

每年11月开始在全国各地邮局统一公开订阅,邮局发行代号为82-704。

电   话:010-57811227,57811228         

传   真:010-57811226

主   编:谭金华(13601396598) 

副主编:侯建华(13601247976)

联系人:韩爱丰、钱金鑫、夏青、秦燕群


《石材》刊登广告报价如下:


点击下方“阅读原文”完成杂志在线订阅



 



举报 | 1楼 回复