Python 读取/处理 s2k/$2k 文本文件
目 录
- 一、前言
- 二、读取SAP模型数据
- 2.1 数据结构
- 2.2 表格信息
- 2.3 单位制
- 2.3 材料属性
- 2.4 框架截面属性
- 2.5 面截面属性
- 2.6 节点对象
- 2.7 框架对象
- 2.8 面对象
- 2.9 框架均布荷载
- 2.10 面均布荷载
- 2.11 边界条件
- 2.10 数据的精加工
- 2.11 创建csv文件
- 三、创建CAD图形
- 四、创建Abaqus模型
- 五、创建ANSYS模型
- 六、尾声
- 七、参考文献
一、前言
当保存模型时,SAP2000 将自动将模型文本文件存成一个后缀为 .$2k 的文件,它与模型数据 .sdb 保存的同时进行保存。如果由于一些原因不能打开模型 .sdb文件时, 可以试着导入 .$2k 文件。.$2k 文本文件只是用于分析目的或者在特殊情况下复原模型,并且它不是数据库文件可替代文件。不包含所有模型信息。
从一个给定的 SAP2000 模型可以导出任意多个文件。每个文件可以包含不同的表格并且可以应用于模型不同部分。这个文件可以被其它程序使用,进行修改后再次导入到 SAP2000 程序中,或用于其它的目的。s2k 文件便是其中之一,s2k 文件即SAP2000 数据库文本 (.s2k) 文件,它是从 SAP 输出的纯文本文件。
.$2k 或 .s2k 文件是 SAP2000 文本文件,它们的格式是完全一致的,工程师可以用 写字板、记事本 等文字处理软件打开,对其中的内容进行修改,然后再用 SAP2000 导入,可以实现对模型的修改。
$2k 在模型数据 .sdb 保存时自动创建,s2k 需手动导出。
s2k文件的导入
s2k文件的创建
SAP2000版本:SAP2000 v22.0.0 。
二、读取SAP模型数据
从 .$2k 文件中可获取 SAP 模型的绝大部分信息,如点对象的标签和坐标,框架对象的起点标签、终点标签、截面指定和局部轴方向等,材料属性,截面属性等等。
本文以如下图所示的 SAP 模型为例,通过 Python 编程读取其 s2k 文件数据,并对模型数据进行处理,完成对模型基本信息的分类,生成相应的 csv 文件,以方便在其他软件中复建该模型。
值得说明的是,为了适配更多版本的 s2k 文件,本文中很多 Pyhton 代码显得不是那么高明,甚至笨重啰嗦。但这些代码绝对逻辑清楚,考虑全面,通用性较强,容错能力优秀,提示信息简洁明了。如您有什么建议,还请不吝赐教,邮箱: liyang@alu.hit.edu.cn 。
本文程序以准确获取模型信息,适配尽可能多版本的 s2k 文件为主要目标,代码运行效率是否最优并不重要。速度不重要,准确最重要。
CADmep19x64.arx 此问题待解决。
#!/usr/bin/env python
# -*- coding: utf-8 -*-'''
=============================
Author: DalNur
Email: liyang@alu.hit.edu.cn
=============================
'''import os
import res2kname = "GG-JB.s2k" # s2k文件名称
currdir = os.getcwd() # 当前工作目录
s2kpath = currdir + "\\" + s2knames2kpath = r"D:\GTC\GG-JB.s2k" # s2k文件绝对路径
2.1 数据结构
从 s2k 文件内读取的各种模型信息,按类别存储在以下几个 Python 字典中, 用于存储节点对象信息的字典 jointObjs , 用于存储框架对象信息的字典 frameObjs , 用于存储面对象信息的字典 areaObjs , 用于存储材料属性信息的字典 matProps , 用于存储框架对象截面指定信息的字典 frameSecProps , 用于存储面对象截面指定信息的字典 areaSecProps, 用于存储框架对象 (均布) 荷载指定信息的字典 frameLoads, 用于存储面对象 (均布) 荷载指定信息的字典 areaLoads, 以及用于定位以上各种信息在 s2k 文件中的位置的字典 tables 。
字典名称 | 类别 |
---|---|
tables | 表格 |
matProps | 材性 |
frameSecProps | 框架截面 |
areaSecProps | 面截面 |
jointObjs | 点 |
frameObjs | 线 |
areaObjs | 面 |
frameLoads | 框架荷载 |
areaLoads | 面荷载 |
tables = {} # 表格信息定位
matProps = {} # 材料属性
frameSecProps, areaSecProps = {}, {} # 框架截面属性/面截面属性
jointObjs, frameObjs, areaObjs = {}, {}, {} # 点对象/框架对象/面对象
frameLoads, areaLoads = {}, {} # 框架对象荷载/面对象荷载
- 表格信息定位字典的数据结构
tables = {'TABLE: "PROGRAM CONTROL"': [4, 5], 'TABLE: "ACTIVE DEGREES OF FREEDOM"': [8, 8],'TABLE: "ANALYSIS OPTIONS"': [11, 11],. . . . . .'TABLE: "OPTIONS - COLORS - DISPLAY"': [75786, 75794],'TABLE: "OPTIONS - COLORS - OUTPUT"': [75797, 75805],'TABLE: "DATABASE FORMAT TYPES"': [75808, 75808],'TABLE: "PROJECT INFORMATION"': [75811, 75823]}
- 材料属性字典的数据结构
matProps = {'C30B': [1, 'Concrete', 'Isotropic', 2500.0, 30000000000.0, 12000000000.0, 0.25],. . . . . .'HPB300': [6, 'Rebar', 'Uniaxial', 7999.999999999999, 200000000000.0, 0, 0],. . . . . .'JTG-fpk1470': [8, 'Tendon', 'Uniaxial', 7849.999999999999, 195000000000.0, 0, 0],. . . . . .'Q235B': [9, 'Steel', 'Isotropic', 7799.999999999999, 206000000000.0, 79230769230.76921,0.3],. . . . . .'RIGIDBAR': [11, 'Other', 'Isotropic', 0.0, 2.8e+19, 1.4e+19, 0.0]}
- 框架截面字典的数据结构
frameSecProps = {'B1000X300X8X8XXQ80211B': [1, 'Q80211B', 'Box/Tube', 1.0, 0.3, 0.008, 0.008, 'Null', 'Null',0.020544, 0.001046, 0.002451, 0.000372, 0.0, 0.016, 0.0048, 0.004903,0.002478, 0.006254, 0.002659, 0.345423, 0.134507],. . . . . .'B600X200X10X10XXQ80211B': [29, 'Q80211B', 'Box/Tube', 0.6, 0.2, 0.01, 0.01, 'Null', 'Null',0.0156, 0.000322, 0.000673, 0.000118, 0.0, 0.012, 0.004, 0.002244,0.001181, 0.002862, 0.001302, 0.207754, 0.087016],. . . . . .'RIGIDBAR': [61, 'RIGIDBAR', 'Rectangular', 0.1, 0.1, 'Null', 'Null', 'Null', 'Null', 0.01,1.4e-05, 8e-06, 8e-06, 0.0, 0.008333, 0.008333, 0.000167, 0.000167, 0.00025,0.00025, 0.028868, 0.028868]}
- 面截面字典的数据结构
areaSecProps = {'RIG1000C35F': [1, 'C35F', 'Shell', 'Shell-Thick', 1.0],. . . . . .'RIG200C35F': [6, 'C35F', 'Shell', 'Shell-Thick', 0.2],. . . . . .'W500C40W': [11, 'C40W', 'Shell', 'Shell-Thick', 0.5]}
- 点对象字典的数据结构
jointObjs = {'2001902': [1, 'GLOBAL', 'Cartesian', 305.969, 91.824, 10.0],. . . . . .'4010545': [1682, 'GLOBAL', 'Cartesian', 93.291, 79.807, 0.928],. . . . . .'13001829': [3228, 'GLOBAL', 'Cartesian', 145.551, 55.207, 8.0]}
- 框架对象字典的数据结构
frameobjs = {'3000092': [1, '3000170', '3000171', 'B1200X600JXC35B', 0],. . . . . .'4009829': [1363, '4003302', '4005181', 'B1500X1200JXC35B', 0],. . . . . .'13005362': [4048, '13001829', '13000323', 'B800X400X25X25XXQ80211B', 0]}
- 面对象字典的数据结构
areaObjs = {'3000265': [1, '4', ['3000093', '3006515', '3007425', '3003723'], 'W500C40W'],. . . . . .'4019731': [1509, '5', ['4005397', '4005286', '4002422', '4005394', '4005340'], 'RIG120C35F'],. . . . . .'12000129': [2063, '4', ['12000229', '12000230', '12000161', '12000160'], 'RIG120C35F']}
- 框架均布荷载字典的数据结构
frameLoads = {1: ['5000001', 'DEAD', 'GLOBAL', 'Force', 'Gravity', 6000.0],. . . . . .555: ['8000460', 'DEAD', 'GLOBAL', 'Force', 'Gravity', 6000.0],. . . . . .1151: ['13001199', 'DEAD', 'GLOBAL', 'Force', 'Gravity', 6000.0]}
- 面均布荷载字典的数据结构
2.2 表格信息
在 s2k 文件中,模型的各种信息按类存储在不同的表格内,如轴网信息位于 TABLE: “GRID LINES” 表格内,通用材料属性信息位于 TABLE: “MATERIAL PROPERTIES 01 - GENERAL” 表格内,如下图所示。
s2k文件
在更精确获取模型信息前,有必要知道该信息所属表格在 s2k 文件中的位置,这样有利于提高代码的运行效率,尽最大可能减少对 s2k 整个文件的遍历次数,获取 s2k 文件内各表格信息的 Python 代码如下。
tablenames, tablerows = [], [] # 表格名称及所在行号with open(s2kpath, "r", encoding='utf-8') as f:s2kdata = f.readlines() # 获取s2k文件内全部数据totallines = len(s2kdata) # s2k文件总行数row = 0 # 行号计数器target_string = "TABLE" # 目标字符串/待匹配字符串for line in s2kdata:row = row + 1......... for i in range(len(tablenames) - 1):tablename = tablenames[i]row1, row2 = tablerows[i]+1, tablerows[i + 1]-2tables[tablename] = [row1, row2]row1, row2 = tablerows[-1]+1, totallines-2
tables[tablenames[-1]] = [row1, row2]
tablenames, tablerows = 0, 0 # 释放内存print(tables)
由上述代码得到的表格信息字典 tables 如下图所示。字典 tables 的键名为每个表格的表头名称,如 TABLE: “PROGRAM CONTROL” 、TABLE: “GRID LINES” 等,与键名相对应的键值为该表格有效数据行在s2k文件中的位置信息,即始末行号,计数始于1。
如键名 TABLE: “PROGRAM CONTROL” 对应的键值为列表 [4,5],其含义为表格 TABLE: “PROGRAM CONTROL” 的有效数据行为 s2k 文件中的第 4 行数据到第 5 行数据,通过此方式便可引用 s2k 文件中任意一表格内的数据。
2.3 单位制
与 Abaqus、ANSYS 等有限元计算软件不同,在 SAP2000 中存在单位制,用户可在状态条最右侧的单位制下拉列表中选择模型所采用的单位制,用户切换当前单位制后,系统自动完成单位换算。
单位制下拉列表
质量 | 长度 | 时间 | 力 | 压强/应力 | 能量 | 密度 | 弹性模量 |
---|---|---|---|---|---|---|---|
kg | m | s | N | Pa | J | kg/m3 | Pa |
t | mm | s | N | MPa | N-mm | t/mm3 | MPa |
1kg/m3=10−12t/mm31 kg/m^3 = 10^{-12} t/mm^3 1kg/m3=10−12t/mm3
为了规范有限元建模,同时也方便各软件间的数据交换,特此规定,无论原 SAP 模型采用何种单位制,通过 Python 处理后的模型信息均采用国际标准单位制:N-m-kg 。
通常情况下,在 SAP2000 中,工程师习惯采用 N-mm-t 单位制,而英制单位在我国不常用到,因此,本文所编写的 Python 程序,只识别 N-m-kg 和 N-mm-t 单位制,并实现 N-mm-t 向 N-m-kg 的自动换算,其他单位制,则视为非法单位,若被程序识别出,程序自动终止运行。
table = 'TABLE: "PROGRAM CONTROL"' # 表格名称
row1, row2 = tables[table] # 确定有效数据行起始位置
tabledata = s2kdata[row1-1:row2] # 表格有效数据行数据target_strings = ["Version", "CurrUnits"] # 待匹配字符串列表
result_strings = ["Null", "Null"] # 匹配成功后输出的等号后的字符串/Null用于占位/防止报错temp_line = [] # 多行数据合并为1行
for line in tabledata:line = line.strip() # 去掉尾部换行符号line = re.split(r" +", line) # 2个及以上空格分割字符temp_line = temp_line + linei = 0
for s in temp_line:target_string = target_strings[i].........version, currunits = result_strings
s2kname = s2kpath.split("\\")[-1]
s1 = "-->> File Name: %s." % s2kname
s2 = "-->> Total Lines: %s." % totallines
s3 = "-->> Program Name: SAP2000."
s4 = "-->> Version: %s." % version
s5 = "-->> Current Units: %s." % currunits
print("\n")
print(s1)
print(s2)
print(s3)
print(s4)
print(s5)
if currunits == '"N, mm, C"':sf = 0.001 # scale factor/缩放系数s6 = "-->> Scale Factor: %s." % sfprint(s6)print("\n")
elif currunits == '"N, m, C"':sf = 1.0 # scale factor/缩放系数s6 = "-->> Scale Factor: %s." % sfprint(s6)print("\n")
else:# pass/# 非法单位提示print("\n")s6 = "**** ERROR: Illegal units."s7 = 12 * " " + "Program termination."s8 = 12 * " " + "Please check the SAP model."print(s6)print(s7)print(s8)print("\n")exit() # 非法单位程序自动终止运行
- 示例
运行上述代码,可获取 GG-JB.s2k 文件的基本信息及单位制信息,并确定其向国际标准单位的单位换算系数,若原 SAP 模型的单位制为 N-mm-kg,则单位换算系数 sf = 0.001,若原 SAP 模型的单位制为 N-m-kg,则单位换算系数 sf = 1.0,除此之外,其他的任何单位制都被视为非法单位,本程序不识别,程序运行至此处自动终止。
2.3 材料属性
def get_material_properties(s2kdata, tables, sf=1.0):"""获取s2k文件内的材料属性,并将其存储到字典matProps中,返回值为材料属性字典matProps。:param s2kdata: s2k文件全部数据。:param tables: s2k文件表格信息字典。:param sf: 单位换算系数。"""matProps = {} # 材料属性字典table = 'TABLE: "MATERIAL PROPERTIES 01 - GENERAL"' # 表格名称row1, row2 = tables[table] # 确定有效数据行起始位置tabledata = s2kdata[row1 - 1:row2] # 表格有效数据行数据......... matProps[matname] = [matnum, mattype, symtype, "Null", "Null", "Null", "Null"]# 材料编号、材料种类、力学分类、质量密度、弹性模量、剪切模量、泊松比。table = 'TABLE: "MATERIAL PROPERTIES 02 - BASIC MECHANICAL PROPERTIES"' # 表格名称row1, row2 = tables[table] # 确定有效数据行起始位置tabledata = s2kdata[row1 - 1:row2] # 表格有效数据行数据......... matProps[matname][2:] = rho, e, g, nureturn matProps
- 示例
运行上述代码,可获取 GG-JB.s2k 文件内所定义的材料属性信息,并将其存储在 matProps 字典中,各种材性的单位采用国际标准单位,即 N-m-kg。
字典 matPropss 的键名为各材料的材料名称,如 C30B、C40B 等,与键名相对应的键值为该材料的基本属性信息,依次为:材料编号、材料种类 (混凝土、钢材、钢筋等)、材料力学分类 (各向同性、单轴受力等)、质量密度、弹性模量、剪切模量、泊松比。
2.4 框架截面属性
def get_frame_section_properties(s2kdata, tables, sf=1.0):"""获取s2k文件内的框架截面属性,并将其存储到字典frameSecProps中,返回值为框架截面属性字典frameSecProps。:param s2kdata: s2k文件全部数据。:param tables: s2k文件表格信息字典。:param sf: 单位换算系数。"""frameSecProps = {} # 框架截面属性字典table = 'TABLE: "FRAME SECTION PROPERTIES 01 - GENERAL"' # 表格名称row1, row2 = tables[table] # 确定有效数据行起始位置tabledata = s2kdata[row1 - 1:row2] # 表格有效数据行数据secnum = 0 # 截面编号计数器......... target_strings = ["Material", "Shape", "t3", "t2", "tf", "tw", "t2b", "tfb", "Area","TorsConst", "I33", "I22", "I23", "AS2", "AS3", "S33", "S22", "Z33","Z22", "R33", "R22"] # 待匹配字符串......... return frameSecProps
- 示例
运行上述代码,可获取 GG-JB.s2k 文件内所定义的框架截面属性信息,并将其存储在 frameSecProps 字典中,各种几何属性的单位采用国际标准单位,即 N-m-kg。
字典 frameSecProps 的键名为各框架截面的截面名称,如 B1000X500JXC35B 等,与键名相对应的键值为该框架截面的基本属性信息,依次为:框架截面编号、截面采用的材料名称、截面形状、垂直 3 轴方向上的截面尺寸、垂直 2 轴方向上的截面尺寸、上翼缘厚度、腹板厚度、下翼缘宽度、下翼缘厚度、横截面积、扭转常数、截面对局部 3 轴的惯性矩、截面对局部 2 轴的惯性矩、截面惯性积、2 方向上的剪切面积、3 方向上的剪切面积、截面对局部 3 轴的截面模量、截面对局部 2 轴的截面模量、截面对局部 3 轴的塑性截面模量、截面对局部 2 轴的塑性截面模量、截面对局部 3 轴的回转半径、截面对局部 2 轴的回转半径。
2.5 面截面属性
def get_area_section_properties(s2kdata, tables, sf=1.0):"""获取s2k文件内的面截面属性,并将其存储到字典areaSecProps中,返回值为面截面属性字典areaSecProps。:param s2kdata: s2k文件全部数据。:param tables: s2k文件表格信息字典。:param sf: 单位换算系数。"""areaSecProps = {} # 框架截面属性字典table = 'TABLE: "AREA SECTION PROPERTIES"' # 表格名称row1, row2 = tables[table] # 确定有效数据行起始位置tabledata = s2kdata[row1 - 1:row2] # 表格有效数据行数据secnum = 0 # 截面编号计数器......... target_strings = ["Material", "AreaType", "Type", "Thickness"] # 待匹配字符串sfs = [None, None, None, sf] # 单位换算系数......... result = round(float(result) * sf, 6) # 单位换算areaSecProps[secname][i + 1] = resultreturn areaSecProps
- 示例
运行上述代码,可获取 GG-JB.s2k 文件内所定义的面截面属性信息,并将其存储在 areaSecProps 字典中,各种几何属性的单位采用国际标准单位,即 N-m-kg。
字典 areaSecProps 的键名为各面截面的截面名称,如 RIG1000C35F、RIG100C35F 等,与键名相对应的键值为该面截面的基本属性信息,依次为:面截面编号、面截面类型 (壳、平面、轴对称实体) 、计算类型 (厚壳、薄壳、厚板、薄板、膜等)、面截面的厚度。
2.6 节点对象
def get_joint_objects(s2kdata, tables, sf=1.0):"""获取s2k文件内的节点对象相关信息,并将其存储到字典jointObjs中,返回值为结点对象信息字典jointObjs。:param s2kdata: s2k文件全部数据。:param tables: s2k文件表格信息字典。:param sf: 单位换算系数。"""jointObjs = {} # 框架截面属性字典table = 'TABLE: "JOINT COORDINATES"' # 表格名称row1, row2 = tables[table] # 确定有效数据行起始位置tabledata = s2kdata[row1 - 1:row2] # 表格有效数据行数据jointnum = 0 # 结点编号计数器......... num = len(jointObjs)s = "Joints Number: %s." % numprint(s)return jointObjs
- 示例
运行上述代码,可获取 GG-JB.s2k 文件内所定义的各节点对象信息,并将其存储在 jointObjs 字典中,各节点坐标值的单位采用国际标准单位 m 。
字典 jointObjs 的键名为各节点对象的标签名称,如 2001902、2001903 等,与键名相对应的键值为该节点对象的基本信息,依次为: 结点编号、结点所采用的坐标系名称、坐标系类型 (笛卡尔、柱坐标、球坐标) 、全局坐标值 x 、全局坐标值 y 、全局坐标值 z 。
2.7 框架对象
def get_frame_objects(s2kdata, tables):"""获取s2k文件内的框架对象相关信息,并将其存储到字典frameObjs中,返回值为框架对象信息字典frameObjs。:param s2kdata: s2k文件全部数据。:param tables: s2k文件表格信息字典。"""frameObjs = {} # 框架截面属性字典table = 'TABLE: "CONNECTIVITY - FRAME"' # 表格名称row1, row2 = tables[table] # 确定有效数据行起始位置tabledata = s2kdata[row1 - 1:row2] # 表格有效数据行数据framenum = 0 # 框架编号计数器......... s = "Frames Number: %s." % framenumprint(s)return frameObjs
- 示例
运行上述代码,可获取 GG-JB.s2k 文件内所定义的各框架对象信息,并将其存储在 frameObjs 字典中,框架对象信息的相关单位采用国际标准单位,即 N-m-kg 。
字典 frameObjs 的键名为各框架对象的标签名称,如 3000092、3000093 等,与键名相对应的键值为该框架对象的基本信息,依次为: 框架编号 (始于1/ANSYS)、框架起点标签、框架终点标签、框架所采用的截面名称、局部轴转角。
2.8 面对象
def get_area_objects(s2kdata, tables):"""获取s2k文件内的面对象相关信息,并将其存储到字典areaObjs中,返回值为面对象信息字典areaObjs。:param s2kdata: s2k文件全部数据。:param tables: s2k文件表格信息字典。"""areaObjs = {} # 框架截面属性字典table = 'TABLE: "CONNECTIVITY - AREA"' # 表格名称row1, row2 = tables[table] # 确定有效数据行起始位置tabledata = s2kdata[row1 - 1:row2] # 表格有效数据行数据areanum = 0 # 面对象编号计数器for line in tabledata:line = line.strip() # 去掉尾部换行符号line = re.split(r" +", line) # 2个及以上空格分割字符joint_labels, secname = [], "Null" # 组成面对象的节点标签、面对象所采用的截面名称label = re.split(r"=+", line[0])[-1] # 至少一个等号分割字符/获得面对象标签match = re.match("NumJoints", line[1]) # 匹配面对象包含的节点个数......... return areaObjs
- 示例
运行上述代码,可获取 GG-JB.s2k 文件内所定义的各面对象信息,并将其存储在 areaObjs 字典中,面对象信息的相关单位采用国际标准单位,即 N-m-kg 。
字典 areaObjs 的键名为各面对象的标签名称,如 12000123、12000129 等,与键名相对应的键值为该框架对象的基本信息,依次为: 面的编号 (始于1/ANSYS)、面对象所包含的节点个数、各点标签、面对象所采用的截面名称。
2.9 框架均布荷载
在 SAP2000 中,对于框架填充墙或者设备荷载的处理,一般将其自重转化为线荷载指定给梁。
框架均布荷载的指定
def get_frame_loads(s2kdata, tables, sf):"""获取s2k文件内的框架对象荷载信息,并将其存储到字典frameLoads中,返回值为框架荷载信息字典frameLoads。:param s2kdata: s2k文件全部数据。:param tables: s2k文件表格信息字典。:param sf: 单位换算系数。"""frameLoads = {} # 框架对象荷载信息字典table = 'TABLE: "FRAME LOADS - DISTRIBUTED"' # 表格名称row1, row2 = tables[table] # 确定有效数据行起始位置tabledata = s2kdata[row1 - 1:row2] # 表格有效数据行数据loadnum = 0 # 荷载编号计数器for line in tabledata:......... s = "Frame Loads Number: %s." % loadnumprint(s)return frameLoads
- 示例
运行上述代码,可获取 GG-JB.s2k 文件内所定义的作用在框架对象上的均布荷载信息,并将其存储在 frameLoads 字典中,荷载信息的相关单位采用国际标准单位,即 N-m-kg 。
字典 frameLoads 的键名为框架均布荷载编号 (始于1/ANSYS),如 1、2 等,与键名相对应的键值为作用在该框架上的均布荷载信息,依次为: 框架标签、荷载模式 (恒活、活荷等)、采用的坐标系、荷载类型 (力/力矩)、荷载作用方向、作用在框架上的均布荷载数值。
因为作用在框架上的荷载不止一种,方向也不止一个,因此,很难用框架标签作为框架均布荷载字典的键名,来对作用在框架上的均布荷载进行区分。另外,由此段代码得到的是作用在框架对象全跨上的均布荷载,全跨梯形分布荷载自动进行换算,分段梯形分布荷载自动被过滤掉,不在考虑范围内。
2.10 面均布荷载
在 SAP2000 中,面对象的分布荷载主要有两种施加方式: 面均布荷载和面荷载均匀导荷到框架。后者自动将均匀面荷载转化为等效线荷载作用于面周边的框架单元,从而实现面对象的自动导荷。
面对象均布荷载的指定
def get_area_loads(s2kdata, tables, sf):"""获取s2k文件内的面对象荷载信息,并将其存储到字典areaLoads中,返回值为面荷载信息字典areaLoads。:param s2kdata: s2k文件全部数据。:param tables: s2k文件表格信息字典。:param sf: 单位换算系数。"""areaLoads = {} # 框架对象荷载信息字典table1 = 'TABLE: "AREA LOADS - UNIFORM"' # 表格名称table2 = 'TABLE: "AREA LOADS - UNIFORM TO FRAME"' # 表格名称row1, row2 = tables[table1] # 确定有效数据行起始位置tabledata1 = s2kdata[row1 - 1:row2] # 表格有效数据行数据row1, row2 = tables[table2] # 确定有效数据行起始位置tabledata2 = s2kdata[row1 - 1:row2] # 表格有效数据行数据tabledata = tabledata1 + tabledata2 # 两个表格数据合并loadnum = 0 # 荷载编号计数器......... s = "Area Loads Number: %s." % loadnumprint(s)return areaLoads
2.11 边界条件
2.10 数据的精加工
2.11 创建csv文件
三、创建CAD图形
四、创建Abaqus模型
五、创建ANSYS模型
六、尾声
七、参考文献
Python 读取/处理 s2k/$2k 文本文件相关推荐
- python分割压缩_Python读取分割压缩TXT文本文件实例
废话不多说,上代码看吧! ''' 为了避免截断中文字符 文件要求是 unicode 编码 txt文件另存为对话框下面有下拉框,可选存 储编码格式 ''' import os import struct ...
- python 打开当前目录的txt文件-Python - 读取其他文件夹/目录中的文本文件
这是我的情况:我有一些.txt文件在我可以运行脚本的不同目录中.Python - 读取其他文件夹/目录中的文本文件 mainDir/ -face/ -57268-face-_tracker.txt - ...
- python读取文本文件的三种方法
参考链接 python读取文本文件的内容,有三种方法. read().readline().readlines() read() read()是最简单的一种方法,一次性读取文件的所有内容放在一个大字符 ...
- Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案)
Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案) 参考文章: (1)Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案) (2)https://ww ...
- python 读取文本文件_如何在Python中读取大文本文件
python 读取文本文件 Python File object provides various ways to read a text file. The popular way is to us ...
- python读取 .trs 格式等特殊文本文件
python读取 .trs 格式等特殊文本文件 1.前言 .trs文件是拓尔思bai(trs)公司异构文本检索的类似"du脚本"的文件,带有数据库的简单描述内容. trs格式文件在 ...
- python读取浮点数和读取文本文件
这篇文章主要介绍了python读取浮点数和读取文本文件示例,需要的朋友可以参考下 从文本文件中读入浮点数据,是最常见的任务之一,python没有scanf这样的输入函数,但我们可以利用正规表达式从读入 ...
- python 读取txt文件、转为json文件_使用python操作json文本文件
使用python读写文本文件内容时,我们知道如果文本文件里的内容无规律,那么修改起来比较麻烦.但是如果文本文件存储是有规律的,比如JSON格式,在利用python内置的函数把JSON格式的数据转成py ...
- 技术图文:C# VS. Python 读取CSV文件指南
背景 CSV 是一种以逗号进行特征分隔的文本文件类型,在数据库或电子表格中是一种非常常见的导入导出格式.本篇图文就以泰坦尼克号船员获救预测( Kaggle)中使用的数据集为例来说明 C#.Python ...
- python读数据-如何用Python读取开放数据?
当你开始接触丰富多彩的开放数据集时,CSV.JSON和XML等格式名词就会奔涌而来.如何用Python高效地读取它们,为后续的整理和分析做准备呢?本文为你一步步展示过程,你自己也可以动手实践. 需求 ...
最新文章
- vFORUM十大“最”看点,带你“撩”会议
- java 访问路径_java获取项目访问路径的相关方法
- scp传输文件的命令
- python手册中文版-Python中文文档
- java学习笔记day14—HTML
- 问题记录-Access数据库运行查询语句需要输入参数
- 深入理解kafka 电子版
- android USB OTG功能如何打开及实现
- 保研面试/考研复试英语口语常见问题整理
- 机动车号牌查询, 在线查询, api 查询
- 哪款分体式蓝牙耳机最好用?分体式蓝牙耳机推荐!
- 微信内置浏览器不支持打开网页或下载APP怎么办,微信跳转浏览器原理
- 邓白氏编码申请最后提交资料格式
- java模拟HTTP请求(集合了网上搜来的各种)
- XILINX 7series/ultrascale IDDR/ODDR使用区别
- 攻防世界_江苏工匠杯_MISC_看雪看雪看雪
- 民事诉讼和刑事诉讼法知识点整理(1)
- 瞬间几千次的重复提交,我用 SpringBoot+Redis 扛住了
- Android studio 打开monitor 出现error提示 的解决办法 特别是使用了JDK-9
- 和首席架构师吃了一顿米线,被吓住了!
热门文章
- Adobe Dreamweaver CS6已停止工作的解决办法
- VOC数据集简介与制作
- Ubuntu 视频 转 GIF
- 搜索算法相关性评价指标
- element ui响应式布局笔记,适配笔记
- ipa在线安装搭建_iphone直接安装ipa文件怎么做?
- standard fifo和fwft fifo的区别
- 巴菲特致股东的信pdf_巴菲特历年股东大会股东信问答实录集合(共7份)
- SqlServer毫秒/秒转时分秒
- 新西兰梅西大学计算机专业研究生,新西兰梅西大学硕士读几年,新西兰专升硕 | 能进八大,还有机会移民,最快1.5年完成!...