qtmodel 1.1.9__tar.gz → 2.1.1__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.
Files changed (45) hide show
  1. {qtmodel-1.1.9 → qtmodel-2.1.1}/PKG-INFO +98 -78
  2. {qtmodel-1.1.9 → qtmodel-2.1.1}/README.md +96 -76
  3. qtmodel-2.1.1/qtmodel/core/__init__.py +1 -0
  4. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/core/data_helper.py +8 -6
  5. qtmodel-2.1.1/qtmodel/core/qt_server.py +47 -0
  6. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/core/result_db.py +102 -0
  7. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/__init__.py +1 -0
  8. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_analysis_setting.py +63 -100
  9. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_assistant.py +2 -2
  10. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_boundary.py +97 -118
  11. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_construction_stage.py +41 -46
  12. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_dynamic_load.py +95 -124
  13. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_live_load.py +21 -23
  14. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_load.py +36 -51
  15. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_project.py +50 -85
  16. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_property.py +95 -109
  17. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_section.py +81 -90
  18. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_sink_load.py +33 -48
  19. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_static_load.py +108 -141
  20. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_structure.py +117 -145
  21. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_temperature_load.py +67 -122
  22. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/mdb/mdb_tendon.py +68 -68
  23. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/odb/odb_model_boundary.py +10 -10
  24. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/odb/odb_model_load.py +12 -12
  25. qtmodel-2.1.1/qtmodel/odb/odb_model_material.py +30 -0
  26. qtmodel-2.1.1/qtmodel/odb/odb_model_section.py +112 -0
  27. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/odb/odb_model_stage.py +5 -5
  28. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/odb/odb_model_structure.py +42 -14
  29. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/odb/odb_result_data.py +63 -17
  30. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/odb/odb_result_plot.py +12 -12
  31. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/odb/odb_view.py +12 -12
  32. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel.egg-info/PKG-INFO +98 -78
  33. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel.egg-info/SOURCES.txt +2 -1
  34. {qtmodel-1.1.9 → qtmodel-2.1.1}/setup.py +2 -2
  35. qtmodel-2.1.1/test/test_model.py +4 -0
  36. qtmodel-1.1.9/qtmodel/core/__init__.py +0 -3
  37. qtmodel-1.1.9/qtmodel/core/qt_server.py +0 -85
  38. qtmodel-1.1.9/qtmodel/odb/odb_model_material.py +0 -109
  39. qtmodel-1.1.9/qtmodel/odb/odb_model_section.py +0 -81
  40. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/__init__.py +0 -0
  41. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/core/model_db.py +0 -0
  42. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel/odb/__init__.py +0 -0
  43. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel.egg-info/dependency_links.txt +0 -0
  44. {qtmodel-1.1.9 → qtmodel-2.1.1}/qtmodel.egg-info/top_level.txt +0 -0
  45. {qtmodel-1.1.9 → qtmodel-2.1.1}/setup.cfg +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qtmodel
3
- Version: 1.1.9
4
- Summary: python modeling for qt 2025-09-30
3
+ Version: 2.1.1
4
+ Summary: python modeling for qt 2025-11-11
5
5
  Home-page: https://github.com/Inface0443/pyqt
6
6
  Author: dqy-zhj
7
7
  Author-email: 1105417715@qq.com
@@ -17,9 +17,10 @@ Dynamic: description-content-type
17
17
  Dynamic: home-page
18
18
  Dynamic: summary
19
19
 
20
- > 最新版本 V1.1.9 - 2025-09-30
20
+ > 最新qtmodel版本 V2.1.1 - 2025-11-10
21
+ > 最新qdat数据版本 V1.2.4
21
22
  > pip install --upgrade qtmodel -i https://pypi.org/simple
22
- - 新增更新结构组接口
23
+ - 升级qdat版本,此版本支持定义钢束旋转偏心
23
24
  # 建模操作
24
25
  ## 节点操作
25
26
  ### add_nodes
@@ -582,9 +583,9 @@ mdb.remove_thickness(name="板厚1")
582
583
  > sec_type:参数截面类型名称(详见UI界面)
583
584
  > sec_info:截面信息 (必要参数)
584
585
  > symmetry:混凝土截面是否对称 (仅混凝土箱梁截面需要)
585
- > charm_info:混凝土截面倒角信息 (仅混凝土箱梁截面需要)
586
+ > chamfer_info:混凝土截面倒角信息 (仅混凝土箱梁截面需要)
586
587
  > sec_right:混凝土截面右半信息 (对称时可忽略,仅混凝土箱梁截面需要)
