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,不如为我打款!

在这里插入图片描述

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