目前还是想用非解构里面一些有用的东西,重在积累,所以现在要一点一滴的去积累,去整理,去发现其中的一些东西
配置几基本环境所必须的两个文件:
*
SAP2000v20.dll 是用C#或C++进行编程的
*
SAP2000v20.tlb 用于vba的编程
以下整理的是二次开发的一些知识点,慢慢积累下来,并写成文章的形式
后面再做一点持续的更新的文章
参考资料:https://www.freesion.com/article/7503442976/#Blog_Links_6
sap2000中几何模型的创建,其中包括绘制点对象、线对象、面对象和实体对象等
创建点
几个常用的参数及其含义如下:
x, y, z/r, Theta, z /r, a, b:相应坐标系下的坐标值
Name:创建点的名称/标签
UserName:用户自定义的创建带你的名称/标签
CSys:坐标系名称
MergeOff:若此项为False,同一位置处创建的点将被合并
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.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
=============================
Author: DalNur
Email: liyang@alu.hit.edu.cn
=============================
"""
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 = 12, 37, 0
Name = " "
UserName = "A1"
CSys = "Global" # 默认值
MergeOff = False # 默认值
MergeNumber = 0 # 默认值
ret = SapModel.PointObj.AddCartesian(x, y, z, Name, UserName, CSys, MergeOff, MergeNumber)
柱坐标系创建点
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)
球坐标系创建点
r,a,b=12,37,23
Name=" "
UserName="A3"
CSys ="Global" #默认值
MergeOff = # 默认值
MergeNumber =0 # 默认值
ret=SapModel.Pointobj.AddSpherical(r,a,b,Name,UserName,CSys,MergeOff,MergeNumber)
解释如下:上面的函数用于将点对象添加到模型中,添加的点对象被标记为特殊的点,除非它与另一个点对象合并,允许在模型中存在特殊的点,不需要连接其他的对象。
如果点对象已经成功的添加或合并,则该函数返回零,否则返回非零值。
创建线
主要包括:框架梁、柱、次梁、斜撑、索、钢束等
创建直线框架
由节点坐标创建直线框架
相关的一些参数如下:
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)