587
- > charm_right:混凝土截面右半倒角信息 (对称时可忽略,仅混凝土箱梁截面需要)
588
+ > chamfer_right:混凝土截面右半倒角信息 (对称时可忽略,仅混凝土箱梁截面需要)
588
589
  > box_num: 混凝土箱室数 (仅混凝土箱梁截面需要)
589
590
  > box_height: 混凝土箱梁梁高 (仅混凝土箱梁截面需要)
590
591
  > box_other_info: 混凝土箱梁额外信息(键包括"i1" "B0" "B4" "T4" 值为列表)
@@ -596,7 +597,7 @@ mdb.remove_thickness(name="板厚1")
596
597
  > _布置具体部位(箱型钢梁) 1-上左 2-上中 3-上右 4-左腹板 5-右腹板 6-下左 7-下中 8-下右
597
598
  > loop_segments:线圈坐标集合 list[dict] dict示例:{"main":[(x1,y1),(x2,y2)...],"sub1":[(x1,y1),(x2,y2)...],"sub2":[(x1,y1),(x2,y2)...]}
598
599
  > sec_lines:线宽集合[(x1,y1,x2,y3,thick),]
599
- > secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments)
600
+ > secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments),建议以左下角为组合截面原点建立截面
600
601
  > sec_property:截面特性(参考UI界面共计29个参数),可选参数,指定截面特性时不进行截面计算
601
602
  > bias_type:偏心类型 默认中心
602
603
  > center_type:中心类型 默认质心
@@ -609,7 +610,7 @@ from qtmodel import *
609
610
  mdb.add_section(name="截面1",sec_type="矩形",sec_info=[2,4],bias_type="中心")
610
611
  mdb.add_section(name="截面2",sec_type="混凝土箱梁",box_height=2,box_num=3,
611
612
  sec_info=[0.2,0.4,0.1,0.13,3,1,2,1,0.02,0,12,5,6,0.28,0.3,0.5,0.5,0.5,0.2],
612
- charm_info=["1*0.2,0.1*0.2","0.5*0.15,0.3*0.2","0.4*0.2","0.5*0.2"])
613
+ chamfer_info=["1*0.2,0.1*0.2","0.5*0.15,0.3*0.2","0.4*0.2","0.5*0.2"])
613
614
  mdb.add_section(name="钢梁截面1",sec_type="工字钢梁",sec_info=[0,0,0.5,0.5,0.5,0.5,0.7,0.02,0.02,0.02])
614
615
  mdb.add_section(name="钢梁截面2",sec_type="箱型钢梁",sec_info=[0,0.15,0.25,0.5,0.25,0.15,0.4,0.15,0.7,0.02,0.02,0.02,0.02],
615
616
  rib_info = {"板肋1": [0.1,0.02],"T形肋1":[0.1,0.02,0.02,0.02]},
@@ -1163,6 +1164,7 @@ steel_detail=[0.00014,0.10,0.25,0.0015],loos_detail=(1,1,1))
1163
1164
  > point_insert: 定位方式 (直线时为插入点坐标[x,y,z] 轨迹线时[插入端(1-I 2-J),插入方向(1-ij 2-ji),插入单元id])
1164
1165
  > tendon_direction:直线钢束X方向向量 默认为x轴即[1,0,0] (轨迹线不用赋值)
1165
1166
  > rotation_angle:绕钢束旋转角度
1167
+ > rotate_bias:绕钢束旋转偏心X、Y
1166
1168
  > track_group:轨迹线结构组名 (直线时不用赋值)
1167
1169
  > projection:直线钢束投影 (默认为true)
1168
1170
  ```Python
@@ -1189,6 +1191,7 @@ control_points=[(0,0,-1,0),(10,0,-1,0)],point_insert=(1,1,1),track_group="轨迹
1189
1191
  > point_insert: 定位方式 (直线时为插入点坐标[x,y,z] 轨迹线时[插入端(1-I 2-J),插入方向(1-ij 2-ji),插入单元id])
1190
1192
  > tendon_direction:直线钢束X方向向量 默认为x轴即[1,0,0] (轨迹线不用赋值)
1191
1193
  > rotation_angle:绕钢束旋转角度
1194
+ > rotate_bias:绕钢束旋转偏心X、Y
1192
1195
  > track_group:轨迹线结构组名 (直线时不用赋值)
1193
1196
  > projection:直线钢束投影 (默认为true)
1194
1197
  ```Python
@@ -1271,7 +1274,7 @@ control_points=[(0,-1,0),(10,-1,0)],point_insert=(1,1,1),track_group="轨迹线
1271
1274
  #Returns: 无
