Staad.Pro支座反力读取程序开发及应用

2022-04-16 06:23胡合江
科技创新与应用 2022年9期
关键词:命令支座荷载

程 浩,胡合江,余 巍

(中国电力工程顾问集团中南电力设计院有限公司,湖北 武汉 430071)

目前,随着BIM技术的迅速普及,广大设计企业对正向设计方法的探索不断深入,各软件之间设计信息和数据传输的需求也随之不断增加。结合前述原因,在Staad.Pro软件完成上部结构的内力分析之后接续基础设计的需求显得日益迫切,而其中的关键在于支座反力的读取。由于Staad.Pro软件的模型文件和内力结果文件都是公开的,其输入命令流和输出结果的格式也有相关的说明,因此可以考虑编写程序完成这一过程,国内已有不少相关的研究:胡小龙等[6]基于Staad.Pro软件的计算结果编写相关的计算程序,以完成锅炉炉架及变电构架的设计;乔爱科等[7]利用VC++和AutoCAD二次开发工具ARX编制了自动化的可视化后处理应用软件,可提取Staad.Pro软件计算模型的数据,扩展了其后处理功能;魏亮等[8]介绍了一些Staad.Pro软件二次开发的经验,并对开发过程中存储、查询数据的2种方案的效率进行比较;李金光等[9]介绍了基于Staad.Pro软件开发的3个辅助程序,提高了工作效率;叶葱葱[10]使用VB对Staad.Pro软件进行二次开发,完成了输煤栈桥混凝土构件和基础设计的程序。从以上研究中可知,对Staad.Pro软件进行二次开发以读取支座反力是一种简便可行的方法,本文将对一些相关问题进行讨论。

1 Staad.Pro输入和输出文件的解析

Staad.Pro的输入文件为*.std格式,输出结果文件为*.anl格式,都可直接采用记事本打开查看,可以比较方便地分析其内容的组织和格式,编写相应的代码以获取需要的内容,文献[8]介绍了一些读取这两个文件的基本要点。对于支座反力而言,需要从*.std文件中读取支座坐标以及荷载工况等,从*.anl文件中读取各支座在各工况下的反力值,为保证程序能够正确稳定的读取,还有以下需要注意的问题:

(1)Staad.Pro默认在输出文件中打印输入文件中的所有内容,因此在一般情况下,仅需从*.anl文件中就可读取到所有的信息。当在输入命令流中使用SET ECHO OFF命令时,自该命令之后的内容将不再输出文件中打印,对于此种情况,需考虑同时从*.std文件中读取部分信息。

(2)Staad.Pro默认采用Y轴作为竖向轴,但也提供了SET Z UP命令将Z轴作为竖向轴,因此在读取过程中必须检测输入文件中是否存在此命令,以正确判断支座反力的方向。

(3)需要在命令流中添加PRINT SUPPORT REACTIONS命令才能将支座反力输出到*.anl文件中,当输入命令流中不存在此命令时,需要提示用户进行操作。此外,PRINT ANALYSIS RESULTS也能达到同样的目的,但它是PRINT SUPPORT REAC TIONS、PRINT MEMBER FORCES以及PRINT JOINT DISPLACEMENTS三个命令之和,当只需要输出支座反力而不需要其他结果时,此命令将导致*.anl文件较大,对文件读取速度有较大的影响,应尽量避免。

(4)Staad.Pro可通过命令流控制所需要输出的荷载工况和支座。对于荷载工况,可以采用LOAD LIST即“有效荷载”命令控制输出的荷载工况,Staad.Pro将仅输出在LOAD LIST之后所列出的荷载工况。对于支座反力同理,在PRINT SUPPORT REACTIONS命令之后添加LIST,可以仅输出其后所列出的支座的反力。因此,从输出文件中并不一定能获取所有的支座反力,在出现此情况时对用户发出提示是比较有必要的。在输出文件的PROBLEM STATISTICS项中列出了项目的总体信息,如图1所示,可以获取到当前项目中的支座及荷载工况的数量,便于与实际读取到的数量进行比较。

图1 输出文件中的PROBLEM STATISTICS项

(5)部分命令流有简写的方式,如PRINT SUPPORT REACTIONS简写为PRI SUP REA,PRINT ANALYSIS RESULTS简写为PRI ANA RES,更多简写的命令可查询Staad.Pro的相关技术说明,读取过程中需要对完整和简写的情况均进行识别。

(6)支座反力输出的单位和格式。支座反力输出内容的示例,如图2所示。首行的“-UNIT KN METE”列出了支座反力的单位。Staad.Pro中长度和力的单位见表1和表2,在读取或后续的输出过程中需注意进行转换。从图2中可见,支座反力在输出文件中是依次按节点和工况顺序输出的,不同的支座之间没有其他标记,只在每个支座首行的开头列出了支座编号。此外,当支座反力的输出结果跨越多页时,在每页的开头都将重新列出表头,即图2中方框内的部分,在读取的过程中应予以忽略。

表2 Staad.Pro命令流中的力单位

图2 输出文件中的支座反力

表1 Staad.Pro命令流中的长度单位

2 开发实现

