ObjectARX.net技术在桥梁辅助绘图计算程序中的应用研究

2014-11-17 23:40:53胡彦卿杨扬
科技创新与应用 2014年33期
关键词:程序开发

胡彦卿 杨扬

摘 要:文章介绍了基于AutoCAD2015软件平台,在.NET开发环境下,采用可视化表格、正则表达式、ActiveX、模拟动态拖拽等多种编程技术,开发桥梁辅助绘图设计软件,有效提高桥梁设计的工作效率,为桥梁结构的建筑信息模型设计提供软件开发思路及探讨方向。

关键词:程序开发;.NET技术;桥梁参数化设计

桥梁结构设计专业性要求较高,在实际的设计工作中,桥梁结构设计师的大量精力往往耗费在纷繁复杂的重复绘图以及计算工作上。而随着计算机性能的提升及有限元技术等软件技术的发展,设计人员在桥梁结构分析上难度的大大降低,但简单重复的绘图工作却成为了桥梁设计工作的巨大障碍,针对以上问题,国内外的专业软件公司近年来也推出了一些较大型的软件解决方案,但是由于积累不够及技术所限,这类大型程序也存在一定的局限性,比如输入参数过多,成图效果达不到预期等等。需要后期大量的改动,甚至会出现因图纸改动量过大,不如自行从头绘制的情况。因而一些基于AutoCAD二次开发的,使用便捷,针对性强的“轻程序”,对于解放设计人员的重复劳动,提高计算绘图效率,有着非常重要的意义。

1 开发环境

ObjectARX.net开发包,是基于微软.NET框架的二次开发平台,作为Autodesk二次开发工具中最新且最具潜力的产品,其发展经历了从AutoCAD2005版本开始,经历了多个版本的升级完善,已经相当成熟可靠。.NET语言开发同时具有很多优点,如语言选择的多样性,易用性,开发的成果具有良好的独立性和继承性,强大的可视化功能等等。

2 开发内容

基于辅助设计的工具应用的定位,本程序主要实现了以下功能:

(1)钢筋混凝土结构的钢筋自动统计及绘图。(2)钢结构程序的参数表绘图。(3)基于AutoCAD文字图形的数学工具,文本操作工具。(4)基于规范公式的结构构件的计算工具。(5)可视窗体的类Excel表格的实现,结合与Excel表格的通讯功能,及生成AutoCAD图纸的表格功能。(6)常用AutoCAD操作的扩展功能,绘图的参数化,标准化设计功能。

基于.NET语言的面向对象及模块化的特性,以上功能可以相互进行配合,如程序Excel通讯的功能就集成在钢筋混凝土结构钢筋参数表程序及钢结构设计程序内,提供更加强大的综合能力。

3 开发技术

(1)通过对表格控件“DataGridView”的再开发,进行Excel功能的模拟及功能强化。(2)后绑定技术调用Excel及与Excel的通讯功能。(3)通过.NET开发中的jig(动态输入)方式实现动态绘图功能。(4)所有功能可视化,配合AutoCAD命令,实现直观快速的输入及辅助设计功能。(5)基于ObjectARX.net,实现AutoCAD中的绘图操作。(6)运用正则表达式实现公式的计算,参数分解等功能。(7)方便设计的“库”功能,实现常用和固定数据的直接调用。(8)基于.NET的程序架构及功能实现。

4 程序功能的实现

本程序采用最新的AutoCAD2015作为运行的基础平台,在.NET Framworks 4.5框架下进行开发。

(1)基于可视化技术的钢筋混凝土结构、钢结构的自动绘制及统计功能。钢筋数量表的统计是桥梁结构设计中一个重复输入的典型环节,设计人员不但需要计算钢筋数量及长度,还需要在数量表中反复进行四则运算计算总量,费时费力,桥梁钢结构因较少使用型材而大量运用钢板,统计工作也非常繁复,容易出错。

本程序运用BlockReference图元的Tag功能,提供了快速生成钢筋标注的功能。程序界面如图1所示。

图1 钢筋标注工具界面

通过对“DataGridView”表格控件的再开发,程序插入的标注自动计入表格,并根据标注自动计算共长、单位重、共重等信息(如图2),并可以通过增加判断子程序,实现括号内外数量分别统计等更多扩展功能。表格窗体的DataGridView1_CellEndEdit事件,可获取表格的编辑操作,可以实现表格参数变化后的实时刷新,实现像Excel表格一样的实时计算功能。另外可以在表格的DataGridView1_Keydown事件,捕捉并实现“Ctrl+C”(复制),“Ctrl+V”(粘贴)等快捷键操作,实现功能扩展。

图2 钢筋明细表工具界面

通过ObjectARX.net在AutoCAD的绘图功能,即可在AutoCAD模型(或图纸)空间中绘制参数表。