1272
1275
  ```
1273
1276
  ### update_element_component_type
1274
- todo 赋予单元构件类型
1277
+ 赋予单元构件类型
1275
1278
  > 参数:
1276
1279
  > ids: 钢束构件所在单元编号集合且支持XtoYbyN形式字符串
1277
1280
  > component_type:0-钢结构构件 1-钢筋混凝土构件 2-预应力混凝土构件
@@ -1282,7 +1285,7 @@ mdb.update_element_component_type(ids=[1,2,3,4],component_type=2)
1282
1285
  #Returns: 无
1283
1286
  ```
1284
1287
  ### update_tendon_group
1285
- todo 更新钢束组名
1288
+ 更新钢束组名
1286
1289
  > 参数:
1287
1290
  > name:原钢束组名
1288
1291
  > new_name:新钢束组名
@@ -1293,7 +1296,7 @@ mdb.update_tendon_group("钢束组1","钢束组2")
1293
1296
  #Returns: 无
1294
1297
  ```
1295
1298
  ### remove_tendon
1296
- todo 按照名称或编号删除钢束,默认时删除所有钢束
1299
+ 按照名称或编号删除钢束,默认时删除所有钢束
1297
1300
  > 参数:
1298
1301
  > name:钢束名称
1299
1302
  > index:钢束编号
@@ -1306,7 +1309,7 @@ mdb.remove_tendon()
1306
1309
  #Returns: 无
1307
1310
  ```
1308
1311
  ### remove_tendon_property
1309
- todo 按照名称或编号删除钢束组,默认时删除所有钢束组
1312
+ 按照名称或编号删除钢束组,默认时删除所有钢束组
1310
1313
  > 参数:
1311
1314
  > name:钢束组名称
1312
1315
  > index:钢束组编号
@@ -1319,7 +1322,7 @@ mdb.remove_tendon_property()
1319
1322
  #Returns: 无
1320
1323
  ```
1321
1324
  ### remove_pre_stress
1322
- todo 删除预应力
1325
+ 删除预应力
1323
1326
  > 参数:
1324
1327
  > tendon_name:钢束组,默认则删除所有预应力荷载
1325
1328
  ```Python
@@ -1330,7 +1333,7 @@ mdb.remove_pre_stress()
1330
1333
  #Returns: 无
1331
1334
  ```
1332
1335
  ### remove_tendon_group
1333
- todo 按照钢束组名称或钢束组编号删除钢束组,两参数均为默认时删除所有钢束组
1336
+ 按照钢束组名称或钢束组编号删除钢束组,两参数均为默认时删除所有钢束组
1334
1337
  > 参数:
1335
1338
  > name:钢束组名称,默认自动识别 (可选参数)
1336
1339
  ```Python
@@ -2302,8 +2305,8 @@ from qtmodel import *
2302
2305
  mdb.add_spectrum_case(name="反应谱工况",info_x=("函数1",1.0))
2303
2306
  #Returns: 无
2304
2307
  ```
2305
- # print(s)
2306
- QtServer.post_command(s, "QDAT")
2308
+ ### update_spectrum_function
2309
+ todo 更新反应谱函数
2307
2310
  > 参数:
2308
2311
  > name: 函数名称
2309
2312
  > new_name: 新函数名称
@@ -2625,7 +2628,7 @@ mdb.update_weight_stage(name="施工阶段1",structure_group_name="默认结构
2625
2628
  #Returns: 无
2626
2629
  ```
2627
2630
  ### update_construction_stage
2628
- todo 更新施工阶段信息
2631
+ 更新施工阶段信息
2629
2632
  > 参数:
2630
2633
  > name:施工阶段信息
2631
2634
  > new_name:新施工阶段名
