Python 二次開發 SAP2000 繪製


阿陽的SAP2000二次開發簡明教程,本系列博客僅用於個人學習,除此無其他任何用途。


Blog Links


因個人能力有限,該系列博客難免有所疏漏/錯誤,不妥之處還請各位批評指正。

本系列博客暫未全部完結,極其不定期的更新。


一、前沿

  本章主要介紹SAP2000中幾何模型的創建,包括繪製點對象、線對象、面對象和實體對象等。

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

"""
    =============================
    Author: DalNur
    Email: [email protected]
    =============================
"""

import win32com.client  # 庫導入
SapObject = win32com.client.Dispatch("Sap2000v15.SapObject")  # 創建Sap2000對象
SapObject.ApplicationStart()  # 啓動Sap2000程序
SapModel = SapObject.SapModel  # 創建SapModel對象
SapModel.InitializeNewModel(9)  # 初始化模型,設置單位爲N_mm_C。

二、創建點

參數 含義
x, y, z
r, Theta, z
r, a, b
相應座標系下的座標值
Name 創建點的名稱/標籤,當UserName未指定時,採用系統默認名稱。
UserName 用戶自定義的創建點的名稱/標籤
CSys 座標系名稱
MergeOff 若此項爲 False,同一位置處創建的點將被合併。
If this item is True, the points will not merge and two point objects will exist at the same location.
MergeNumber Two points objects in the same location will merge only if their merge number assignments are the same. By default all pointobjects have a merge number of zero.

2.1 笛卡爾座標系下創建點

x, y, z = 12, 37, 0
Name = " "
UserName = "A1"
CSys = "Global"  # 默認值
MergeOff = False  # 默認值
MergeNumber = 0  # 默認值
ret = SapModel.PointObj.AddCartesian(x, y, z, Name, UserName, CSys, MergeOff, MergeNumber)

2.2 柱座標系下創建點

r, Theta, z = 12, 37, 0
Name = None
UserName = "A2"
CSys = "Global"  # 默認值
MergeOff = False  # 默認值
MergeNumber = 0  # 默認值
ret = SapModel.PointObj.AddCartesian(r, Theta, z, Name, UserName, CSys, MergeOff, MergeNumber)

2.3 球座標系下創建點

r, a, b = 12, 37, 23
Name = " "
UserName = "A3"
CSys = "Global"  # 默認值
MergeOff = False  # 默認值
MergeNumber = 0  # 默認值
ret = SapModel.PointObj.AddSpherical(r, a, b, Name, UserName, CSys, MergeOff, MergeNumber)

Remarks

  This function adds a point object to a model. The added point object will be tagged as a Special Point except if it was merged with another point object. Special points are allowed to exist in the model with no objects connected to them.

  The function returns zero if the point object is successfully added or merged, otherwise it returns a nonzero value.


三、創建線

  SAP2000中的線對象,包括:框架樑、柱、次梁、斜撐、索、鋼束等。

3.1 創建直線框架

3.1.1 由節點座標創建直線框架

參數 含義
xi, yi, zi 創建框架 I 端節點座標值
xj, yj, zj 創建框架 J 端節點座標值
Name This is the name that the program ultimately assigns for the frame object. If no UserName is specified, the program assigns a default name to the frame object. If a UserName is specified and that name is not used for another frame, cable or tendon object, the UserName is assigned to the frame object, otherwise a default name is assigned to the frame object.
PropName 若 PropName = “Default”,系統指定默認截面屬性給框架;
若 PropName = None,系統不指定任何截面屬性給框架;
若 PropName 爲已定義的框架截面屬性名稱,則該截面屬性被指定給框架。
UserName 用戶自定義的框架名稱/標籤,若名稱已存在,則系統忽略該指定,框架將採用系統默認名稱。
CSys 定義框架端點座標值的座標系名稱
xi, yi, zi = 0, 0, 0
xj, yj, zj = 10, 10, 10
Name = " "
PropName = "Default", 
UserName = "Frame1"
CSys = "Global"
ret = SapModel.FrameObj.AddByCoord(xi, yi, zi, xj, yj, zj, Name, PropName, UserName, CSys)

在這裏插入圖片描述

3.1.2 由節點標籤創建直線框架

參數 含義
Point1、Point2 框架兩端部節點的名稱/標籤
PropName 框架截面屬性名稱
UserName 用戶自定義的框架名稱/標籤,若名稱已存在,則系統忽略該指定,框架將採用系統默認名稱。
ret = SapModel.PointObj.AddCartesian(10, 10, 10, " ", "Pnt1", "Global")  # 添加點Pnt1
ret = SapModel.PointObj.AddCartesian(20, 0, 0, " ", "Pnt2", "Global")  # 添加點Pnt2
Point1, Point2 = "Pnt1", "Pnt2"
Name = " "
PropName = None
UserName = "Frame2"
ret = SapModel.FrameObj.AddByPoint(Point1, Point2, Name, PropName, UserName)
print(ret)  # ret=(0, 'Frame2') 0表示代碼成功運行,'Frame2'爲框架名稱。

在這裏插入圖片描述

3.2 創建索


四、創建面


五、創建體


六、其他


七、示例

import win32com.client  # 庫導入
SapObject = win32com.client.Dispatch("Sap2000v15.SapObject")  # 創建Sap2000對象
SapObject.ApplicationStart()  # 啓動Sap2000程序
SapModel = SapObject.SapModel  # 創建SapModel對象
SapModel.InitializeNewModel(10)  # 初始化模型,設置單位爲N_m_C。

八、尾聲

  以上,便是 SAP2000 二次開發 —— 繪製 部分的簡介,如有疑問歡迎郵件來詢。

  僅以此文爲我Python調用SAP2000的學習做一個總結,同時也爲有需要的人提供多一點參考。

  胸藏文墨懷若谷,腹有詩書氣自華,希望各位都能在知識的pāo子裏快樂徜徉。

  因個人水平有限,文中難免有所疏漏,還請各位大神不吝批評指正。

  最後,祝各位攻城獅們,珍愛生命,保護髮際線!

  歡迎大家點贊、評論及轉載,轉載請註明出處!

  爲我打call,不如爲我打款!

在這裏插入圖片描述

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