钢结构的参数表原理与钢筋参数表类似,但传统钢结构图纸绘制一般并不包含標注,且常见钢结构包含钢板,钢管,型钢三种类型,因而需要基于“DataGridView”表格控件中开发更多的判断功能,结合正则表达式或直接对图元面积的测量,对输入的钢板、钢管等钢构件进行直接统计并输出钢结构数量表。对于型钢,程序提供型钢输入器,具有近500种型材的“库”功能,供直接调用选取并输出统计结果。

(2)后绑定调用Excel功能,及Excel参数表绘制功能。Excel是目前最为流行的表格工具,在设计中经常会与Excel进行数据相互调用的问题。常用的调用方法均不够理想,无法做到完美的兼容。

采用通过.NET调用ActiveX方式对Excel实现后绑定,我们可以实现表格实时导入、导出Excel功能,调用Excel方法为:Dim objExcel As New Object objExcel=GetObject(,“Excel.Application”)。在此基础上,针对原Excel表格中的合并单元格,上、下标等的判断,可以完美实现AutoCAD中插入Excel表格功能,生成对象为文本、线对象或AutoCAD表格对象。

(3)jig(动态输入)方式的实现及应用。ObjectARX.net提供了动态拖拽功能,可以生动形象的在图上拉拽出橡皮线一样的动态效果,可以方便设计人员方便直观的输入特定的构件[1]。从Editor命名空间的Drawjig类派生一个新类,并用来表达所要创建的对象,自动重载Sample函数及WorldDraw函数,实现动态效果,最后将派生类加入到图形数据库中,完成图形创建。

(4)公式计算正则表达式的运用。正则表达式是指在计算机科学中,一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和替换符合某个模式的文本内容。通过对正则表达式运用,程序可以實现自动判别公式并计算的功能。如判断公式中的加、减法的正则表达式为“\s*([-+])s*”,而常用的函数正则表达式为“(exp|log|log10|abs|sqr|sqrt|sin|cos|tan|asin|acos|atan)”。这样通过建立一个Function过程匹配正则表达式,可以在程序中实现常用的公式自动计算功能,为程序使用者提供更大的便利。

(5)基于规范公式的快速计算工具。设计人员经常需要面对一些基于规范公式的构件计算,如结构承载能力验算,裂缝验算等等,若采用手算方式,每次计算时均要根据规范公式的规定逐条拟定相关参数,并代入相对固定的公式进行计算,造成重复劳动,因而在AutoCAD中通过二次开发编制基于规范公式的快速计算工具,就成为一个较为合理的选择。

如沿周边均匀配筋的圆截面钢筋混凝土偏心受压承载能力计算,程序采用牛顿迭代法,以0.0001为步长试算确定合理的ζ数值,并计算A、B、C、D参数,验算结构抗力值[2]。程序界面如图3所示。

图3 承载能力验算工具界面

(6)ObjectARX.net实现AutoCAD的绘图、编辑等功能。运用ObjectARX.net在AutoCAD中绘图过程如下:创建对象的图形数据库;在内存中创建实体类的一个对象;打开图形数据库的块表;打开存储实体的块表记录;将对象添加到块表记录中。

5 结束语

通过基于.NET的开发技术,结合可视化表格窗体,Excel的后绑定调用、动态图元拖拽功能、正则表达式等多种程序开发,我们可以实现对桥梁结构的动态绘图、参数化及自动化设计、辅助计算等功能,本系列程序在桥梁设计工作中可以大幅度提高设计人员的工作效率,减少设计中的重复工作。鉴于.NET程序的优秀性能,我们可以通过更深入的开发,在AutoCAD环境下,编制功能更为强大的设计程序,为桥梁的参数化、标准化设计甚至BIM设计提供更为广泛的应用前景。

参考文献

[1]曾红飞,张帆,卢择临.AutoCAD VBA&VB.net开发基础与实例教程[M].中国电力出版社,2008.

[2]JTG D62-2004.公路钢筋混凝土及预应力混凝土桥涵设计规范[S].

[3]JTJ 025-86.公路桥涵钢结构及木结构设计规范[S].

猜你喜欢
程序开发
螺旋管传热与阻力特性实验研究及热工水力分析程序开发
浅析大学生在兼职小程序开发中遇到的问题
APP应用程序开发模式探究
电子制作(2019年19期)2019-11-23 08:42:02
基于TestStand的自动检测程序开发
电子测试(2018年11期)2018-06-26 05:56:16
浅析《桌面应用程序开发》课程翻转课堂实践教学探究
电子测试(2018年10期)2018-06-26 05:54:34
基于形成性评价的程序开发作业设计与实践
计算机教育(2017年8期)2017-09-01 22:30:19
高职C#程序开发改革研究
基于嵌入式系统Windows CE的应用程序开发
基于App inventor 2手机程序开发过程的学习与实——以“喵喵定时器”APP开发为例
电子制作(2017年1期)2017-05-17 03:54:08
VBA在Excel中的应用一例