@@ -2921,57 +2924,6 @@ mdb.update_bulking_setting(do_analysis=True,mode_count=3,variable_cases=["工况
2921
2924
  ```
2922
2925
  # 视图与结果提取
2923
2926
  ## 获取材料
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
2927
  ### get_material_data
2976
2928
  获取材料信息
2977
2929
  > 参数:
@@ -2987,16 +2939,7 @@ odb.get_material_data() # 获取所有材料信息
2987
2939
  ```Python
2988
2940
  # 示例代码
2989
2941
  from qtmodel import *
2990
- odb.get_thickness_data(1)
2991
- #Returns:
2992
- ```
2993
- ### get_all_thickness_data
2994
- 获取所有板厚信息
2995
- > 参数:
2996
- ```Python
2997
- # 示例代码
2998
- from qtmodel import *
2999
- odb.get_all_thickness_data()
2942
+ odb.get_thickness_data()
3000
2943
  #Returns: 包含信息为list[dict]
3001
2944
  ```
3002
2945
  ## 获取节点信息
@@ -3128,6 +3071,27 @@ from qtmodel import *
3128
3071
  odb.get_group_elements(group_name="默认结构组")
3129
3072
  #Returns: list[int]
3130
3073
  ```
3074
+ ## 跨度信息
3075
+ ### get_span_supports
3076
+ 获取跨度信息的支承节点号
3077
+ > 参数:
3078
+ > span_info_name: 跨度信息名
3079
+ ```Python
3080
+ # 示例代码
3081
+ from qtmodel import *
3082
+ odb.get_span_supports(span_info_name="跨度")
3083
+ #Returns: list[int]
3084
+ ```
3085
+ ### get_span_elements
3086
+ 获取跨度信息的支承节点号
3087
+ > 参数:
3088
+ > span_info_name: 跨度信息名
3089
+ ```Python
3090
+ # 示例代码
3091
+ from qtmodel import *
3092
+ odb.get_span_elements(span_info_name="跨度")
3093
+ #Returns: list[int]
3094
+ ```
3131
3095
  ## 获取截面信息
3132
3096
  ### get_all_section_shape
3133
3097
  获取所有截面形状信息
@@ -3161,6 +3125,7 @@ odb.get_all_section_data()
3161
3125
  获取截面详细信息,截面特性详见UI自定义特性截面
3162
3126
  > 参数:
3163
3127
  > sec_id: 目标截面编号
3128
+ > position: 目标截面为变截面时0-首端 1-末端
3164
3129
  ```Python
3165
3130
  # 示例代码
3166
3131
  from qtmodel import *
@@ -3186,6 +3151,31 @@ from qtmodel import *
3186
3151
  odb.get_section_ids()
3187
3152
  #Returns: list[int]
3188
3153
  ```
3154
+ ### get_section_property_by_loops
3155
+ 通过多组线圈获取截面特性
3156
+ > 参数:
3157
+ ```Python
3158
+ # 示例代码
3159
+ from qtmodel import *
3160
+ 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]],
3161
+ "sub1": [[6.35, 0.5], [2.55, 0.5], [2.55, 1.0], [2.55, 2.0], [6.35, 2.0]],
3162
+ "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]],
3163
+ "sub3": [[12.15, 0.5], [15.95, 0.5], [15.95, 1.0], [15.95, 2.0], [12.15, 2.0]]}
3164
+ odb.get_section_property_by_loops([dict_item1])
3165
+ #Returns: dict
3166
+ ```
3167
+ ### get_section_property_by_lines
3168
+ 通过线宽数据获取截面特性
3169
+ > 参数:
3170
+ ```Python
3171
+ # 示例代码
3172
+ from qtmodel import *
3173
+ sec_lines = [[0.0, 2.284, 5.51093, 2.284, 0.016], [0.152479, 2.284, 0.200597, 2.04341, 0.008],
3174
+ [0.200597, 2.04341, 0.201664, 2.0389, 0.008], [0.201664, 2.0389, 0.203149, 2.03451, 0.008],
3175
+ [0.203149, 2.03451, 0.205006, 2.03026, 0.008]]
3176
+ odb.get_section_property_by_lines(sec_lines)
3177
+ #Returns: dict
3178
+ ```
3189
3179
  ## 获取模型边界信息
3190
3180
  ### get_boundary_group_names
3191
3181
  获取自边界组名称
@@ -3613,6 +3603,36 @@ from qtmodel import *
3613
3603
  odb.get_buckling_modal_results(mode=1)
3614
3604
  #Returns: 返回json字符串,list[dict]包含该模态下屈曲模态向量列表
3615
3605
  ```
3606
+ ### get_tendon_loss_results
3607
+ 获取预应力钢束损失
3608
+ > 参数:
3609
+ > name: 钢束名称
3610
+ > stage_id: 阶段编号,默认 1
3611
+ ```Python
3612
+ # 示例代码
3613
+ from qtmodel import *
3614
+ odb.get_tendon_loss_results(name="T1", stage_id=2)
3615
+ #Returns:
3616
+ ```
3617
+ ### get_tendon_position_result
3618
+ 获取预应力钢束坐标
3619
+ > 参数:
3620
+ > name: 钢束名称
3621
+ ```Python
3622
+ # 示例代码
3623
+ from qtmodel import *
3624
+ odb.get_tendon_position_result(name="T1")
3625
+ #Returns:
3626
+ ```
3627
+ ### get_tendon_length_result
3628
+ 获取预应力伸长量
3629
+ > 参数:
3630
+ ```Python
3631
+ # 示例代码
3632
+ from qtmodel import *
3633
+ odb.get_tendon_length_result()
3634
+ #Returns:
3635
+ ```
3616
3636
  ## 绘制模型结果
3617
3637
  ### plot_reaction_result
3618
3638
  保存结果图片到指定文件甲
@@ -1,6 +1,7 @@
1
- > 最新版本 V1.1.9 - 2025-09-30
1
+ > 最新qtmodel版本 V2.1.1 - 2025-11-10
2
+ > 最新qdat数据版本 V1.2.4
2
3
  > pip install --upgrade qtmodel -i https://pypi.org/simple
3
- - 新增更新结构组接口
4
+ - 升级qdat版本,此版本支持定义钢束旋转偏心
4
5
  # 建模操作
5
6
  ## 节点操作
6
7
  ### add_nodes
@@ -563,9 +564,9 @@ mdb.remove_thickness(name="板厚1")
563
564
  > sec_type:参数截面类型名称(详见UI界面)
564
565
  > sec_info:截面信息 (必要参数)
565
566
  > symmetry:混凝土截面是否对称 (仅混凝土箱梁截面需要)
566
- > charm_info:混凝土截面倒角信息 (仅混凝土箱梁截面需要)
567
+ > chamfer_info:混凝土截面倒角信息 (仅混凝土箱梁截面需要)
567
568
  > sec_right:混凝土截面右半信息 (对称时可忽略,仅混凝土箱梁截面需要)
568
- > charm_right:混凝土截面右半倒角信息 (对称时可忽略,仅混凝土箱梁截面需要)
569
+ > chamfer_right:混凝土截面右半倒角信息 (对称时可忽略,仅混凝土箱梁截面需要)
569
570
  > box_num: 混凝土箱室数 (仅混凝土箱梁截面需要)
570
571
  > box_height: 混凝土箱梁梁高 (仅混凝土箱梁截面需要)
571
572
  > box_other_info: 混凝土箱梁额外信息(键包括"i1" "B0" "B4" "T4" 值为列表)
@@ -577,7 +578,7 @@ mdb.remove_thickness(name="板厚1")
577
578
  > _布置具体部位(箱型钢梁) 1-上左 2-上中 3-上右 4-左腹板 5-右腹板 6-下左 7-下中 8-下右
578
579
  > loop_segments:线圈坐标集合 list[dict] dict示例:{"main":[(x1,y1),(x2,y2)...],"sub1":[(x1,y1),(x2,y2)...],"sub2":[(x1,y1),(x2,y2)...]}
579
580
  > sec_lines:线宽集合[(x1,y1,x2,y3,thick),]
580
- > secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments)
581
+ > secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments),建议以左下角为组合截面原点建立截面
581
582
  > sec_property:截面特性(参考UI界面共计29个参数),可选参数,指定截面特性时不进行截面计算
582
583
  > bias_type:偏心类型 默认中心
583
584
  > center_type:中心类型 默认质心
@@ -590,7 +591,7 @@ from qtmodel import *
590
591
  mdb.add_section(name="截面1",sec_type="矩形",sec_info=[2,4],bias_type="中心")
591
592
  mdb.add_section(name="截面2",sec_type="混凝土箱梁",box_height=2,box_num=3,
592
593
  sec_info=[0.2,0.4,0.1,0.13,3,1,2,1,0.02,0,12,5,6,0.28,0.3,0.5,0.5,0.5,0.2],
593
- charm_info=["1*0.2,0.1*0.2","0.5*0.15,0.3*0.2","0.4*0.2","0.5*0.2"])
594
+ chamfer_info=["1*0.2,0.1*0.2","0.5*0.15,0.3*0.2","0.4*0.2","0.5*0.2"])
594
595
  mdb.add_section(name="钢梁截面1",sec_type="工字钢梁",sec_info=[0,0,0.5,0.5,0.5,0.5,0.7,0.02,0.02,0.02])
595
596
  mdb.add_section(name="钢梁截面2",sec_type="箱型钢梁",sec_info=[0,0.15,0.25,0.5,0.25,0.15,0.4,0.15,0.7,0.02,0.02,0.02,0.02],
596
597
  rib_info = {"板肋1": [0.1,0.02],"T形肋1":[0.1,0.02,0.02,0.02]},
@@ -1144,6 +1145,7 @@ steel_detail=[0.00014,0.10,0.25,0.0015],loos_detail=(1,1,1))
1144
1145
  > point_insert: 定位方式 (直线时为插入点坐标[x,y,z] 轨迹线时[插入端(1-I 2-J),插入方向(1-ij 2-ji),插入单元id])
1145
1146
  > tendon_direction:直线钢束X方向向量 默认为x轴即[1,0,0] (轨迹线不用赋值)
1146
1147
  > rotation_angle:绕钢束旋转角度
1148
+ > rotate_bias:绕钢束旋转偏心X、Y
1147
1149
  > track_group:轨迹线结构组名 (直线时不用赋值)
1148
1150
  > projection:直线钢束投影 (默认为true)
1149
1151
  ```Python
@@ -1170,6 +1172,7 @@ control_points=[(0,0,-1,0),(10,0,-1,0)],point_insert=(1,1,1),track_group="轨迹
1170
1172
  > point_insert: 定位方式 (直线时为插入点坐标[x,y,z] 轨迹线时[插入端(1-I 2-J),插入方向(1-ij 2-ji),插入单元id])
1171
1173
  > tendon_direction:直线钢束X方向向量 默认为x轴即[1,0,0] (轨迹线不用赋值)
1172
1174
  > rotation_angle:绕钢束旋转角度
1175
+ > rotate_bias:绕钢束旋转偏心X、Y
1173
1176
  > track_group:轨迹线结构组名 (直线时不用赋值)
1174
1177
  > projection:直线钢束投影 (默认为true)
1175
1178
  ```Python
@@ -1252,7 +1255,7 @@ control_points=[(0,-1,0),(10,-1,0)],point_insert=(1,1,1),track_group="轨迹线
1252
1255
  #Returns: 无
1253
1256
  ```
1254
1257
  ### update_element_component_type
1255
- todo 赋予单元构件类型
1258
+ 赋予单元构件类型
1256
1259
  > 参数:
1257
1260
  > ids: 钢束构件所在单元编号集合且支持XtoYbyN形式字符串
1258
1261
  > component_type:0-钢结构构件 1-钢筋混凝土构件 2-预应力混凝土构件
@@ -1263,7 +1266,7 @@ mdb.update_element_component_type(ids=[1,2,3,4],component_type=2)
1263
1266
  #Returns: 无
1264
1267
  ```
1265
1268
  ### update_tendon_group
1266
- todo 更新钢束组名
1269
+ 更新钢束组名
1267
1270
  > 参数:
1268
1271
  > name:原钢束组名
1269
1272
  > new_name:新钢束组名
@@ -1274,7 +1277,7 @@ mdb.update_tendon_group("钢束组1","钢束组2")
1274
1277
  #Returns: 无
1275
1278
  ```
1276
1279
  ### remove_tendon
1277
- todo 按照名称或编号删除钢束,默认时删除所有钢束
1280
+ 按照名称或编号删除钢束,默认时删除所有钢束
1278
1281
  > 参数:
1279
1282
  > name:钢束名称
1280
1283
  > index:钢束编号
@@ -1287,7 +1290,7 @@ mdb.remove_tendon()
1287
1290
  #Returns: 无
1288
1291
  ```
1289
1292
  ### remove_tendon_property
1290
- todo 按照名称或编号删除钢束组,默认时删除所有钢束组
1293
+ 按照名称或编号删除钢束组,默认时删除所有钢束组
1291
1294
  > 参数:
1292
1295
  > name:钢束组名称
1293
1296
  > index:钢束组编号
@@ -1300,7 +1303,7 @@ mdb.remove_tendon_property()
1300
1303
  #Returns: 无
1301
1304
  ```
1302
1305
  ### remove_pre_stress
1303
- todo 删除预应力
1306
+ 删除预应力
1304
1307
  > 参数:
1305
1308
  > tendon_name:钢束组,默认则删除所有预应力荷载
1306
1309
  ```Python
@@ -1311,7 +1314,7 @@ mdb.remove_pre_stress()
1311
1314
  #Returns: 无
1312
1315
  ```
1313
1316
  ### remove_tendon_group
1314
- todo 按照钢束组名称或钢束组编号删除钢束组,两参数均为默认时删除所有钢束组
1317
+ 按照钢束组名称或钢束组编号删除钢束组,两参数均为默认时删除所有钢束组
1315
1318
  > 参数:
1316
1319
  > name:钢束组名称,默认自动识别 (可选参数)
1317
1320
  ```Python
@@ -2283,8 +2286,8 @@ from qtmodel import *
2283
2286
  mdb.add_spectrum_case(name="反应谱工况",info_x=("函数1",1.0))
2284
2287
  #Returns: 无
2285
2288
  ```
2286
- # print(s)
2287
- QtServer.post_command(s, "QDAT")
2289
+ ### update_spectrum_function
2290
+ todo 更新反应谱函数
2288
2291
  > 参数:
2289
2292
  > name: 函数名称
2290
2293
  > new_name: 新函数名称
@@ -2606,7 +2609,7 @@ mdb.update_weight_stage(name="施工阶段1",structure_group_name="默认结构
2606
2609
  #Returns: 无
2607
2610
  ```
2608
2611
  ### update_construction_stage
2609
- todo 更新施工阶段信息
2612
+ 更新施工阶段信息
2610
2613
  > 参数:
2611
2614
  > name:施工阶段信息
2612
2615
  > new_name:新施工阶段名
@@ -2902,57 +2905,6 @@ mdb.update_bulking_setting(do_analysis=True,mode_count=3,variable_cases=["工况
2902
2905
  ```
2903
2906
  # 视图与结果提取
2904
2907
  ## 获取材料
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
2908
  ### get_material_data
2957
2909
  获取材料信息
2958
2910
  > 参数:
@@ -2968,16 +2920,7 @@ odb.get_material_data() # 获取所有材料信息
2968
2920
  ```Python
2969
2921
  # 示例代码
2970
2922
  from qtmodel import *
2971
- odb.get_thickness_data(1)
2972
- #Returns:
2973
- ```
2974
- ### get_all_thickness_data
2975
- 获取所有板厚信息
2976
- > 参数:
2977
- ```Python
2978
- # 示例代码
2979
- from qtmodel import *
2980
- odb.get_all_thickness_data()
2923
+ odb.get_thickness_data()
2981
2924
  #Returns: 包含信息为list[dict]
2982
2925
  ```
2983
2926
  ## 获取节点信息
@@ -3109,6 +3052,27 @@ from qtmodel import *
3109
3052
  odb.get_group_elements(group_name="默认结构组")
3110
3053
  #Returns: list[int]
3111
3054
  ```
3055
+ ## 跨度信息
3056
+ ### get_span_supports
3057
+ 获取跨度信息的支承节点号
3058
+ > 参数:
3059
+ > span_info_name: 跨度信息名
3060
+ ```Python
3061
+ # 示例代码
3062
+ from qtmodel import *
3063
+ odb.get_span_supports(span_info_name="跨度")
3064
+ #Returns: list[int]
3065
+ ```
3066
+ ### get_span_elements
3067
+ 获取跨度信息的支承节点号
3068
+ > 参数:
3069
+ > span_info_name: 跨度信息名
3070
+ ```Python
3071
+ # 示例代码
3072
+ from qtmodel import *
3073
+ odb.get_span_elements(span_info_name="跨度")
3074
+ #Returns: list[int]
3075
+ ```
3112
3076
  ## 获取截面信息
3113
3077
  ### get_all_section_shape
3114
3078
  获取所有截面形状信息
@@ -3142,6 +3106,7 @@ odb.get_all_section_data()
3142
3106
  获取截面详细信息,截面特性详见UI自定义特性截面
3143
3107
  > 参数:
3144
3108
  > sec_id: 目标截面编号
3109
+ > position: 目标截面为变截面时0-首端 1-末端
3145
3110
  ```Python
3146
3111
  # 示例代码
3147
3112
  from qtmodel import *
@@ -3167,6 +3132,31 @@ from qtmodel import *
3167
3132
  odb.get_section_ids()
3168
3133
  #Returns: list[int]
3169
3134
  ```
3135
+ ### get_section_property_by_loops
3136
+ 通过多组线圈获取截面特性
3137
+ > 参数:
3138
+ ```Python
3139
+ # 示例代码
3140
+ from qtmodel import *
3141
+ 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]],
3142
+ "sub1": [[6.35, 0.5], [2.55, 0.5], [2.55, 1.0], [2.55, 2.0], [6.35, 2.0]],
3143
+ "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]],
3144
+ "sub3": [[12.15, 0.5], [15.95, 0.5], [15.95, 1.0], [15.95, 2.0], [12.15, 2.0]]}
3145
+ odb.get_section_property_by_loops([dict_item1])
3146
+ #Returns: dict
3147
+ ```
3148
+ ### get_section_property_by_lines
3149
+ 通过线宽数据获取截面特性
3150
+ > 参数:
3151
+ ```Python
3152
+ # 示例代码
3153
+ from qtmodel import *
3154
+ sec_lines = [[0.0, 2.284, 5.51093, 2.284, 0.016], [0.152479, 2.284, 0.200597, 2.04341, 0.008],
3155
+ [0.200597, 2.04341, 0.201664, 2.0389, 0.008], [0.201664, 2.0389, 0.203149, 2.03451, 0.008],
3156
+ [0.203149, 2.03451, 0.205006, 2.03026, 0.008]]
3157
+ odb.get_section_property_by_lines(sec_lines)
3158
+ #Returns: dict
3159
+ ```
3170
3160
  ## 获取模型边界信息
3171
3161
  ### get_boundary_group_names
3172
3162
  获取自边界组名称
@@ -3594,6 +3584,36 @@ from qtmodel import *
3594
3584
  odb.get_buckling_modal_results(mode=1)
3595
3585
  #Returns: 返回json字符串,list[dict]包含该模态下屈曲模态向量列表
3596
3586
  ```
