APP下载

VBA编程在特殊结构设计中的应用

2014-09-03魏鸣镝贾斌武

四川建筑 2014年4期
关键词:单元格内力编程

魏鸣镝,贾斌武

(北京通程泛华建筑工程顾问有限公司四川分公司,四川成都610017)

对于结构设计人员特别是从事工业结构设计的人员,时常会遇到一些特殊的结构如水池、冷却塔、一段炉等,这些结构用一般的结构设计程序如PKPM是设计不了的。对于这些特殊结构的设计现在一般的处理办法是购买专用的设计软件来解决。这种解决办法的优点是出图快、效率高,缺点是购买专业软件的数量多,购买和升级的费用高且对设计人员的专业技术提高不利。对于该问题还有一个解决办法是使用MIDAS、SAP2000或ANSYS等通用有限元程序作用结构分析平台对各种特种结构进行分析得出结构的内力分布,再由结构设计人员根据规范要求编写一些后处理程序来进行配筋设计或进行强度验算,这种解决办法的优点是所需的专业软件少,只需要一个通用有限元分析软件即可,且对结构设计人员的专业技术成长有利,缺点是人员要求较高,先期的开发时间较长,后期的程序维护需有专业人员来完成。本文以具体的工程实例为前提,阐述了第二种解决方法在设计和开发过程中的实际运用。

1 VBA编程语言介绍

提到编程首先涉及到用什么语言,对于结构工程师来说编程就是为了解决结构设计中遇到的实际问题,因此使用的编程语言越简单越好,毕竟结构工程工师不是软件工程师,没有必要使用那些高级编程语言。因此,对于结构工程师编程来说,VBA语言是首选,VBA是VISUAL BASIC FOR APPLICATION的简写,是非常流行的应用程序开发语言VISUAL BASIC的子集,主要是用来扩展Windows应用程序的功能,特别是Microsoft Office软件,使用应用程序实现自动化的功能。现在结构工程师平时所使用的主要设计软件如AUTOCAD、SAP2000、TEKLA等软件均提供了基于VBA的API函数接口,也就是说在平时设计过程中实际操作的各种命令均可以通过接口函数的功能来实现,这就给我们的设计工作带来很大的方便,例如平常设计过程中需要花几天或几十天的设计工作,我可以编写一段VBA代码在几分钟内解决,这大大提高了我们使用应用程序的效率。另外使用VBA不需要专门的编译程序,它内嵌于MICORSOFT OFFICE软件中,这非常利于VBA的推广运用。

2 VBA在LNG储罐壁正截面配筋验算中的具体运用

2.1 LNG储罐设计概况

LNG储罐是直径82 m、高达42 m的筒体结构,平均壁厚不足1 m ,对于这种特殊的薄壁结构用PKPM根本无法设计,在开发过程中,我们使用通用有限元程序对其在各种工况下的内力进行了分析,由于ANSYS没有中国规范的配筋设计和强度验算的后处理模块,所以必须通过其他的后处理软件来解决。而一般的结构设计软件的后处理模块都是与前处理及分析模块集成的,没有单独的后处理模块。同时由于罐体体积很大,在分析过程中划分的单元非常多,沿罐的径向截面有200多个节点,每个节点有300多种组合工况的内力,因此要对每一个节点的截面配筋验算工作量非常之大,用手工计算几乎不可能,因此,我们决定通过EXCEL中的VBA程序来解决。考虑到EXCEL中具有单元格拖曳功能,即单元格公式的自动套用功能,因此对于罐体各截面的配筋验算考虑按以下方式进行,单元格的各列为截面的已知条件,如截面厚度、配筋量以及内力组合结果,单元格的各行按不同工况的内力结果进行排列,这样只要通过一个函数对第一行的配筋结果验算完后,将结果单元格下拉即可得到其它各工况下的验算结果。

2.2 壳正截面配筋计算的具体实现

对于罐体的壳元的正截面配筋验算可以按柱的单向压(拉)弯公式实现,但考虑到以后在其他设计工作的推广运用,设计时按《混凝土结构设计规范》附录E-任意截面、圆形及环形构件正截面承载力计算的规定编写,具体实现流程如图1,过程可参见图2。

图1 计算程度编制流程

图2 柱正截面承载力曲线Nr-Mr曲线

根据上述流程,为保证程序的结构性,在编程过程中使用了不同的子函数以实现不同的功能,具体的子函数如下:

Sub SetValue()设计输入条件;

Function AdjustMy()考虑长柱效应,调整y向弯矩设计值;

Function AdjustMz() 考虑长柱效应,调整z向弯矩设计值;

Function AngleOfNeutralAxis()计算中和轴与y向的夹角;

Sub MeshCircSection()圆形截面单元划分;

Sub MeshRectSection()矩形截面单元划分;

Sub RebarPositionC()确定圆形截面钢筋位置;

Sub RebarPositionR()确定矩形截面钢筋位置;

Function CalE1()受压破坏状态下计算偏心距Ec;

Sub CriticalState()极限承载力计算;

Function ChkStateN()正截面轴向承载力强度比;

Function ChkStateM()正截面弯矩承载力强度比;

程序具体代码可参见附录,该函数的具体验算结果见表1。

3 结论

根据表1结果可看出,所编写的函数完成达到了我们预期的效果,更为重要的是该函数可以重用可作为EXCEL中的一个内嵌函数,任何使用EXCEL计算的结构设计均可调用该函数用于柱正截面承载力验算,大家还可以对其进行补充完善使该函数实现更强的功能。

表1 柱正截面承载力验算函数在EXECEL中算例

猜你喜欢

单元格内力编程
流水账分类统计巧实现
编程,是一种态度
元征X-431实测:奔驰发动机编程
孩子的生命内力需要家长去激发
编程小能手
玩转方格
玩转方格
纺织机上诞生的编程
逆作法孔口边梁内力计算
孩子的生命内力需要家长去激发