复杂形态钢结构设计培训班

首页 非解构-公众号 SAP2000 API入门之写道虚功题

SAP2000 API入门之写道虚功题

作为结构力学中的经典理论,虚功(虚位移)原理想来早已被各位土木工程人士镌刻在灵魂深处,在本科考试、考研、一注基础中用过的图乘法没有上千也有成百。

奈何小编曾经的熟练自如在时间的流逝中消失的一干二净,在今年的一注基础考试中结构力学题做得哆哆嗦嗦如履薄冰。作为一直处于参数化设计入门阶段的小编灵机一动,决定通过编程在SAP2000中实现一个虚功原理题的自动计算。

01

外部程序调用SAP2000

SAP2000自v11.0版本以后,引进了SAP2000 API功能,即表用软件编程接口。本为采用的是v22版本。

本文在Visual Studio2019中通过C#实现对SAP2000 API的调用。由于程序并不复杂,只需建一个控制台程序(Console.App)来显示结果即可。

添加对SAP2000 API的引用:

点击菜单栏“项目/添加引用”,找到SAP2000的安装目录,以本文为例,选中sap2000v1.dll文件,并按确定,VS将生成对sap2000 API的引用。

在以往的文章中已经介绍了利用python访问SAP2000的方法,且SAP2000二次开发文档(CSi_OAPI_Documentation.chm)中提供了VBA、VB.NET、C#等7种语言的访问示例和说明,这里不再详细介绍,仅提供代码以作参考:

实例化SAP2000类

实启动SAP2000程序

小编初学API接口时一直迷惑于ret的含义和作用,后来懂得查阅CSi文档时发现官方写得明明白白,SAP2000类库中的函数都会返回一个Integer(整数型)数值,因此可以在程序开头事先声明一个变量ret,如果函数正确执行功能就返回0,不正确返回非零数,这在调试程序时非常的有用!

02

虚功原理:来做题!

小编先在sap2000中建立了一个简单的双跨连续梁,单跨3m,采用混凝土C30,梁截面200×400,跨中布置了30kN的集中力,计算时不计入自重。

而本文的目标是用外部程序来计算梁跨中的挠度是多少。

先让我们简单回顾下虚功原理。

在K点沿指定方向施加一个虚设的单位集中力Fk=1,引起的支座反力为FR,结构中某一微段上的虚内力为FN、M、Fs。支座的实际位移为c,微段上的相应变形为γds,根据虚功原理,K点实际位移Δk为:

根据公式,我们来理一下程序的思路:

(1) 提取实际工况下的构件内力,受弯构件主要提取弯矩;

(2) 在跨中节点施加竖向单位力,提取虚功工况下的弯矩;

(3) 根据图乘法计算获得梁跨中位移。

接下来就是通过不同的功能函数一步步地实现:

打开“虚功位移题”

提取实际工况下的弯矩

添加虚功工况和单位力;虚功内力提取同上

最后用简单的加减乘除,不涉及API函数调用,根据图乘法规则对提取的内力进行计算(小编发现手算可能比写个程序计算更快一点)

这个程序中需要注意的是:

SapModel.SetModelIsLocked 即解锁模型函数的位置,很多时候ret返回值不为0都是因为模型锁定状态下而无法编辑。

最后我们来运行下程序看下结果:

这个小程序没有什么实际意义,但有助于熟悉SAP2000二次开发所需函数。其实SAP2000软件自带虚功图功能,小编能力和时间有限,以后会对这块进行学习研究。

03

SAP2000 API函数

一个简单的小程序,已经运用了一些眼花缭乱的函数方法,可想而知SAP2000 API中提供的函数种类繁多且功能齐全、细致到位,满满的都是细节。掌握其中一部分就可以从外部程序对SAP2000模型“做许多你想做的事情”。为了方便用户查找、使用和记忆,SAP2000 API中的函数命名遵循一定的规则,即由简单的英语单词或简写拼装组成,对于这些函数的理解,英语四级够用了。

最后,小编在程序化设计入门阶段停留这么久发现,在丰富的资源中培养高效的搜索能力非常重要。比如小编曾经因为对“ret”的费解,在设计软件二次开发的门槛前迟迟无法迈入;又比如昨晚在CSi帮助文档内寻找目标函数到最后迷失方向而浪费掉的时间,熬多晚的夜,掉多少的头发。

为了方便大家交流技术和互通行业资讯,

请添加我们“转自:非解构-公众号”微信,

加入相关讨论交流群。

往期回顾
Revit做总体设计的初体验
当轨交地铁盾构线穿越场地
穹顶发展历史及经典案例赏析
NSTurbo开发回顾与展望
预制装配式结构简介-以上海为例
本文来自网络,不代表钢构人的立场,转载请注明出处。搜索工程类文章,就用钢构人网站。 https://www.ganggouren.com/2020/12/87c829f361/
上一篇
下一篇

作者: ganggouren

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

17717621528

在线咨询: QQ交谈

邮箱: 1356745727@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部