3587
+ ### get_tendon_loss_results
3588
+ 获取预应力钢束损失
3589
+ > 参数:
3590
+ > name: 钢束名称
3591
+ > stage_id: 阶段编号,默认 1
3592
+ ```Python
3593
+ # 示例代码
3594
+ from qtmodel import *
3595
+ odb.get_tendon_loss_results(name="T1", stage_id=2)
3596
+ #Returns:
3597
+ ```
3598
+ ### get_tendon_position_result
3599
+ 获取预应力钢束坐标
3600
+ > 参数:
3601
+ > name: 钢束名称
3602
+ ```Python
3603
+ # 示例代码
3604
+ from qtmodel import *
3605
+ odb.get_tendon_position_result(name="T1")
3606
+ #Returns:
3607
+ ```
3608
+ ### get_tendon_length_result
3609
+ 获取预应力伸长量
3610
+ > 参数:
3611
+ ```Python
3612
+ # 示例代码
3613
+ from qtmodel import *
3614
+ odb.get_tendon_length_result()
3615
+ #Returns:
3616
+ ```
3597
3617
  ## 绘制模型结果
3598
3618
  ### plot_reaction_result
3599
3619
  保存结果图片到指定文件甲
@@ -0,0 +1 @@
1
+ __all__ = []
@@ -91,9 +91,9 @@ class QtDataHelper:
91
91
  sec_type=sec_type,
