qtmodel 1.1.10__tar.gz → 1.1.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of qtmodel might be problematic. Click here for more details.
- {qtmodel-1.1.10 → qtmodel-1.1.12}/PKG-INFO +38 -72
- {qtmodel-1.1.10 → qtmodel-1.1.12}/README.md +36 -70
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/core/data_helper.py +1 -1
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/__init__.py +1 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_analysis_setting.py +1 -1
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_construction_stage.py +8 -8
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_live_load.py +0 -1
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_load.py +12 -10
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_project.py +4 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_section.py +1 -1
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_temperature_load.py +14 -42
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_tendon.py +7 -7
- qtmodel-1.1.12/qtmodel/odb/odb_model_material.py +30 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/odb_model_section.py +33 -2
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel.egg-info/PKG-INFO +38 -72
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel.egg-info/SOURCES.txt +2 -1
- {qtmodel-1.1.10 → qtmodel-1.1.12}/setup.py +1 -1
- qtmodel-1.1.12/test/test_model.py +1698 -0
- qtmodel-1.1.10/qtmodel/odb/odb_model_material.py +0 -109
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/__init__.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/core/__init__.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/core/model_db.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/core/qt_server.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/core/result_db.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_assistant.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_boundary.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_dynamic_load.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_property.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_sink_load.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_static_load.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/mdb/mdb_structure.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/__init__.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/odb_model_boundary.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/odb_model_load.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/odb_model_stage.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/odb_model_structure.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/odb_result_data.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/odb_result_plot.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel/odb/odb_view.py +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel.egg-info/dependency_links.txt +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/qtmodel.egg-info/top_level.txt +0 -0
- {qtmodel-1.1.10 → qtmodel-1.1.12}/setup.cfg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qtmodel
|
|
3
|
-
Version: 1.1.
|
|
4
|
-
Summary: python modeling for qt 2025-
|
|
3
|
+
Version: 1.1.12
|
|
4
|
+
Summary: python modeling for qt 2025-10-30
|
|
5
5
|
Home-page: https://github.com/Inface0443/pyqt
|
|
6
6
|
Author: dqy-zhj
|
|
7
7
|
Author-email: 1105417715@qq.com
|
|
@@ -17,7 +17,7 @@ Dynamic: description-content-type
|
|
|
17
17
|
Dynamic: home-page
|
|
18
18
|
Dynamic: summary
|
|
19
19
|
|
|
20
|
-
> 最新版本 V1.1.
|
|
20
|
+
> 最新版本 V1.1.12 - 2025-10-30
|
|
21
21
|
> pip install --upgrade qtmodel -i https://pypi.org/simple
|
|
22
22
|
- 新增更新结构组接口
|
|
23
23
|
# 建模操作
|
|
@@ -596,7 +596,7 @@ mdb.remove_thickness(name="板厚1")
|
|
|
596
596
|
> _布置具体部位(箱型钢梁) 1-上左 2-上中 3-上右 4-左腹板 5-右腹板 6-下左 7-下中 8-下右
|
|
597
597
|
> loop_segments:线圈坐标集合 list[dict] dict示例:{"main":[(x1,y1),(x2,y2)...],"sub1":[(x1,y1),(x2,y2)...],"sub2":[(x1,y1),(x2,y2)...]}
|
|
598
598
|
> sec_lines:线宽集合[(x1,y1,x2,y3,thick),]
|
|
599
|
-
> secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments)
|
|
599
|
+
> secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments),建议以左下角为组合截面原点建立截面
|
|
600
600
|
> sec_property:截面特性(参考UI界面共计29个参数),可选参数,指定截面特性时不进行截面计算
|
|
601
601
|
> bias_type:偏心类型 默认中心
|
|
602
602
|
> center_type:中心类型 默认质心
|
|
@@ -1271,7 +1271,7 @@ control_points=[(0,-1,0),(10,-1,0)],point_insert=(1,1,1),track_group="轨迹线
|
|
|
1271
1271
|
#Returns: 无
|
|
1272
1272
|
```
|
|
1273
1273
|
### update_element_component_type
|
|
1274
|
-
|
|
1274
|
+
赋予单元构件类型
|
|
1275
1275
|
> 参数:
|
|
1276
1276
|
> ids: 钢束构件所在单元编号集合且支持XtoYbyN形式字符串
|
|
1277
1277
|
> component_type:0-钢结构构件 1-钢筋混凝土构件 2-预应力混凝土构件
|
|
@@ -1282,7 +1282,7 @@ mdb.update_element_component_type(ids=[1,2,3,4],component_type=2)
|
|
|
1282
1282
|
#Returns: 无
|
|
1283
1283
|
```
|
|
1284
1284
|
### update_tendon_group
|
|
1285
|
-
|
|
1285
|
+
更新钢束组名
|
|
1286
1286
|
> 参数:
|
|
1287
1287
|
> name:原钢束组名
|
|
1288
1288
|
> new_name:新钢束组名
|
|
@@ -1293,7 +1293,7 @@ mdb.update_tendon_group("钢束组1","钢束组2")
|
|
|
1293
1293
|
#Returns: 无
|
|
1294
1294
|
```
|
|
1295
1295
|
### remove_tendon
|
|
1296
|
-
|
|
1296
|
+
按照名称或编号删除钢束,默认时删除所有钢束
|
|
1297
1297
|
> 参数:
|
|
1298
1298
|
> name:钢束名称
|
|
1299
1299
|
> index:钢束编号
|
|
@@ -1306,7 +1306,7 @@ mdb.remove_tendon()
|
|
|
1306
1306
|
#Returns: 无
|
|
1307
1307
|
```
|
|
1308
1308
|
### remove_tendon_property
|
|
1309
|
-
|
|
1309
|
+
按照名称或编号删除钢束组,默认时删除所有钢束组
|
|
1310
1310
|
> 参数:
|
|
1311
1311
|
> name:钢束组名称
|
|
1312
1312
|
> index:钢束组编号
|
|
@@ -1319,7 +1319,7 @@ mdb.remove_tendon_property()
|
|
|
1319
1319
|
#Returns: 无
|
|
1320
1320
|
```
|
|
1321
1321
|
### remove_pre_stress
|
|
1322
|
-
|
|
1322
|
+
删除预应力
|
|
1323
1323
|
> 参数:
|
|
1324
1324
|
> tendon_name:钢束组,默认则删除所有预应力荷载
|
|
1325
1325
|
```Python
|
|
@@ -1330,7 +1330,7 @@ mdb.remove_pre_stress()
|
|
|
1330
1330
|
#Returns: 无
|
|
1331
1331
|
```
|
|
1332
1332
|
### remove_tendon_group
|
|
1333
|
-
|
|
1333
|
+
按照钢束组名称或钢束组编号删除钢束组,两参数均为默认时删除所有钢束组
|
|
1334
1334
|
> 参数:
|
|
1335
1335
|
> name:钢束组名称,默认自动识别 (可选参数)
|
|
1336
1336
|
```Python
|
|
@@ -2625,7 +2625,7 @@ mdb.update_weight_stage(name="施工阶段1",structure_group_name="默认结构
|
|
|
2625
2625
|
#Returns: 无
|
|
2626
2626
|
```
|
|
2627
2627
|
### update_construction_stage
|
|
2628
|
-
|
|
2628
|
+
更新施工阶段信息
|
|
2629
2629
|
> 参数:
|
|
2630
2630
|
> name:施工阶段信息
|
|
2631
2631
|
> new_name:新施工阶段名
|
|
@@ -2921,57 +2921,6 @@ mdb.update_bulking_setting(do_analysis=True,mode_count=3,variable_cases=["工况
|
|
|
2921
2921
|
```
|
|
2922
2922
|
# 视图与结果提取
|
|
2923
2923
|
## 获取材料
|
|
2924
|
-
### get_concrete_material
|
|
2925
|
-
获取混凝土材料信息
|
|
2926
|
-
> 参数:
|
|
2927
|
-
> ids: 材料号支持XtoYbyN形式字符串,默认时输出全部材料
|
|
2928
|
-
```Python
|
|
2929
|
-
# 示例代码
|
|
2930
|
-
from qtmodel import *
|
|
2931
|
-
odb.get_concrete_material() # 获取所有材料信息
|
|
2932
|
-
#Returns: list[dict]
|
|
2933
|
-
```
|
|
2934
|
-
### get_steel_plate_material
|
|
2935
|
-
获取钢材材料信息
|
|
2936
|
-
> 参数:
|
|
2937
|
-
> ids: 材料号支持XtoYbyN形式字符串,默认时输出全部材料
|
|
2938
|
-
```Python
|
|
2939
|
-
# 示例代码
|
|
2940
|
-
from qtmodel import *
|
|
2941
|
-
odb.get_steel_plate_material() # 获取所有钢材材料信息
|
|
2942
|
-
#Returns: list[dict]
|
|
2943
|
-
```
|
|
2944
|
-
### get_pre_stress_bar_material
|
|
2945
|
-
获取钢材材料信息
|
|
2946
|
-
> 参数:
|
|
2947
|
-
> ids: 材料号,默认时输出全部材料
|
|
2948
|
-
```Python
|
|
2949
|
-
# 示例代码
|
|
2950
|
-
from qtmodel import *
|
|
2951
|
-
odb.get_pre_stress_bar_material() # 获取所有预应力材料信息
|
|
2952
|
-
#Returns: list[dict]
|
|
2953
|
-
```
|
|
2954
|
-
### get_steel_bar_material
|
|
2955
|
-
获取钢筋材料信息
|
|
2956
|
-
> 参数:
|
|
2957
|
-
> ids: 材料号,默认None时输出全部材料
|
|
2958
|
-
```Python
|
|
2959
|
-
# 示例代码
|
|
2960
|
-
from qtmodel import *
|
|
2961
|
-
odb.get_steel_bar_material() # 获取所有钢筋材料信息
|
|
2962
|
-
#Returns: list[dict]
|
|
2963
|
-
```
|
|
2964
|
-
### get_user_define_material
|
|
2965
|
-
获取自定义材料信息
|
|
2966
|
-
> 参数:
|
|
2967
|
-
> ids: 材料号支持XtoYbyN形式字符串,默认None时输出全部材料
|
|
2968
|
-
```Python
|
|
2969
|
-
# 示例代码
|
|
2970
|
-
from qtmodel import *
|
|
2971
|
-
odb.get_user_define_material() # 获取所有自定义材料信息
|
|
2972
|
-
odb.get_user_define_material("1to10") # 获取所有自定义材料信息
|
|
2973
|
-
#Returns: list[dict]
|
|
2974
|
-
```
|
|
2975
2924
|
### get_material_data
|
|
2976
2925
|
获取材料信息
|
|
2977
2926
|
> 参数:
|
|
@@ -2987,16 +2936,7 @@ odb.get_material_data() # 获取所有材料信息
|
|
|
2987
2936
|
```Python
|
|
2988
2937
|
# 示例代码
|
|
2989
2938
|
from qtmodel import *
|
|
2990
|
-
odb.get_thickness_data(
|
|
2991
|
-
#Returns:
|
|
2992
|
-
```
|
|
2993
|
-
### get_all_thickness_data
|
|
2994
|
-
获取所有板厚信息
|
|
2995
|
-
> 参数:
|
|
2996
|
-
```Python
|
|
2997
|
-
# 示例代码
|
|
2998
|
-
from qtmodel import *
|
|
2999
|
-
odb.get_all_thickness_data()
|
|
2939
|
+
odb.get_thickness_data()
|
|
3000
2940
|
#Returns: 包含信息为list[dict]
|
|
3001
2941
|
```
|
|
3002
2942
|
## 获取节点信息
|
|
@@ -3161,6 +3101,7 @@ odb.get_all_section_data()
|
|
|
3161
3101
|
获取截面详细信息,截面特性详见UI自定义特性截面
|
|
3162
3102
|
> 参数:
|
|
3163
3103
|
> sec_id: 目标截面编号
|
|
3104
|
+
> position: 目标截面为变截面时0-首端 1-末端
|
|
3164
3105
|
```Python
|
|
3165
3106
|
# 示例代码
|
|
3166
3107
|
from qtmodel import *
|
|
@@ -3186,6 +3127,31 @@ from qtmodel import *
|
|
|
3186
3127
|
odb.get_section_ids()
|
|
3187
3128
|
#Returns: list[int]
|
|
3188
3129
|
```
|
|
3130
|
+
### get_section_property_by_loops
|
|
3131
|
+
通过多组线圈获取截面特性
|
|
3132
|
+
> 参数:
|
|
3133
|
+
```Python
|
|
3134
|
+
# 示例代码
|
|
3135
|
+
from qtmodel import *
|
|
3136
|
+
dict_item1 = {"main": [[9.25, 0.0], [18.4, 0.0], [18.5, 0.0], [18.5, 2.5], [9.25, 2.5], [0.0, 2.5], [0.0, 0.0], [0.1, 0.0]],
|
|
3137
|
+
"sub1": [[6.35, 0.5], [2.55, 0.5], [2.55, 1.0], [2.55, 2.0], [6.35, 2.0]],
|
|
3138
|
+
"sub2": [[9.25, 0.5], [11.55, 0.5], [11.55, 2.0], [9.25, 2.0], [6.95, 2.0], [6.95, 0.5]],
|
|
3139
|
+
"sub3": [[12.15, 0.5], [15.95, 0.5], [15.95, 1.0], [15.95, 2.0], [12.15, 2.0]]}
|
|
3140
|
+
odb.get_section_property_by_loops([dict_item1])
|
|
3141
|
+
#Returns: dict
|
|
3142
|
+
```
|
|
3143
|
+
### get_section_property_by_lines
|
|
3144
|
+
通过线宽数据获取截面特性
|
|
3145
|
+
> 参数:
|
|
3146
|
+
```Python
|
|
3147
|
+
# 示例代码
|
|
3148
|
+
from qtmodel import *
|
|
3149
|
+
sec_lines = [[0.0, 2.284, 5.51093, 2.284, 0.016], [0.152479, 2.284, 0.200597, 2.04341, 0.008],
|
|
3150
|
+
[0.200597, 2.04341, 0.201664, 2.0389, 0.008], [0.201664, 2.0389, 0.203149, 2.03451, 0.008],
|
|
3151
|
+
[0.203149, 2.03451, 0.205006, 2.03026, 0.008]]
|
|
3152
|
+
odb.get_section_property_by_lines(sec_lines)
|
|
3153
|
+
#Returns: dict
|
|
3154
|
+
```
|
|
3189
3155
|
## 获取模型边界信息
|
|
3190
3156
|
### get_boundary_group_names
|
|
3191
3157
|
获取自边界组名称
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
> 最新版本 V1.1.
|
|
1
|
+
> 最新版本 V1.1.12 - 2025-10-30
|
|
2
2
|
> pip install --upgrade qtmodel -i https://pypi.org/simple
|
|
3
3
|
- 新增更新结构组接口
|
|
4
4
|
# 建模操作
|
|
@@ -577,7 +577,7 @@ mdb.remove_thickness(name="板厚1")
|
|
|
577
577
|
> _布置具体部位(箱型钢梁) 1-上左 2-上中 3-上右 4-左腹板 5-右腹板 6-下左 7-下中 8-下右
|
|
578
578
|
> loop_segments:线圈坐标集合 list[dict] dict示例:{"main":[(x1,y1),(x2,y2)...],"sub1":[(x1,y1),(x2,y2)...],"sub2":[(x1,y1),(x2,y2)...]}
|
|
579
579
|
> sec_lines:线宽集合[(x1,y1,x2,y3,thick),]
|
|
580
|
-
> secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments)
|
|
580
|
+
> secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments),建议以左下角为组合截面原点建立截面
|
|
581
581
|
> sec_property:截面特性(参考UI界面共计29个参数),可选参数,指定截面特性时不进行截面计算
|
|
582
582
|
> bias_type:偏心类型 默认中心
|
|
583
583
|
> center_type:中心类型 默认质心
|
|
@@ -1252,7 +1252,7 @@ control_points=[(0,-1,0),(10,-1,0)],point_insert=(1,1,1),track_group="轨迹线
|
|
|
1252
1252
|
#Returns: 无
|
|
1253
1253
|
```
|
|
1254
1254
|
### update_element_component_type
|
|
1255
|
-
|
|
1255
|
+
赋予单元构件类型
|
|
1256
1256
|
> 参数:
|
|
1257
1257
|
> ids: 钢束构件所在单元编号集合且支持XtoYbyN形式字符串
|
|
1258
1258
|
> component_type:0-钢结构构件 1-钢筋混凝土构件 2-预应力混凝土构件
|
|
@@ -1263,7 +1263,7 @@ mdb.update_element_component_type(ids=[1,2,3,4],component_type=2)
|
|
|
1263
1263
|
#Returns: 无
|
|
1264
1264
|
```
|
|
1265
1265
|
### update_tendon_group
|
|
1266
|
-
|
|
1266
|
+
更新钢束组名
|
|
1267
1267
|
> 参数:
|
|
1268
1268
|
> name:原钢束组名
|
|
1269
1269
|
> new_name:新钢束组名
|
|
@@ -1274,7 +1274,7 @@ mdb.update_tendon_group("钢束组1","钢束组2")
|
|
|
1274
1274
|
#Returns: 无
|
|
1275
1275
|
```
|
|
1276
1276
|
### remove_tendon
|
|
1277
|
-
|
|
1277
|
+
按照名称或编号删除钢束,默认时删除所有钢束
|
|
1278
1278
|
> 参数:
|
|
1279
1279
|
> name:钢束名称
|
|
1280
1280
|
> index:钢束编号
|
|
@@ -1287,7 +1287,7 @@ mdb.remove_tendon()
|
|
|
1287
1287
|
#Returns: 无
|
|
1288
1288
|
```
|
|
1289
1289
|
### remove_tendon_property
|
|
1290
|
-
|
|
1290
|
+
按照名称或编号删除钢束组,默认时删除所有钢束组
|
|
1291
1291
|
> 参数:
|
|
1292
1292
|
> name:钢束组名称
|
|
1293
1293
|
> index:钢束组编号
|
|
@@ -1300,7 +1300,7 @@ mdb.remove_tendon_property()
|
|
|
1300
1300
|
#Returns: 无
|
|
1301
1301
|
```
|
|
1302
1302
|
### remove_pre_stress
|
|
1303
|
-
|
|
1303
|
+
删除预应力
|
|
1304
1304
|
> 参数:
|
|
1305
1305
|
> tendon_name:钢束组,默认则删除所有预应力荷载
|
|
1306
1306
|
```Python
|
|
@@ -1311,7 +1311,7 @@ mdb.remove_pre_stress()
|
|
|
1311
1311
|
#Returns: 无
|
|
1312
1312
|
```
|
|
1313
1313
|
### remove_tendon_group
|
|
1314
|
-
|
|
1314
|
+
按照钢束组名称或钢束组编号删除钢束组,两参数均为默认时删除所有钢束组
|
|
1315
1315
|
> 参数:
|
|
1316
1316
|
> name:钢束组名称,默认自动识别 (可选参数)
|
|
1317
1317
|
```Python
|
|
@@ -2606,7 +2606,7 @@ mdb.update_weight_stage(name="施工阶段1",structure_group_name="默认结构
|
|
|
2606
2606
|
#Returns: 无
|
|
2607
2607
|
```
|
|
2608
2608
|
### update_construction_stage
|
|
2609
|
-
|
|
2609
|
+
更新施工阶段信息
|
|
2610
2610
|
> 参数:
|
|
2611
2611
|
> name:施工阶段信息
|
|
2612
2612
|
> new_name:新施工阶段名
|
|
@@ -2902,57 +2902,6 @@ mdb.update_bulking_setting(do_analysis=True,mode_count=3,variable_cases=["工况
|
|
|
2902
2902
|
```
|
|
2903
2903
|
# 视图与结果提取
|
|
2904
2904
|
## 获取材料
|
|
2905
|
-
### get_concrete_material
|
|
2906
|
-
获取混凝土材料信息
|
|
2907
|
-
> 参数:
|
|
2908
|
-
> ids: 材料号支持XtoYbyN形式字符串,默认时输出全部材料
|
|
2909
|
-
```Python
|
|
2910
|
-
# 示例代码
|
|
2911
|
-
from qtmodel import *
|
|
2912
|
-
odb.get_concrete_material() # 获取所有材料信息
|
|
2913
|
-
#Returns: list[dict]
|
|
2914
|
-
```
|
|
2915
|
-
### get_steel_plate_material
|
|
2916
|
-
获取钢材材料信息
|
|
2917
|
-
> 参数:
|
|
2918
|
-
> ids: 材料号支持XtoYbyN形式字符串,默认时输出全部材料
|
|
2919
|
-
```Python
|
|
2920
|
-
# 示例代码
|
|
2921
|
-
from qtmodel import *
|
|
2922
|
-
odb.get_steel_plate_material() # 获取所有钢材材料信息
|
|
2923
|
-
#Returns: list[dict]
|
|
2924
|
-
```
|
|
2925
|
-
### get_pre_stress_bar_material
|
|
2926
|
-
获取钢材材料信息
|
|
2927
|
-
> 参数:
|
|
2928
|
-
> ids: 材料号,默认时输出全部材料
|
|
2929
|
-
```Python
|
|
2930
|
-
# 示例代码
|
|
2931
|
-
from qtmodel import *
|
|
2932
|
-
odb.get_pre_stress_bar_material() # 获取所有预应力材料信息
|
|
2933
|
-
#Returns: list[dict]
|
|
2934
|
-
```
|
|
2935
|
-
### get_steel_bar_material
|
|
2936
|
-
获取钢筋材料信息
|
|
2937
|
-
> 参数:
|
|
2938
|
-
> ids: 材料号,默认None时输出全部材料
|
|
2939
|
-
```Python
|
|
2940
|
-
# 示例代码
|
|
2941
|
-
from qtmodel import *
|
|
2942
|
-
odb.get_steel_bar_material() # 获取所有钢筋材料信息
|
|
2943
|
-
#Returns: list[dict]
|
|
2944
|
-
```
|
|
2945
|
-
### get_user_define_material
|
|
2946
|
-
获取自定义材料信息
|
|
2947
|
-
> 参数:
|
|
2948
|
-
> ids: 材料号支持XtoYbyN形式字符串,默认None时输出全部材料
|
|
2949
|
-
```Python
|
|
2950
|
-
# 示例代码
|
|
2951
|
-
from qtmodel import *
|
|
2952
|
-
odb.get_user_define_material() # 获取所有自定义材料信息
|
|
2953
|
-
odb.get_user_define_material("1to10") # 获取所有自定义材料信息
|
|
2954
|
-
#Returns: list[dict]
|
|
2955
|
-
```
|
|
2956
2905
|
### get_material_data
|
|
2957
2906
|
获取材料信息
|
|
2958
2907
|
> 参数:
|
|
@@ -2968,16 +2917,7 @@ odb.get_material_data() # 获取所有材料信息
|
|
|
2968
2917
|
```Python
|
|
2969
2918
|
# 示例代码
|
|
2970
2919
|
from qtmodel import *
|
|
2971
|
-
odb.get_thickness_data(
|
|
2972
|
-
#Returns:
|
|
2973
|
-
```
|
|
2974
|
-
### get_all_thickness_data
|
|
2975
|
-
获取所有板厚信息
|
|
2976
|
-
> 参数:
|
|
2977
|
-
```Python
|
|
2978
|
-
# 示例代码
|
|
2979
|
-
from qtmodel import *
|
|
2980
|
-
odb.get_all_thickness_data()
|
|
2920
|
+
odb.get_thickness_data()
|
|
2981
2921
|
#Returns: 包含信息为list[dict]
|
|
2982
2922
|
```
|
|
2983
2923
|
## 获取节点信息
|
|
@@ -3142,6 +3082,7 @@ odb.get_all_section_data()
|
|
|
3142
3082
|
获取截面详细信息,截面特性详见UI自定义特性截面
|
|
3143
3083
|
> 参数:
|
|
3144
3084
|
> sec_id: 目标截面编号
|
|
3085
|
+
> position: 目标截面为变截面时0-首端 1-末端
|
|
3145
3086
|
```Python
|
|
3146
3087
|
# 示例代码
|
|
3147
3088
|
from qtmodel import *
|
|
@@ -3167,6 +3108,31 @@ from qtmodel import *
|
|
|
3167
3108
|
odb.get_section_ids()
|
|
3168
3109
|
#Returns: list[int]
|
|
3169
3110
|
```
|
|
3111
|
+
### get_section_property_by_loops
|
|
3112
|
+
通过多组线圈获取截面特性
|
|
3113
|
+
> 参数:
|
|
3114
|
+
```Python
|
|
3115
|
+
# 示例代码
|
|
3116
|
+
from qtmodel import *
|
|
3117
|
+
dict_item1 = {"main": [[9.25, 0.0], [18.4, 0.0], [18.5, 0.0], [18.5, 2.5], [9.25, 2.5], [0.0, 2.5], [0.0, 0.0], [0.1, 0.0]],
|
|
3118
|
+
"sub1": [[6.35, 0.5], [2.55, 0.5], [2.55, 1.0], [2.55, 2.0], [6.35, 2.0]],
|
|
3119
|
+
"sub2": [[9.25, 0.5], [11.55, 0.5], [11.55, 2.0], [9.25, 2.0], [6.95, 2.0], [6.95, 0.5]],
|
|
3120
|
+
"sub3": [[12.15, 0.5], [15.95, 0.5], [15.95, 1.0], [15.95, 2.0], [12.15, 2.0]]}
|
|
3121
|
+
odb.get_section_property_by_loops([dict_item1])
|
|
3122
|
+
#Returns: dict
|
|
3123
|
+
```
|
|
3124
|
+
### get_section_property_by_lines
|
|
3125
|
+
通过线宽数据获取截面特性
|
|
3126
|
+
> 参数:
|
|
3127
|
+
```Python
|
|
3128
|
+
# 示例代码
|
|
3129
|
+
from qtmodel import *
|
|
3130
|
+
sec_lines = [[0.0, 2.284, 5.51093, 2.284, 0.016], [0.152479, 2.284, 0.200597, 2.04341, 0.008],
|
|
3131
|
+
[0.200597, 2.04341, 0.201664, 2.0389, 0.008], [0.201664, 2.0389, 0.203149, 2.03451, 0.008],
|
|
3132
|
+
[0.203149, 2.03451, 0.205006, 2.03026, 0.008]]
|
|
3133
|
+
odb.get_section_property_by_lines(sec_lines)
|
|
3134
|
+
#Returns: dict
|
|
3135
|
+
```
|
|
3170
3136
|
## 获取模型边界信息
|
|
3171
3137
|
### get_boundary_group_names
|
|
3172
3138
|
获取自边界组名称
|
|
@@ -133,7 +133,7 @@ class QtDataHelper:
|
|
|
133
133
|
s = QtDataHelper.str_steel_beam(sec_info, rib_info, rib_place)
|
|
134
134
|
elif sec_type == "特性截面":
|
|
135
135
|
s = ",".join(f"{x:g}" for x in sec_info) + "\r\n"
|
|
136
|
-
elif sec_type
|
|
136
|
+
elif sec_type.startswith("自定义组合"):
|
|
137
137
|
s = QtDataHelper.str_custom_compound_beam(mat_combine, loop_segments, secondary_loop_segments)
|
|
138
138
|
elif sec_type.endswith("组合梁") or sec_type in ("钢管砼", "钢箱砼", "哑铃型钢管混凝土", "哑铃型钢管混凝土竖向"):
|
|
139
139
|
s = QtDataHelper.str_compound_section(sec_info, mat_combine)
|
|
@@ -14,6 +14,7 @@ from .mdb_temperature_load import MdbTemperatureLoad
|
|
|
14
14
|
from .mdb_tendon import MdbTendon
|
|
15
15
|
from .mdb_load import MdbLoad
|
|
16
16
|
|
|
17
|
+
# version 1.1.11
|
|
17
18
|
|
|
18
19
|
class Mdb(MdbProject, MdbStructure,MdbProperty, MdbSection,
|
|
19
20
|
MdbBoundary, MdbDynamicLoad,MdbConstructionStage,
|
|
@@ -48,19 +48,19 @@ class MdbConstructionStage:
|
|
|
48
48
|
"""
|
|
49
49
|
s = "*STAGE\r\n"
|
|
50
50
|
s += f"ID={index},{name},{duration},{tendon_cancel_loss:g},{constraint_cancel_type}\r\n"
|
|
51
|
-
if active_structures is not None:
|
|
51
|
+
if active_structures is not None and len(active_structures) > 0:
|
|
52
52
|
s += f"AELEM={','.join(','.join(str(x) if not isinstance(x, (int, float)) else f'{x:g}' for x in row) for row in active_structures)}\r\n"
|
|
53
|
-
if delete_structures is not None:
|
|
53
|
+
if delete_structures is not None and len(delete_structures) > 0:
|
|
54
54
|
s += f"DELEM={','.join(map(str, delete_structures))}\r\n"
|
|
55
|
-
if active_boundaries is not None:
|
|
55
|
+
if active_boundaries is not None and len(active_boundaries) > 0:
|
|
56
56
|
s += f"ABNDR={','.join(','.join(map(str, row)) for row in active_boundaries)}\r\n"
|
|
57
|
-
if delete_boundaries is not None:
|
|
57
|
+
if delete_boundaries is not None and len(delete_boundaries) > 0:
|
|
58
58
|
s += f"DBNDR={','.join(map(str, delete_boundaries))}\r\n"
|
|
59
|
-
if active_loads is not None:
|
|
59
|
+
if active_loads is not None and len(active_loads) > 0:
|
|
60
60
|
s += f"ALOAD={','.join(','.join(map(str, row)) for row in active_loads)}\r\n"
|
|
61
|
-
if delete_loads is not None:
|
|
61
|
+
if delete_loads is not None and len(delete_loads) > 0:
|
|
62
62
|
s += f"DLOAD={','.join(','.join(map(str, row)) for row in delete_loads)}\r\n"
|
|
63
|
-
if temp_loads is not None:
|
|
63
|
+
if temp_loads is not None and len(temp_loads) > 0:
|
|
64
64
|
s += f"TEPLOAD={','.join(map(str, temp_loads))}\r\n"
|
|
65
65
|
QtServer.send_command(s, "QDAT")
|
|
66
66
|
|
|
@@ -101,7 +101,7 @@ class MdbConstructionStage:
|
|
|
101
101
|
tendon_cancel_loss: float = 0,
|
|
102
102
|
constraint_cancel_type: int = 2):
|
|
103
103
|
"""
|
|
104
|
-
|
|
104
|
+
更新施工阶段信息
|
|
105
105
|
Args:
|
|
106
106
|
name:施工阶段信息
|
|
107
107
|
new_name:新施工阶段名
|
|
@@ -201,7 +201,6 @@ class MdbLiveLoad:
|
|
|
201
201
|
else:
|
|
202
202
|
s += f"YES,{special_code}\r\n"
|
|
203
203
|
s += "\r\n".join((f"{veh_name},{coeff:g}," + ",".join(lanes)) for veh_name, coeff, lanes in sub_case)
|
|
204
|
-
# print(s)
|
|
205
204
|
QtServer.send_command(s, "QDAT")
|
|
206
205
|
except Exception as ex:
|
|
207
206
|
raise Exception(ex)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
|
+
|
|
3
|
+
from qtmodel.core.data_helper import QtDataHelper
|
|
2
4
|
from qtmodel.core.qt_server import QtServer
|
|
3
5
|
from typing import Union, List
|
|
4
6
|
|
|
@@ -42,7 +44,7 @@ class MdbLoad:
|
|
|
42
44
|
@staticmethod
|
|
43
45
|
def update_sink_group(name: str = "", new_name: str = "", sink: float = 0.1, node_ids: (Union[int, List[int]]) = None):
|
|
44
46
|
"""
|
|
45
|
-
|
|
47
|
+
更新沉降组
|
|
46
48
|
Args:
|
|
47
49
|
name: 沉降组名
|
|
48
50
|
new_name: 新沉降组名,默认不修改
|
|
@@ -56,14 +58,14 @@ class MdbLoad:
|
|
|
56
58
|
"name": name,
|
|
57
59
|
"new_name": new_name,
|
|
58
60
|
"sink": sink,
|
|
59
|
-
"node_ids": node_ids,
|
|
61
|
+
"node_ids": QtDataHelper.parse_ids_to_array(node_ids), # 传出参数一定为list[int]
|
|
60
62
|
}
|
|
61
63
|
return QtServer.send_dict("UPDATE-SINK-GROUP", payload)
|
|
62
64
|
|
|
63
65
|
@staticmethod
|
|
64
66
|
def update_load_case(name: str, new_name: str = "", case_type: str = "施工阶段荷载"):
|
|
65
67
|
"""
|
|
66
|
-
|
|
68
|
+
更新荷载工况
|
|
67
69
|
Args:
|
|
68
70
|
name:工况名
|
|
69
71
|
new_name:新工况名
|
|
@@ -82,26 +84,26 @@ class MdbLoad:
|
|
|
82
84
|
return QtServer.send_dict("UPDATE-LOAD-CASE", payload)
|
|
83
85
|
|
|
84
86
|
@staticmethod
|
|
85
|
-
def
|
|
87
|
+
def update_load_group_name(name: str, new_name: str = ""):
|
|
86
88
|
"""
|
|
87
|
-
|
|
89
|
+
根据荷载组名称更新荷载组
|
|
88
90
|
Args:
|
|
89
91
|
name: 荷载组名称
|
|
90
92
|
new_name: 荷载组名称
|
|
91
93
|
Example:
|
|
92
|
-
mdb.
|
|
94
|
+
mdb.update_load_group_name(name="荷载组1",new_name="荷载组2")
|
|
93
95
|
Returns: 无
|
|
94
96
|
"""
|
|
95
97
|
payload = {
|
|
96
98
|
"name": name,
|
|
97
99
|
"new_name": new_name,
|
|
98
100
|
}
|
|
99
|
-
return QtServer.send_dict("UPDATE-LOAD-GROUP", payload)
|
|
101
|
+
return QtServer.send_dict("UPDATE-LOAD-GROUP-NAME", payload)
|
|
100
102
|
|
|
101
103
|
@staticmethod
|
|
102
104
|
def remove_load_case(index: int = -1, name: str = ""):
|
|
103
105
|
"""
|
|
104
|
-
|
|
106
|
+
删除荷载工况,参数均为默认时删除全部荷载工况
|
|
105
107
|
Args:
|
|
106
108
|
index:荷载编号
|
|
107
109
|
name:荷载名
|
|
@@ -120,7 +122,7 @@ class MdbLoad:
|
|
|
120
122
|
@staticmethod
|
|
121
123
|
def remove_load_group(name: str = ""):
|
|
122
124
|
"""
|
|
123
|
-
|
|
125
|
+
根据荷载组名称删除荷载组,参数为默认时删除所有荷载组
|
|
124
126
|
Args:
|
|
125
127
|
name: 荷载组名称
|
|
126
128
|
Example:
|
|
@@ -166,7 +168,7 @@ class MdbLoad:
|
|
|
166
168
|
@staticmethod
|
|
167
169
|
def remove_load_combine(index: int = -1, name: str = ""):
|
|
168
170
|
"""
|
|
169
|
-
|
|
171
|
+
删除荷载组合
|
|
170
172
|
Args:
|
|
171
173
|
index: 默认时则按照name删除荷载组合
|
|
172
174
|
name:指定删除荷载组合名
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import time
|
|
3
|
+
|
|
2
4
|
from qtmodel.core.qt_server import QtServer
|
|
3
5
|
from typing import List
|
|
4
6
|
|
|
@@ -95,6 +97,8 @@ class MdbProject:
|
|
|
95
97
|
Returns: 无
|
|
96
98
|
"""
|
|
97
99
|
QtServer.send_command(header="DO-SOLVE")
|
|
100
|
+
# 设置缓冲时间
|
|
101
|
+
time.sleep(3)
|
|
98
102
|
|
|
99
103
|
@staticmethod
|
|
100
104
|
def initial():
|
|
@@ -59,7 +59,7 @@ class MdbSection:
|
|
|
59
59
|
_布置具体部位(箱型钢梁) 1-上左 2-上中 3-上右 4-左腹板 5-右腹板 6-下左 7-下中 8-下右
|
|
60
60
|
loop_segments:线圈坐标集合 list[dict] dict示例:{"main":[(x1,y1),(x2,y2)...],"sub1":[(x1,y1),(x2,y2)...],"sub2":[(x1,y1),(x2,y2)...]}
|
|
61
61
|
sec_lines:线宽集合[(x1,y1,x2,y3,thick),]
|
|
62
|
-
secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments)
|
|
62
|
+
secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments),建议以左下角为组合截面原点建立截面
|
|
63
63
|
sec_property:截面特性(参考UI界面共计29个参数),可选参数,指定截面特性时不进行截面计算
|
|
64
64
|
bias_type:偏心类型 默认中心
|
|
65
65
|
center_type:中心类型 默认质心
|
|
@@ -24,12 +24,8 @@ class MdbTemperatureLoad:
|
|
|
24
24
|
mdb.add_custom_temperature(case_name="荷载工况1",element_id=1,orientation=1,temperature_data=[(1,1,20),(1,2,10)])
|
|
25
25
|
Returns: 无
|
|
26
26
|
"""
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
elif isinstance(element_id, list): # 列表转化为XtoYbyN
|
|
30
|
-
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
31
|
-
else:
|
|
32
|
-
id_str = str(element_id)
|
|
27
|
+
element_id = QtDataHelper.parse_ids_to_array(element_id)
|
|
28
|
+
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
33
29
|
s = "*USER-TEMP\r\n" + f"{id_str},{case_name},{group_name},{orientation},"
|
|
34
30
|
s += ",".join(f"({','.join(f'{x:g}' for x in data)})" for data in temperature_data) + "\r\n"
|
|
35
31
|
# print(s)
|
|
@@ -49,12 +45,8 @@ class MdbTemperatureLoad:
|
|
|
49
45
|
mdb.add_element_temperature(element_id=1,case_name="自重",temperature=1,group_name="默认荷载组")
|
|
50
46
|
Returns: 无
|
|
51
47
|
"""
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
elif isinstance(element_id, list): # 列表转化为XtoYbyN
|
|
55
|
-
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
56
|
-
else:
|
|
57
|
-
id_str = str(element_id)
|
|
48
|
+
element_id = QtDataHelper.parse_ids_to_array(element_id)
|
|
49
|
+
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
58
50
|
s = "*ELE-TEMP\r\n" + f"{id_str},{case_name},{group_name},{temperature:g}\r\n"
|
|
59
51
|
# print(s)
|
|
60
52
|
QtServer.send_command(s, "QDAT")
|
|
@@ -93,12 +85,8 @@ class MdbTemperatureLoad:
|
|
|
93
85
|
Returns: 无
|
|
94
86
|
"""
|
|
95
87
|
s = ""
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
elif isinstance(element_id, list): # 列表转化为XtoYbyN
|
|
99
|
-
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
100
|
-
else:
|
|
101
|
-
id_str = str(element_id)
|
|
88
|
+
element_id = QtDataHelper.parse_ids_to_array(element_id)
|
|
89
|
+
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
102
90
|
if element_type == 1: # 1-梁单元
|
|
103
91
|
s = "*BEAMGRD-TEMP\r\n" + f"{id_str},{case_name},{group_name},{section_oriental},{temperature:g}" + "\r\n"
|
|
104
92
|
elif element_type == 2: # 2-板单元
|
|
@@ -127,12 +115,8 @@ class MdbTemperatureLoad:
|
|
|
127
115
|
mdb.add_beam_section_temperature(element_id=1,case_name="工况1",code_index=1,sec_type=1,t1=-4.2,t2=-1)
|
|
128
116
|
Returns: 无
|
|
129
117
|
"""
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
elif isinstance(element_id, list): # 列表转化为XtoYbyN
|
|
133
|
-
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
134
|
-
else:
|
|
135
|
-
id_str = str(element_id)
|
|
118
|
+
element_id = QtDataHelper.parse_ids_to_array(element_id)
|
|
119
|
+
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
136
120
|
s = "*SEC-TEMP\r\n" + f"{id_str},{case_name},{group_name},{code_index},{sec_type},{t1:g},{t2:g},{t3:g},{t4:g},{thick:g}" + "\r\n"
|
|
137
121
|
# print(s)
|
|
138
122
|
QtServer.send_command(s, "QDAT")
|
|
@@ -152,12 +136,8 @@ class MdbTemperatureLoad:
|
|
|
152
136
|
mdb.add_index_temperature(element_id=1,case_name="工况1",temperature=20,index=2)
|
|
153
137
|
Returns: 无
|
|
154
138
|
"""
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
elif isinstance(element_id, list): # 列表转化为XtoYbyN
|
|
158
|
-
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
159
|
-
else:
|
|
160
|
-
id_str = str(element_id)
|
|
139
|
+
element_id = QtDataHelper.parse_ids_to_array(element_id)
|
|
140
|
+
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
161
141
|
tem_dir = 1 # 目前仅支持截面高度方向温度加载
|
|
162
142
|
s = "*INDEX-TEMP\r\n" + f"{id_str},{case_name},{group_name},{tem_dir},{temperature:g},{index:g}" + "\r\n"
|
|
163
143
|
# print(s)
|
|
@@ -177,12 +157,8 @@ class MdbTemperatureLoad:
|
|
|
177
157
|
mdb.add_top_plate_temperature(element_id=1,case_name="工况1",temperature=40,group_name="默认荷载组")
|
|
178
158
|
Returns: 无
|
|
179
159
|
"""
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
elif isinstance(element_id, list): # 列表转化为XtoYbyN
|
|
183
|
-
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
184
|
-
else:
|
|
185
|
-
id_str = str(element_id)
|
|
160
|
+
element_id = QtDataHelper.parse_ids_to_array(element_id)
|
|
161
|
+
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
186
162
|
s = "*TOPPLATE-TEMP\r\n" + f"{id_str},{case_name},{group_name},{temperature:g}" + "\r\n"
|
|
187
163
|
# print(s)
|
|
188
164
|
QtServer.send_command(s, "QDAT")
|
|
@@ -333,12 +309,8 @@ class MdbTemperatureLoad:
|
|
|
333
309
|
"""
|
|
334
310
|
if parameters is None:
|
|
335
311
|
raise Exception("操作错误,制造误差名称信息不能为空")
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
elif isinstance(element_id, list): # 列表转化为XtoYbyN
|
|
339
|
-
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
340
|
-
else:
|
|
341
|
-
id_str = str(element_id)
|
|
312
|
+
element_id = QtDataHelper.parse_ids_to_array(element_id)
|
|
313
|
+
id_str = QtDataHelper.parse_int_list_to_str(element_id)
|
|
342
314
|
s = "*DEVLOAD\r\n" + f"{id_str},{case_name},{group_name},"
|
|
343
315
|
if isinstance(parameters, str):
|
|
344
316
|
s += f"{parameters}\r\n"
|