官方文檔:
- 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爲組合係數。
# 其餘略
五、繪製
"""
略
"""
六、指定
"""
略
"""
七、分析
"""
略
"""
八、設計
"""
略
"""
九、尾聲
未完,待續!!!