92
92
  sec_info=sec_data.get("sec_info", []),
93
93
  symmetry=sec_data.get("symmetry", True),
94
- charm_info=sec_data.get("charm_info", None),
94
+ chamfer_info=sec_data.get("charm_info", None),
95
95
  sec_right=sec_data.get("sec_right", None),
96
- charm_right=sec_data.get("charm_right", None),
96
+ chamfer_right=sec_data.get("charm_right", None),
97
97
  box_num=sec_data.get("box_num", 3),
98
98
  box_height=sec_data.get("box_height", 2),
99
99
  box_other_info=sec_data.get("box_other_info", None),
@@ -112,9 +112,9 @@ class QtDataHelper:
112
112
  sec_type: str = "矩形",
113
113
  sec_info: list[float] = None,
114
114
  symmetry: bool = True,
115
- charm_info: list[str] = None,
115
+ chamfer_info: list[str] = None,
116
116
  sec_right: list[float] = None,
117
- charm_right: list[str] = None,
117
+ chamfer_right: list[str] = None,
118
118
  box_num: int = 3,
119
119
  box_height: float = 2,
120
120
  box_other_info: dict[str, list[float]] = None,
@@ -127,13 +127,15 @@ class QtDataHelper:
127
127
  secondary_loop_segments: list[dict] = None):
