SAP2000 Python API

官方文檔:

  • SAP2000官網
  • CSI分析參考手冊/CSI Analysis Reference Manual
  • CSi OAPI Documentation
  • SAP2000 API Documentation
  • SAP2000 Help
  • SAP2000 中文版 使用指南(第二版)

一、前沿

SAP2000(Structure Analysis Program 2000)是由美國Computer and Structure Inc.(CSI)公司開發研製的通用結構分析與設計軟件,在世界範圍內應用廣泛。

通過SAP2000 API(Application Programing Interface/應用軟件編程接口),用戶便可編寫程序控制SAP2000,調用SAP2000中的各種功能,實現自動建模、自動分析,還可以實現自動調整參數、迭代運行等。

1、pywin32庫的安裝

如已安裝Anaconda,在 Anaconda Prompt 中鍵入 pip install pywin32 便可自動完成該庫的導入;如未安裝 Anaconda,也可 pip 手動導入,其在PyPI(Python Package Index)上的註冊地址爲: https://pypi.org/project/pywin32

2、版本說明
pywin32: 224
SAP2000: v15

二、與SAP2000的連接

#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''
=============================
Author = Hulunbuir & DalaiNur
Email: [email protected]
Last Update: 2019.09.29 11:27
=============================
'''
import win32com.client

# create Sap2000 object
SapObject = win32com.client.Dispatch("Sap2000v15.SapObject")

# start Sap2000 application
SapObject.ApplicationStart()

# create SapModel object
SapModel = SapObject.SapModel

# initialize model
SapModel.InitializeNewModel()

# create new blank model
ret = SapModel.File.NewBlank()

三、文件

1、打開

# open an existing file
ret = SapModel.File.OpenFile(r"C:\SapAPI\Example 1-019a.sdb")

2、保存

# save SDB file
ret=SapModel.File.Save("C:\SapAPI\x.sdb")

3、退出

# close Sap2000
ret = SapObject.ApplicationExit(False)
# frees up system resources (very important )
SapModel = 0
SapObject = 0

四、定義

1、定義鋼材屬性

# (1) initialize new material property
ret = SapModel.PropMaterial.SetMaterial("Q355", 1, -1)
      # "Q355"爲材料名稱;
      # 材料類型號爲1,表示鋼材;
      # -1表示材料顯示顏色採用系統默認。
    
# (2) assign material property mass per unit volume
ret = SapModel.PropMaterial.SetWeightAndMass("Q355", 2, 7850)
      # 設置質量密度爲7850

# (3) assign isotropic mechanical properties
ret = SapModel.PropMaterial.SetMPIsotropic("Q355", 295000, 0.3, 6E-06)
      # 設置彈性模量爲29500,泊松比爲0.3,線膨脹係數爲6E-06。

2、定義框架截面

# (1) 定義角鋼截面
ret = SapModel.PropFrame.SetAngle("ANGLE1", "Q355", 6, 4, 0.5, 0.5, -1)
      # 參數分別爲:截面名稱、材料名稱、垂直肢高度、水平肢寬度、水平肢厚度、垂直肢厚度、顯示顏色。

# (2) 定義圓形截面
ret = SapModel.PropFrame.SetCircle("C1", "Q355", 20, -1)
      # 參數分別爲:截面名稱、材料名稱、直徑、顯示顏色。

# (3) 其餘截面
"""
略
"""

3、定義節點束縛

# (1) 定義體束縛
Value = [True, True, True, False, True, True]
ret = SapModel.ConstraintDef.SetBody("Body1", Value)
      # 參數分別爲:體束縛名稱、被束縛的自由度。
      
# (2) 其餘束縛
"""
略
"""

4、定義組

ret = SapModel.GroupDef.SetGroup("Group1")
      # 新添加的組的名稱爲"Group1"

5、定義荷載模式

# add new load pattern and assign load type

# 添加恆荷載"DeadLoad"並將自重乘數設置爲1.0
ret = SapModel.LoadPatterns.Add("DeadLoad", 1)
ret = SapModel.LoadPatterns.SetSelfWtMultiplier("DeadLoad", 1.0)

# 添加活荷載"Wind"並將自重乘數設置爲0
ret = SapModel.LoadPatterns.Add("Wind", 3)
ret = SapModel.LoadPatterns.SetSelfWtMultiplier("Wind", 0)

6、定義荷載工況

# (1) 定義線性靜力分析工況
ret = SapModel.LoadCases.StaticLinear.SetCase("LCASE1")
ret = SapModel.LoadCases.StaticLinear.SetInitialCase("LCASE1", None)
MyLoadType = ["Load", "Load"]  
MyLoadName = ["DeadLoad", "Wind"] 
MySF = [1.35, 1.4]
ret = SapModel.LoadCases.StaticLinear.SetLoads("LCASE1", 2, MyLoadType, MyLoadName, MySF)
      # 參數分別爲:工況名稱、包含荷載模式格式、荷載類型、荷載模式名稱、比例係數。

# (2) 其餘分析工況
"""
略
"""

7、定義荷載組合

# 'add combo
ret = SapModel.RespCombo.Add("COMB1", 1)
      # 1表示組合方式爲線性疊加
# 'add load case to combo
ret = SapModel.RespCombo.SetCaseList("COMB1", 0, "DeadLoad", 1.4)
ret = SapModel.RespCombo.SetCaseList("COMB1", 0, "Wind", 1.2)
      # 0表示荷載工況參與組合,"Wind"爲荷載工況名稱,1.2爲組合係數。
      
# 其餘略

五、繪製

"""
略
"""

六、指定

"""
略
"""

七、分析

"""
略
"""

八、設計

"""
略
"""

九、尾聲

未完,待續!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章