使用SAP2000的OAPI计算结构位移指标

使用SAP2000的OAPI计算结构位移指标

据偶所知,SAP2000是目前国内在用结构分析与设计软件中唯一一款支持API(应用程序接口)的软件。虽然AutoDesk收购的Robot软件也具有强大的API功能,但由于其没有通过建设主管部门的鉴定,本文不做讨论。

SAP2000的OAPI功能

SAP2000的OAPI通过微软的COM接口提供了许多接口函数,用户可以采用多种编程语言(如VB、C#、C++、FORTRAN、MatLab和Python等)调用这些函数,这些函数几乎涵盖了所有菜单所能提供的功能,大大方便了设计过程中对模型数据的处理和使用。详细可参考SAP2000安装目录中的“CSi_OAPI_Documentation.chm”。

使用Python计算结构位移指标

这些天用Python语言试着调用了一些SAP2000的OAPI函数,感觉非常方便。为什么用Python?比较一下“CSi_OAPI_Documentation.chm”文件自带的例子程序,会发现Python的代码量是最少的。而且,Python语言具有非常简洁的语法和丰富的第三方库,不用编译即可执行,是科学计算不可多得的工具。

偶目前用Python编写了270多行代码,对计算过SAP2000(层)模型进行后处理,可实现类似PKPM的结构位移指标输出。如下图:

OAPI

遇到的小问题

使用中主要遇到如下两个小问题:

  • 有些函数执行速度较慢:这可能是COM调用的通病,尤其是按坐标范围选择函数,计算层间位移角时大量使用了选择函数进行循环,结果具有3383个点对象的模型输出6个工况的所有位移大概用了1个小时。

  • 按坐标范围选择函数“SapObject.SapModel.SelectObj.CoordinateRange”的参数输入仅支持英制单位:这个问题偶也是调试了好久才发现的,当前单位体系的设置对其不起作用(目前测试是V15版本),如果想按mm为单位需要要为对每个参数除以25.4转化为英寸。

小结

Python+OAPI为结构设计提供了很大自由空间,理论上“无所不能”。偶会一直关注和学习。