128
128
  """仅返回字符串片段,需要拼接"""
129
129
  if sec_type == "混凝土箱梁":
130
- s = QtDataHelper.str_concrete_box_beam(symmetry, sec_info, box_num, box_height, charm_info, sec_right, charm_right, box_other_info,
130
+ s = QtDataHelper.str_concrete_box_beam(symmetry, sec_info, box_num, box_height, chamfer_info, sec_right, chamfer_right, box_other_info,
131
131
  box_other_right)
132
+ elif sec_type == "箱梁边腹板" or sec_type == "箱梁中腹板" :
133
+ s =",".join(f"{x:g}" for x in sec_info) + "\r\n" + ",".join(f"({s})" for s in chamfer_info)
132
134
  elif sec_type == "工字钢梁" or sec_type == "箱型钢梁":
133
135
  s = QtDataHelper.str_steel_beam(sec_info, rib_info, rib_place)
134
136
  elif sec_type == "特性截面":
135
137
  s = ",".join(f"{x:g}" for x in sec_info) + "\r\n"
136
- elif sec_type == "自定义组合梁":
138
+ elif sec_type.startswith("自定义组合"):
137
139
  s = QtDataHelper.str_custom_compound_beam(mat_combine, loop_segments, secondary_loop_segments)
138
140
  elif sec_type.endswith("组合梁") or sec_type in ("钢管砼", "钢箱砼", "哑铃型钢管混凝土", "哑铃型钢管混凝土竖向"):
139
141
  s = QtDataHelper.str_compound_section(sec_info, mat_combine)