如前所述,*.std和*.anl的文件格式都是公开的,因此一般的开发语言都能够直接读取其中的信息,本文以C#为例介绍支座反力的读取方式。

其中金钱是一块块脊柱骨,外圆内空,如同一枚枚金钱。所谓钓蟾就是将丹田之气,过海底上脊椎,撑命门,入玄关。因为入海底之下有尾闾下关,这关口是真气极不容易过的,所以叫钓蟾!”

(1)文件内容的读取。C#提供了StreamReader类用于读取文本文件,为方便后续的查找操作,可采用逐行读取的方式,对于读取到的每一行内容,调用string类的ToUpper方法将其统一转换成大写,再将其存储到List集合当中。通过StreamReader对象的EndOfStream属性判断是否读取到文件末尾,在到达末尾位置后,使用Close方法关闭文件。

(2)关键信息的提取。提取关键信息的主要过程就是对文件的查找和搜索过程,一般这些关键内容都是随着某些关键字一起出现,如“NUMBER OF SUPPORTS”等,因此首先需要找到关键字所在的位置,再获取相关的内容。还有部分关键信息具有特定的格式,如支座反力的首行数据以支座编号开始,后续为工况编号以及6个内力数据,中间由一个或多个空格分隔,而其它行只有工况编号以及6个内力。C#提供了正则表达式Regex类,可以用于查找和匹配具有特定字符或格式的字符串,对于需要的信息,在了解其关键字和格式之后即可编写出用于匹配的模式,如对于支座数量的获取可以采用匹配模式:NUMBERs+OFs+SUPPORTSs+[1-9]d*,对于支座反力的首行采用匹配模式:^s+[1-9]d*s+[1-9]d*(s+(-?d+)(.d+)?){6}$等,在获取匹配的内容之后,再进行字符串的分割和提取操作即可得到所需要的内容。

(3)数据的存储。文献[8]通过将数组和散列表对比,发现使用散列表来存储数据的效率远高于数组。C#中的Dictionary容器即是一种散列表,因此适合用来存储支座反力。首先构建由节点号、荷载工况号和支座反力组成的JointLoad类来存储一个支座在一个工况下的支座反力;然后建立以荷载工况号为key,JointLoad为value的Dictionary,用于存储一个支座在多个工况下的反力;再建立以支座节点号为key,Dictionary为value的Dictionary>,用于存储所有的支座反力。这样即可实现对任意支座在任意工况下反力的快速查找。

对于支座反力的读取和输出往往有获取其极值或排序等其它操作,一种比较方便的方式是利用C#面向对象的特性,创建继承于Dictionary>的SupportReaction类,将排序、获取极值等方法或属性放在此类中,这样既可以简化代码,程序结构也更加清晰,便于扩展功能。

3 应用案例

图3为某工程500 kV变电构架,其上部结构采用Staad.Pro进行内力分析,在杆件截面设计完成之后,基础采用基于Revit开发的变电构支架基础设计程序进行三维正向设计,基础采用天然基础。

图3 某500 kV变电构架

在基础设计过程中需要输入柱脚的设计荷载,程序虽然提供了荷载输入的功能,但是因柱脚和荷载工况较多,需要设计人员在Staad.Pro软件中筛选部分荷载工况之后再输入到软件当中,这往往会耗费较多的时间,且存在遗漏最不利工况的可能。程序在后续开发过程中引入了本文上述介绍的方法,提供了从Staad.Pro读取上部结构荷载的功能,在上部结构设计完成之后,直接从输出文件中读取支座反力,再经必要的设置和调整,即可获取基础的设计荷载。

如图4所示,对于荷载工况,Staad.Pro本身只进行单工况和组合工况的区分,对于组合工况则并不区分具体的类型,也不区分是否为地震工况,在设置导入的荷载工况时,程序可对荷载工况的类型进行初步判断,并可由用户进行调整。

图4 Staad.Pro荷载工况导入设置界面

导入之后的基础设计荷载如图5所示,其中荷载作用点标高可从支座的坐标中读取以作为默认值,也可由用户进行修改。此后,基础设计程序即可使用导入的荷载完成基础计算及后续设计过程。

图5 导入后的基础设计荷载

本工程通过在基础设计程序中引入支座反力读取的模块,实现了从Staad.Pro上部结构计算到基础设计荷载输入的接口,简化了人工筛选及输入荷载工况的过程,提高了基础设计程序的便利性和设计工作效率。

4 结论

本文介绍了通过读取Staad.Pro输入和输出文件以获取支座反力的一些要点,指出了在解析文件格式过程中的一些关键问题;并以C#语言为例,介绍了读取支座反力的具体方法;最后通过在程序开发以及实际工程中的应用,验证了其在基础设计过程中的可行性及便利性。

猜你喜欢
命令支座荷载
活荷载
日光温室荷载组合方法及应用
只听主人的命令
改性橡胶隔震支座抗拉性能试验研究*
桥梁支座日常养护与维修施工技术探讨
移防命令下达后
某上承式拱桥荷载试验探讨
这是人民的命令
爆炸与火荷载联合作用下RC梁耐火极限的数值分析
铁路桥梁支座耐磨材料的性能研究与优选应用