qtmodel 0.8.1__tar.gz → 0.9.3__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-0.8.1 → qtmodel-0.9.3}/PKG-INFO +43 -8
- {qtmodel-0.8.1 → qtmodel-0.9.3}/README.md +42 -7
- {qtmodel-0.8.1 → qtmodel-0.9.3}/qtmodel/qt_db.py +35 -37
- {qtmodel-0.8.1 → qtmodel-0.9.3}/qtmodel/qt_mdb.py +53 -6
- {qtmodel-0.8.1 → qtmodel-0.9.3}/qtmodel/qt_odb.py +50 -25
- {qtmodel-0.8.1 → qtmodel-0.9.3}/qtmodel.egg-info/PKG-INFO +43 -8
- {qtmodel-0.8.1 → qtmodel-0.9.3}/setup.py +1 -1
- {qtmodel-0.8.1 → qtmodel-0.9.3}/qtmodel/__init__.py +0 -0
- {qtmodel-0.8.1 → qtmodel-0.9.3}/qtmodel.egg-info/SOURCES.txt +0 -0
- {qtmodel-0.8.1 → qtmodel-0.9.3}/qtmodel.egg-info/dependency_links.txt +0 -0
- {qtmodel-0.8.1 → qtmodel-0.9.3}/qtmodel.egg-info/top_level.txt +0 -0
- {qtmodel-0.8.1 → qtmodel-0.9.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: qtmodel
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.3
|
|
4
4
|
Summary: python modeling for qt 2025-06-30
|
|
5
5
|
Home-page: https://github.com/Inface0443/pyqt
|
|
6
6
|
Author: dqy-zhj
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Classifier: Operating System :: OS Independent
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
|
|
15
|
-
> 最新版本 V0.
|
|
15
|
+
> 最新版本 V0.9.3 - 2025-06-30
|
|
16
16
|
> pip install --upgrade qtmodel -i https://pypi.org/simple
|
|
17
17
|
- 新增更新结构组接口
|
|
18
18
|
# 建模操作
|
|
@@ -1742,6 +1742,31 @@ mdb.remove_live_load_case(index=1)
|
|
|
1742
1742
|
```
|
|
1743
1743
|
Returns: 无
|
|
1744
1744
|
## 动力荷载操作
|
|
1745
|
+
### add_vehicle_dynamic_load
|
|
1746
|
+
添加列车动力荷载
|
|
1747
|
+
> 参数:
|
|
1748
|
+
> node_ids: 节点纵列节点编号集合,支持XtoYbyN形式字符串
|
|
1749
|
+
> function_name: 函数名
|
|
1750
|
+
> case_name: 工况名
|
|
1751
|
+
> kind: 类型 1-ZK型车辆 2-动车组
|
|
1752
|
+
> speed_kmh: 列车速度(km/h)
|
|
1753
|
+
> braking: 是否考虑制动
|
|
1754
|
+
> braking_a: 制动加速度(m/s²)
|
|
1755
|
+
> braking_d: 制动时车头位置(m)
|
|
1756
|
+
> time: 上桥时间(s)
|
|
1757
|
+
> direction: 荷载方向 1-X 2-Y 3-Z 4-负X 5-负Y 6-负Z
|
|
1758
|
+
> gap: 加载间距(m)
|
|
1759
|
+
> factor: 放大系数
|
|
1760
|
+
> vehicle_info_kn: 车辆参数,参数为空时则选取界面默认值,注意单位输入单位为KN
|
|
1761
|
+
> ZK型车辆: [dW1,dW2,P1,P2,P3,P4,dD1,dD2,D1,D2,D3,LoadLength]
|
|
1762
|
+
> 动力组: [L1,L2,L3,P,N]
|
|
1763
|
+
```Python
|
|
1764
|
+
# 示例代码
|
|
1765
|
+
from qtmodel import *
|
|
1766
|
+
mdb.add_vehicle_dynamic_load("1to100",function_name="时程函数名",case_name="时程工况名",kind=1,speed_kmh=120,time=10)
|
|
1767
|
+
mdb.add_vehicle_dynamic_load([1,2,3,4,5,6,7],function_name="时程函数名",case_name="时程工况名",kind=1,speed_kmh=120,time=10)
|
|
1768
|
+
```
|
|
1769
|
+
Returns:无
|
|
1745
1770
|
### add_load_to_mass
|
|
1746
1771
|
添加荷载转为质量
|
|
1747
1772
|
> 参数:
|
|
@@ -4012,11 +4037,11 @@ Returns: 包含信息为list[dict] or dict
|
|
|
4012
4037
|
### get_element_type
|
|
4013
4038
|
获取单元类型
|
|
4014
4039
|
> 参数:
|
|
4015
|
-
>
|
|
4040
|
+
> element_id: 单元号
|
|
4016
4041
|
```Python
|
|
4017
4042
|
# 示例代码
|
|
4018
4043
|
from qtmodel import *
|
|
4019
|
-
odb.get_element_type(
|
|
4044
|
+
odb.get_element_type(element_id=1) # 获取1号单元类型
|
|
4020
4045
|
```
|
|
4021
4046
|
Returns: str
|
|
4022
4047
|
### get_beam_element
|
|
@@ -4148,7 +4173,7 @@ Returns: 包含信息为list[dict]
|
|
|
4148
4173
|
from qtmodel import *
|
|
4149
4174
|
odb.get_elastic_link_data()
|
|
4150
4175
|
```
|
|
4151
|
-
Returns: 包含信息为list[dict]
|
|
4176
|
+
Returns: 包含信息为list[dict]
|
|
4152
4177
|
### get_elastic_support_data
|
|
4153
4178
|
获取弹性支承信息
|
|
4154
4179
|
> 参数:
|
|
@@ -4158,7 +4183,7 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4158
4183
|
from qtmodel import *
|
|
4159
4184
|
odb.get_elastic_support_data()
|
|
4160
4185
|
```
|
|
4161
|
-
Returns: 包含信息为list[dict]
|
|
4186
|
+
Returns: 包含信息为list[dict]
|
|
4162
4187
|
### get_master_slave_link_data
|
|
4163
4188
|
获取主从连接信息
|
|
4164
4189
|
> 参数:
|
|
@@ -4168,7 +4193,7 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4168
4193
|
from qtmodel import *
|
|
4169
4194
|
odb.get_master_slave_link_data()
|
|
4170
4195
|
```
|
|
4171
|
-
Returns: 包含信息为list[dict]
|
|
4196
|
+
Returns: 包含信息为list[dict]
|
|
4172
4197
|
### get_node_local_axis_data
|
|
4173
4198
|
获取节点坐标信息
|
|
4174
4199
|
> 参数:
|
|
@@ -4197,7 +4222,17 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4197
4222
|
from qtmodel import *
|
|
4198
4223
|
odb.get_constraint_equation_data()
|
|
4199
4224
|
```
|
|
4200
|
-
Returns: 包含信息为list[dict]
|
|
4225
|
+
Returns: 包含信息为list[dict]
|
|
4226
|
+
### get_effective_width
|
|
4227
|
+
获取有效宽度数据
|
|
4228
|
+
> 参数:
|
|
4229
|
+
> group_name:边界组
|
|
4230
|
+
```Python
|
|
4231
|
+
# 示例代码
|
|
4232
|
+
from qtmodel import *
|
|
4233
|
+
odb.get_effective_width(group_name="边界组1")
|
|
4234
|
+
```
|
|
4235
|
+
Returns: list[dict]
|
|
4201
4236
|
## 获取施工阶段信息
|
|
4202
4237
|
### get_stage_name
|
|
4203
4238
|
获取所有施工阶段名称
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
> 最新版本 V0.
|
|
1
|
+
> 最新版本 V0.9.3 - 2025-06-30
|
|
2
2
|
> pip install --upgrade qtmodel -i https://pypi.org/simple
|
|
3
3
|
- 新增更新结构组接口
|
|
4
4
|
# 建模操作
|
|
@@ -1728,6 +1728,31 @@ mdb.remove_live_load_case(index=1)
|
|
|
1728
1728
|
```
|
|
1729
1729
|
Returns: 无
|
|
1730
1730
|
## 动力荷载操作
|
|
1731
|
+
### add_vehicle_dynamic_load
|
|
1732
|
+
添加列车动力荷载
|
|
1733
|
+
> 参数:
|
|
1734
|
+
> node_ids: 节点纵列节点编号集合,支持XtoYbyN形式字符串
|
|
1735
|
+
> function_name: 函数名
|
|
1736
|
+
> case_name: 工况名
|
|
1737
|
+
> kind: 类型 1-ZK型车辆 2-动车组
|
|
1738
|
+
> speed_kmh: 列车速度(km/h)
|
|
1739
|
+
> braking: 是否考虑制动
|
|
1740
|
+
> braking_a: 制动加速度(m/s²)
|
|
1741
|
+
> braking_d: 制动时车头位置(m)
|
|
1742
|
+
> time: 上桥时间(s)
|
|
1743
|
+
> direction: 荷载方向 1-X 2-Y 3-Z 4-负X 5-负Y 6-负Z
|
|
1744
|
+
> gap: 加载间距(m)
|
|
1745
|
+
> factor: 放大系数
|
|
1746
|
+
> vehicle_info_kn: 车辆参数,参数为空时则选取界面默认值,注意单位输入单位为KN
|
|
1747
|
+
> ZK型车辆: [dW1,dW2,P1,P2,P3,P4,dD1,dD2,D1,D2,D3,LoadLength]
|
|
1748
|
+
> 动力组: [L1,L2,L3,P,N]
|
|
1749
|
+
```Python
|
|
1750
|
+
# 示例代码
|
|
1751
|
+
from qtmodel import *
|
|
1752
|
+
mdb.add_vehicle_dynamic_load("1to100",function_name="时程函数名",case_name="时程工况名",kind=1,speed_kmh=120,time=10)
|
|
1753
|
+
mdb.add_vehicle_dynamic_load([1,2,3,4,5,6,7],function_name="时程函数名",case_name="时程工况名",kind=1,speed_kmh=120,time=10)
|
|
1754
|
+
```
|
|
1755
|
+
Returns:无
|
|
1731
1756
|
### add_load_to_mass
|
|
1732
1757
|
添加荷载转为质量
|
|
1733
1758
|
> 参数:
|
|
@@ -3998,11 +4023,11 @@ Returns: 包含信息为list[dict] or dict
|
|
|
3998
4023
|
### get_element_type
|
|
3999
4024
|
获取单元类型
|
|
4000
4025
|
> 参数:
|
|
4001
|
-
>
|
|
4026
|
+
> element_id: 单元号
|
|
4002
4027
|
```Python
|
|
4003
4028
|
# 示例代码
|
|
4004
4029
|
from qtmodel import *
|
|
4005
|
-
odb.get_element_type(
|
|
4030
|
+
odb.get_element_type(element_id=1) # 获取1号单元类型
|
|
4006
4031
|
```
|
|
4007
4032
|
Returns: str
|
|
4008
4033
|
### get_beam_element
|
|
@@ -4134,7 +4159,7 @@ Returns: 包含信息为list[dict]
|
|
|
4134
4159
|
from qtmodel import *
|
|
4135
4160
|
odb.get_elastic_link_data()
|
|
4136
4161
|
```
|
|
4137
|
-
Returns: 包含信息为list[dict]
|
|
4162
|
+
Returns: 包含信息为list[dict]
|
|
4138
4163
|
### get_elastic_support_data
|
|
4139
4164
|
获取弹性支承信息
|
|
4140
4165
|
> 参数:
|
|
@@ -4144,7 +4169,7 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4144
4169
|
from qtmodel import *
|
|
4145
4170
|
odb.get_elastic_support_data()
|
|
4146
4171
|
```
|
|
4147
|
-
Returns: 包含信息为list[dict]
|
|
4172
|
+
Returns: 包含信息为list[dict]
|
|
4148
4173
|
### get_master_slave_link_data
|
|
4149
4174
|
获取主从连接信息
|
|
4150
4175
|
> 参数:
|
|
@@ -4154,7 +4179,7 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4154
4179
|
from qtmodel import *
|
|
4155
4180
|
odb.get_master_slave_link_data()
|
|
4156
4181
|
```
|
|
4157
|
-
Returns: 包含信息为list[dict]
|
|
4182
|
+
Returns: 包含信息为list[dict]
|
|
4158
4183
|
### get_node_local_axis_data
|
|
4159
4184
|
获取节点坐标信息
|
|
4160
4185
|
> 参数:
|
|
@@ -4183,7 +4208,17 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4183
4208
|
from qtmodel import *
|
|
4184
4209
|
odb.get_constraint_equation_data()
|
|
4185
4210
|
```
|
|
4186
|
-
Returns: 包含信息为list[dict]
|
|
4211
|
+
Returns: 包含信息为list[dict]
|
|
4212
|
+
### get_effective_width
|
|
4213
|
+
获取有效宽度数据
|
|
4214
|
+
> 参数:
|
|
4215
|
+
> group_name:边界组
|
|
4216
|
+
```Python
|
|
4217
|
+
# 示例代码
|
|
4218
|
+
from qtmodel import *
|
|
4219
|
+
odb.get_effective_width(group_name="边界组1")
|
|
4220
|
+
```
|
|
4221
|
+
Returns: list[dict]
|
|
4187
4222
|
## 获取施工阶段信息
|
|
4188
4223
|
### get_stage_name
|
|
4189
4224
|
获取所有施工阶段名称
|
|
@@ -1,43 +1,6 @@
|
|
|
1
1
|
import math
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
class DataHelper:
|
|
5
|
-
@staticmethod
|
|
6
|
-
def parsing(str_list: list[str]) -> list[int]:
|
|
7
|
-
"""
|
|
8
|
-
将字符串转为列表
|
|
9
|
-
Args:
|
|
10
|
-
str_list:字符串列表,1to10by2形式
|
|
11
|
-
Return:
|
|
12
|
-
list[int]
|
|
13
|
-
"""
|
|
14
|
-
res_list = []
|
|
15
|
-
for s in str_list:
|
|
16
|
-
if 'by' in s:
|
|
17
|
-
# 确保有 'to'
|
|
18
|
-
if 'to' not in s:
|
|
19
|
-
raise ValueError("If 'by' is present, 'to' must also be present.")
|
|
20
|
-
# 解析 'to' 和 'by'
|
|
21
|
-
to_index = s.index('to')
|
|
22
|
-
by_index = s.index('by')
|
|
23
|
-
|
|
24
|
-
start = int(s[:to_index])
|
|
25
|
-
end = int(s[to_index + 2:by_index])
|
|
26
|
-
step = int(s[by_index + 2:])
|
|
27
|
-
res_list.extend(list(range(start, end + 1, step)))
|
|
28
|
-
# 检查是否有 'to'
|
|
29
|
-
elif 'to' in s:
|
|
30
|
-
to_index = s.index('to')
|
|
31
|
-
start = int(s[:to_index])
|
|
32
|
-
end = int(s[to_index + 2:])
|
|
33
|
-
|
|
34
|
-
res_list.extend(list(range(start, end + 1)))
|
|
35
|
-
# 如果只有数字
|
|
36
|
-
else:
|
|
37
|
-
res_list.extend([int(s)])
|
|
38
|
-
return res_list
|
|
39
|
-
|
|
40
|
-
|
|
41
4
|
class Node:
|
|
42
5
|
def __init__(self, node_id: int, x: float, y: float, z: float):
|
|
43
6
|
"""
|
|
@@ -1574,3 +1537,38 @@ class ElasticBucklingResult:
|
|
|
1574
1537
|
|
|
1575
1538
|
def __repr__(self):
|
|
1576
1539
|
return self.__str__()
|
|
1540
|
+
|
|
1541
|
+
|
|
1542
|
+
class EffectiveWidth:
|
|
1543
|
+
"""
|
|
1544
|
+
用于获取当前有效宽度数据
|
|
1545
|
+
"""
|
|
1546
|
+
|
|
1547
|
+
def __init__(self, index: int, element_id: int, iy_i: float, iy_j: float,
|
|
1548
|
+
factor_i: float, factor_j: float, dz_i: float, dz_j: float, group_name: str):
|
|
1549
|
+
self.index = index
|
|
1550
|
+
self.element_id = element_id
|
|
1551
|
+
self.iy_i = iy_i # 考虑剪力滞效应后截面Iy
|
|
1552
|
+
self.iy_j = iy_j
|
|
1553
|
+
self.factor_i = factor_i # I端截面Iy折减系数
|
|
1554
|
+
self.factor_j = factor_j # J端截面Iy折减系数
|
|
1555
|
+
self.dz_i = dz_i # I端截面形心变换量
|
|
1556
|
+
self.dz_j = dz_j # J端截面形心变换量
|
|
1557
|
+
self.group_name = group_name # 边界组名
|
|
1558
|
+
|
|
1559
|
+
def __str__(self):
|
|
1560
|
+
obj_dict = {
|
|
1561
|
+
'index': self.index,
|
|
1562
|
+
'element_id': self.element_id,
|
|
1563
|
+
'iy_i': self.iy_i,
|
|
1564
|
+
'iy_j': self.iy_j,
|
|
1565
|
+
'factor_i': self.factor_i,
|
|
1566
|
+
'factor_j': self.factor_j,
|
|
1567
|
+
'dz_i': self.dz_i,
|
|
1568
|
+
'dz_j': self.dz_j,
|
|
1569
|
+
'group_name': self.group_name,
|
|
1570
|
+
}
|
|
1571
|
+
return obj_dict
|
|
1572
|
+
|
|
1573
|
+
def __repr__(self):
|
|
1574
|
+
return self.__str__()
|
|
@@ -1487,8 +1487,8 @@ class Mdb:
|
|
|
1487
1487
|
charm_right: list[str] = None,
|
|
1488
1488
|
box_num: int = 3,
|
|
1489
1489
|
box_height: float = 2,
|
|
1490
|
-
box_other_info:dict[str, list[float]]=None,
|
|
1491
|
-
box_other_right:dict[str, list[float]]=None,
|
|
1490
|
+
box_other_info: dict[str, list[float]] = None,
|
|
1491
|
+
box_other_right: dict[str, list[float]] = None,
|
|
1492
1492
|
mat_combine: list[float] = None,
|
|
1493
1493
|
rib_info: dict[str, list[float]] = None,
|
|
1494
1494
|
rib_place: list[tuple[int, int, float, str, int, str]] = None,
|
|
@@ -1548,7 +1548,7 @@ class Mdb:
|
|
|
1548
1548
|
symmetry=symmetry, boxNum=box_num, boxHeight=box_height, charmRight=charm_right, secRight=sec_right,
|
|
1549
1549
|
biasType=bias_type, centerType=center_type, shearConsider=shear_consider,
|
|
1550
1550
|
biasX=bias_x, biasY=bias_y, secProperty=sec_property,
|
|
1551
|
-
boxOtherInfo=box_other_info,boxOtherRight=box_other_right)
|
|
1551
|
+
boxOtherInfo=box_other_info, boxOtherRight=box_other_right)
|
|
1552
1552
|
elif sec_type == "工字钢梁" or sec_type == "箱型钢梁":
|
|
1553
1553
|
qt_model.AddSection(id=index, name=name, secType=sec_type, secInfo=sec_info,
|
|
1554
1554
|
ribInfo=rib_info, ribPlace=rib_place, biasType=bias_type, centerType=center_type,
|
|
@@ -2740,6 +2740,52 @@ class Mdb:
|
|
|
2740
2740
|
# endregion
|
|
2741
2741
|
|
|
2742
2742
|
# region 动力荷载操作
|
|
2743
|
+
@staticmethod
|
|
2744
|
+
def add_vehicle_dynamic_load(node_ids=None, function_name: str = "", case_name: str = "", kind: int = 1,
|
|
2745
|
+
speed_kmh: float = 120, braking: bool = False, braking_a: float = 0.8,
|
|
2746
|
+
braking_d: float = 0, time: float = 0, direction: int = 6, gap: float = 14,
|
|
2747
|
+
factor: float = 1, vehicle_info_kn: list[float] = None) -> None:
|
|
2748
|
+
"""
|
|
2749
|
+
添加列车动力荷载
|
|
2750
|
+
Args:
|
|
2751
|
+
node_ids: 节点纵列节点编号集合,支持XtoYbyN形式字符串
|
|
2752
|
+
function_name: 函数名
|
|
2753
|
+
case_name: 工况名
|
|
2754
|
+
kind: 类型 1-ZK型车辆 2-动车组
|
|
2755
|
+
speed_kmh: 列车速度(km/h)
|
|
2756
|
+
braking: 是否考虑制动
|
|
2757
|
+
braking_a: 制动加速度(m/s²)
|
|
2758
|
+
braking_d: 制动时车头位置(m)
|
|
2759
|
+
time: 上桥时间(s)
|
|
2760
|
+
direction: 荷载方向 1-X 2-Y 3-Z 4-负X 5-负Y 6-负Z
|
|
2761
|
+
gap: 加载间距(m)
|
|
2762
|
+
factor: 放大系数
|
|
2763
|
+
vehicle_info_kn: 车辆参数,参数为空时则选取界面默认值,注意单位输入单位为KN
|
|
2764
|
+
ZK型车辆: [dW1,dW2,P1,P2,P3,P4,dD1,dD2,D1,D2,D3,LoadLength]
|
|
2765
|
+
动力组: [L1,L2,L3,P,N]
|
|
2766
|
+
Example:
|
|
2767
|
+
mdb.add_vehicle_dynamic_load("1to100",function_name="时程函数名",case_name="时程工况名",kind=1,speed_kmh=120,time=10)
|
|
2768
|
+
mdb.add_vehicle_dynamic_load([1,2,3,4,5,6,7],function_name="时程函数名",case_name="时程工况名",kind=1,speed_kmh=120,time=10)
|
|
2769
|
+
Returns:无
|
|
2770
|
+
"""
|
|
2771
|
+
try:
|
|
2772
|
+
qt_model.AddVehicleDynamicLoad(
|
|
2773
|
+
nodeIds=node_ids,
|
|
2774
|
+
functionName=function_name,
|
|
2775
|
+
caseName=case_name,
|
|
2776
|
+
kind=kind,
|
|
2777
|
+
speedKmh=speed_kmh,
|
|
2778
|
+
braking=braking,
|
|
2779
|
+
brakingA=braking_a,
|
|
2780
|
+
brakingD=braking_d,
|
|
2781
|
+
time=time,
|
|
2782
|
+
direction=direction,
|
|
2783
|
+
gap=gap,
|
|
2784
|
+
factor=factor,
|
|
2785
|
+
vehicleInfoKn=vehicle_info_kn)
|
|
2786
|
+
except Exception as ex:
|
|
2787
|
+
raise Exception(ex)
|
|
2788
|
+
|
|
2743
2789
|
@staticmethod
|
|
2744
2790
|
def add_load_to_mass(name: str, factor: float = 1):
|
|
2745
2791
|
"""
|
|
@@ -5036,7 +5082,8 @@ class Mdb:
|
|
|
5036
5082
|
|
|
5037
5083
|
# region 荷载组合操作
|
|
5038
5084
|
@staticmethod
|
|
5039
|
-
def add_load_combine(index:int = -1, name: str = "", combine_type: int = 1, describe: str = "",
|
|
5085
|
+
def add_load_combine(index: int = -1, name: str = "", combine_type: int = 1, describe: str = "",
|
|
5086
|
+
combine_info: list[tuple[str, str, float]] = None):
|
|
5040
5087
|
"""
|
|
5041
5088
|
添加荷载组合
|
|
5042
5089
|
Args:
|
|
@@ -5059,7 +5106,7 @@ class Mdb:
|
|
|
5059
5106
|
raise Exception(ex)
|
|
5060
5107
|
|
|
5061
5108
|
@staticmethod
|
|
5062
|
-
def remove_load_combine(index
|
|
5109
|
+
def remove_load_combine(index: int = -1, name: str = ""):
|
|
5063
5110
|
"""
|
|
5064
5111
|
删除荷载组合
|
|
5065
5112
|
Args:
|
|
@@ -5070,7 +5117,7 @@ class Mdb:
|
|
|
5070
5117
|
Returns: 无
|
|
5071
5118
|
"""
|
|
5072
5119
|
try:
|
|
5073
|
-
qt_model.RemoveLoadCombine(index=index,name=name)
|
|
5120
|
+
qt_model.RemoveLoadCombine(index=index, name=name)
|
|
5074
5121
|
except Exception as ex:
|
|
5075
5122
|
raise Exception(ex)
|
|
5076
5123
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from __main__ import qt_model
|
|
3
3
|
from .qt_db import *
|
|
4
|
-
from typing import Union, List
|
|
5
4
|
|
|
6
5
|
|
|
7
6
|
class Odb:
|
|
@@ -82,7 +81,7 @@ class Odb:
|
|
|
82
81
|
raise Exception(ex)
|
|
83
82
|
|
|
84
83
|
@staticmethod
|
|
85
|
-
def activate_structure(node_ids
|
|
84
|
+
def activate_structure(node_ids=None, element_ids=None):
|
|
86
85
|
"""
|
|
87
86
|
激活指定阶段和单元,默认激活所有
|
|
88
87
|
Args:
|
|
@@ -399,7 +398,7 @@ class Odb:
|
|
|
399
398
|
raise Exception(ex)
|
|
400
399
|
|
|
401
400
|
@staticmethod
|
|
402
|
-
def get_concurrent_force(ids=
|
|
401
|
+
def get_concurrent_force(ids=None, case_name: str = ""):
|
|
403
402
|
"""
|
|
404
403
|
获取单元并发内力
|
|
405
404
|
Args:
|
|
@@ -457,11 +456,11 @@ class Odb:
|
|
|
457
456
|
Returns: 返回弹性连接内力列表list[dict] 或 dict(单一结果)
|
|
458
457
|
"""
|
|
459
458
|
try:
|
|
460
|
-
bf_list= qt_model.GetElasticLinkForce(ids=ids,resultKind=result_kind,stageId=stage_id,
|
|
461
|
-
|
|
459
|
+
bf_list = qt_model.GetElasticLinkForce(ids=ids, resultKind=result_kind, stageId=stage_id,
|
|
460
|
+
envelopType=envelop_type, incrementType=increment_type, caseName=case_name)
|
|
462
461
|
list_res = []
|
|
463
462
|
for item in bf_list:
|
|
464
|
-
force = [item.Force.Dx, item.Force.Dy, item.Force.Dz,item.Force.Rx, item.Force.Ry, item.Force.Rz]
|
|
463
|
+
force = [item.Force.Dx, item.Force.Dy, item.Force.Dz, item.Force.Rx, item.Force.Ry, item.Force.Rz]
|
|
465
464
|
list_res.append(str(ElasticLinkForce(item.NodeId, force)))
|
|
466
465
|
return list_res if len(list_res) > 1 else list_res[0]
|
|
467
466
|
except Exception as ex:
|
|
@@ -483,8 +482,8 @@ class Odb:
|
|
|
483
482
|
Returns: 返回约束方程内力列表list[dict] 或 dict(单一结果)
|
|
484
483
|
"""
|
|
485
484
|
try:
|
|
486
|
-
bf_list= qt_model.GetConstrainEquationForce(ids=ids,resultKind=result_kind, stageId=stage_id,
|
|
487
|
-
|
|
485
|
+
bf_list = qt_model.GetConstrainEquationForce(ids=ids, resultKind=result_kind, stageId=stage_id,
|
|
486
|
+
envelopType=envelop_type, incrementType=increment_type, caseName=case_name)
|
|
488
487
|
list_res = []
|
|
489
488
|
for item in bf_list:
|
|
490
489
|
force = [item.Force.Dx, item.Force.Dy, item.Force.Dz, item.Force.Rx, item.Force.Ry, item.Force.Rz]
|
|
@@ -506,11 +505,11 @@ class Odb:
|
|
|
506
505
|
Returns: 返回无应力索长列表list[dict] 或 dict(单一结果)
|
|
507
506
|
"""
|
|
508
507
|
try:
|
|
509
|
-
bf_list= qt_model.GetCableElementLength(ids=ids,stageId=stage_id,incrementType=increment_type)
|
|
508
|
+
bf_list = qt_model.GetCableElementLength(ids=ids, stageId=stage_id, incrementType=increment_type)
|
|
510
509
|
list_res = []
|
|
511
510
|
for item in bf_list:
|
|
512
|
-
list_res.append(str(CableLengthResult(item.ElementId, item.UnstressedLength,item.CosAXi,item.CosAYi,item.CosAZi,
|
|
513
|
-
item.CosAXj,item.CosAYj,item.CosAZj,item.Dx,item.Dy,item.Dz)))
|
|
511
|
+
list_res.append(str(CableLengthResult(item.ElementId, item.UnstressedLength, item.CosAXi, item.CosAYi, item.CosAZi,
|
|
512
|
+
item.CosAXj, item.CosAYj, item.CosAZj, item.Dx, item.Dy, item.Dz)))
|
|
514
513
|
return list_res if len(list_res) > 1 else list_res[0]
|
|
515
514
|
except Exception as ex:
|
|
516
515
|
raise Exception(ex)
|
|
@@ -1405,7 +1404,7 @@ class Odb:
|
|
|
1405
1404
|
raise Exception(ex)
|
|
1406
1405
|
|
|
1407
1406
|
@staticmethod
|
|
1408
|
-
def get_element_data(ids
|
|
1407
|
+
def get_element_data(ids=None):
|
|
1409
1408
|
"""
|
|
1410
1409
|
获取单元信息
|
|
1411
1410
|
Args:
|
|
@@ -1443,17 +1442,17 @@ class Odb:
|
|
|
1443
1442
|
raise Exception(ex)
|
|
1444
1443
|
|
|
1445
1444
|
@staticmethod
|
|
1446
|
-
def get_element_type(
|
|
1445
|
+
def get_element_type(element_id: int) -> str:
|
|
1447
1446
|
"""
|
|
1448
1447
|
获取单元类型
|
|
1449
1448
|
Args:
|
|
1450
|
-
|
|
1449
|
+
element_id: 单元号
|
|
1451
1450
|
Example:
|
|
1452
|
-
odb.get_element_type(
|
|
1451
|
+
odb.get_element_type(element_id=1) # 获取1号单元类型
|
|
1453
1452
|
Returns: str
|
|
1454
1453
|
"""
|
|
1455
1454
|
try:
|
|
1456
|
-
return qt_model.GetElementType(
|
|
1455
|
+
return qt_model.GetElementType(element_id)
|
|
1457
1456
|
except Exception as ex:
|
|
1458
1457
|
raise Exception(ex)
|
|
1459
1458
|
|
|
@@ -1730,7 +1729,7 @@ class Odb:
|
|
|
1730
1729
|
group_name:默认输出所有边界组信息
|
|
1731
1730
|
Example:
|
|
1732
1731
|
odb.get_elastic_link_data()
|
|
1733
|
-
Returns: 包含信息为list[dict]
|
|
1732
|
+
Returns: 包含信息为list[dict]
|
|
1734
1733
|
"""
|
|
1735
1734
|
try:
|
|
1736
1735
|
res_list = []
|
|
@@ -1745,7 +1744,7 @@ class Odb:
|
|
|
1745
1744
|
start_id=data.StartNode.Id, end_id=data.EndNode.Id, beta_angle=data.Beta,
|
|
1746
1745
|
boundary_info=(data.Kx, data.Ky, data.Kz, data.Krx, data.Kry, data.Krz),
|
|
1747
1746
|
group_name=group, dis_ratio=data.DistanceRatio, kx=data.Kx)))
|
|
1748
|
-
return res_list
|
|
1747
|
+
return res_list
|
|
1749
1748
|
except Exception as ex:
|
|
1750
1749
|
raise Exception(ex)
|
|
1751
1750
|
|
|
@@ -1757,7 +1756,7 @@ class Odb:
|
|
|
1757
1756
|
group_name:默认输出所有边界组信息
|
|
1758
1757
|
Example:
|
|
1759
1758
|
odb.get_elastic_support_data()
|
|
1760
|
-
Returns: 包含信息为list[dict]
|
|
1759
|
+
Returns: 包含信息为list[dict]
|
|
1761
1760
|
"""
|
|
1762
1761
|
try:
|
|
1763
1762
|
res_list = []
|
|
@@ -1771,7 +1770,7 @@ class Odb:
|
|
|
1771
1770
|
res_list.append(str(ElasticSupport(support_id=data.Id, node_id=data.Node.Id, support_type=int(data.Type) + 1,
|
|
1772
1771
|
boundary_info=(data.Kx, data.Ky, data.Kz, data.Krx, data.Kry, data.Krz),
|
|
1773
1772
|
group_name=group, node_system=int(data.NodalCoordinateSystem))))
|
|
1774
|
-
return res_list
|
|
1773
|
+
return res_list
|
|
1775
1774
|
except Exception as ex:
|
|
1776
1775
|
raise Exception(ex)
|
|
1777
1776
|
|
|
@@ -1783,7 +1782,7 @@ class Odb:
|
|
|
1783
1782
|
group_name:默认输出所有边界组信息
|
|
1784
1783
|
Example:
|
|
1785
1784
|
odb.get_master_slave_link_data()
|
|
1786
|
-
Returns: 包含信息为list[dict]
|
|
1785
|
+
Returns: 包含信息为list[dict]
|
|
1787
1786
|
"""
|
|
1788
1787
|
try:
|
|
1789
1788
|
res_list = []
|
|
@@ -1798,7 +1797,7 @@ class Odb:
|
|
|
1798
1797
|
boundary_info=(data.IsFixedX, data.IsFixedY, data.IsFixedZ,
|
|
1799
1798
|
data.IsFixedRx, data.IsFixedRy, data.IsFixedRZ),
|
|
1800
1799
|
group_name=group)))
|
|
1801
|
-
return res_list
|
|
1800
|
+
return res_list
|
|
1802
1801
|
except Exception as ex:
|
|
1803
1802
|
raise Exception(ex)
|
|
1804
1803
|
|
|
@@ -1846,7 +1845,7 @@ class Odb:
|
|
|
1846
1845
|
info_j = (
|
|
1847
1846
|
not data.IsJFreedX, not data.IsJFreedY, not data.IsJFreedZ, not data.IsJFreedRx, not data.IsJFreedRy, not data.IsJFreedRZ)
|
|
1848
1847
|
res_list.append(str(BeamConstraint(constraint_id=data.Id, beam_id=data.Beam.Id, info_i=info_i, info_j=info_j, group_name=group)))
|
|
1849
|
-
return res_list
|
|
1848
|
+
return res_list
|
|
1850
1849
|
except Exception as ex:
|
|
1851
1850
|
raise Exception(ex)
|
|
1852
1851
|
|
|
@@ -1858,7 +1857,7 @@ class Odb:
|
|
|
1858
1857
|
group_name:默认输出所有边界组信息
|
|
1859
1858
|
Example:
|
|
1860
1859
|
odb.get_constraint_equation_data()
|
|
1861
|
-
Returns: 包含信息为list[dict]
|
|
1860
|
+
Returns: 包含信息为list[dict]
|
|
1862
1861
|
"""
|
|
1863
1862
|
try:
|
|
1864
1863
|
res_list = []
|
|
@@ -1875,7 +1874,33 @@ class Odb:
|
|
|
1875
1874
|
res_list.append(
|
|
1876
1875
|
str(ConstraintEquation(data.Id, name=data.Name, sec_node=data.SecondaryNode.Id, sec_dof=int(data.SecondaryDof) + 1,
|
|
1877
1876
|
master_info=master_info, group_name=group)))
|
|
1878
|
-
return res_list
|
|
1877
|
+
return res_list
|
|
1878
|
+
except Exception as ex:
|
|
1879
|
+
raise Exception(ex)
|
|
1880
|
+
|
|
1881
|
+
@staticmethod
|
|
1882
|
+
def get_effective_width(group_name: str = None):
|
|
1883
|
+
"""
|
|
1884
|
+
获取有效宽度数据
|
|
1885
|
+
Args:
|
|
1886
|
+
group_name:边界组
|
|
1887
|
+
Example:
|
|
1888
|
+
odb.get_effective_width(group_name="边界组1")
|
|
1889
|
+
Returns: list[dict]
|
|
1890
|
+
"""
|
|
1891
|
+
try:
|
|
1892
|
+
res_list = []
|
|
1893
|
+
if group_name is None:
|
|
1894
|
+
group_names = Odb.get_boundary_group_names()
|
|
1895
|
+
else:
|
|
1896
|
+
group_names = [group_name]
|
|
1897
|
+
for group in group_names:
|
|
1898
|
+
item_list = qt_model.GetEffectiveWidthFactorData(groupName=group_name)
|
|
1899
|
+
for item in item_list:
|
|
1900
|
+
res_list.append(str(EffectiveWidth(index=item.Id, element_id=item.Element.Id, iy_i=item.Iy_I, iy_j=item.Iy_J,
|
|
1901
|
+
factor_i=item.IyFactor_I, factor_j=item.IyFactor_J,
|
|
1902
|
+
dz_i=item.CentroidZ_I, dz_j=item.CentroidZ_J, group_name=group)))
|
|
1903
|
+
return res_list
|
|
1879
1904
|
except Exception as ex:
|
|
1880
1905
|
raise Exception(ex)
|
|
1881
1906
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: qtmodel
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.3
|
|
4
4
|
Summary: python modeling for qt 2025-06-30
|
|
5
5
|
Home-page: https://github.com/Inface0443/pyqt
|
|
6
6
|
Author: dqy-zhj
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Classifier: Operating System :: OS Independent
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
|
|
15
|
-
> 最新版本 V0.
|
|
15
|
+
> 最新版本 V0.9.3 - 2025-06-30
|
|
16
16
|
> pip install --upgrade qtmodel -i https://pypi.org/simple
|
|
17
17
|
- 新增更新结构组接口
|
|
18
18
|
# 建模操作
|
|
@@ -1742,6 +1742,31 @@ mdb.remove_live_load_case(index=1)
|
|
|
1742
1742
|
```
|
|
1743
1743
|
Returns: 无
|
|
1744
1744
|
## 动力荷载操作
|
|
1745
|
+
### add_vehicle_dynamic_load
|
|
1746
|
+
添加列车动力荷载
|
|
1747
|
+
> 参数:
|
|
1748
|
+
> node_ids: 节点纵列节点编号集合,支持XtoYbyN形式字符串
|
|
1749
|
+
> function_name: 函数名
|
|
1750
|
+
> case_name: 工况名
|
|
1751
|
+
> kind: 类型 1-ZK型车辆 2-动车组
|
|
1752
|
+
> speed_kmh: 列车速度(km/h)
|
|
1753
|
+
> braking: 是否考虑制动
|
|
1754
|
+
> braking_a: 制动加速度(m/s²)
|
|
1755
|
+
> braking_d: 制动时车头位置(m)
|
|
1756
|
+
> time: 上桥时间(s)
|
|
1757
|
+
> direction: 荷载方向 1-X 2-Y 3-Z 4-负X 5-负Y 6-负Z
|
|
1758
|
+
> gap: 加载间距(m)
|
|
1759
|
+
> factor: 放大系数
|
|
1760
|
+
> vehicle_info_kn: 车辆参数,参数为空时则选取界面默认值,注意单位输入单位为KN
|
|
1761
|
+
> ZK型车辆: [dW1,dW2,P1,P2,P3,P4,dD1,dD2,D1,D2,D3,LoadLength]
|
|
1762
|
+
> 动力组: [L1,L2,L3,P,N]
|
|
1763
|
+
```Python
|
|
1764
|
+
# 示例代码
|
|
1765
|
+
from qtmodel import *
|
|
1766
|
+
mdb.add_vehicle_dynamic_load("1to100",function_name="时程函数名",case_name="时程工况名",kind=1,speed_kmh=120,time=10)
|
|
1767
|
+
mdb.add_vehicle_dynamic_load([1,2,3,4,5,6,7],function_name="时程函数名",case_name="时程工况名",kind=1,speed_kmh=120,time=10)
|
|
1768
|
+
```
|
|
1769
|
+
Returns:无
|
|
1745
1770
|
### add_load_to_mass
|
|
1746
1771
|
添加荷载转为质量
|
|
1747
1772
|
> 参数:
|
|
@@ -4012,11 +4037,11 @@ Returns: 包含信息为list[dict] or dict
|
|
|
4012
4037
|
### get_element_type
|
|
4013
4038
|
获取单元类型
|
|
4014
4039
|
> 参数:
|
|
4015
|
-
>
|
|
4040
|
+
> element_id: 单元号
|
|
4016
4041
|
```Python
|
|
4017
4042
|
# 示例代码
|
|
4018
4043
|
from qtmodel import *
|
|
4019
|
-
odb.get_element_type(
|
|
4044
|
+
odb.get_element_type(element_id=1) # 获取1号单元类型
|
|
4020
4045
|
```
|
|
4021
4046
|
Returns: str
|
|
4022
4047
|
### get_beam_element
|
|
@@ -4148,7 +4173,7 @@ Returns: 包含信息为list[dict]
|
|
|
4148
4173
|
from qtmodel import *
|
|
4149
4174
|
odb.get_elastic_link_data()
|
|
4150
4175
|
```
|
|
4151
|
-
Returns: 包含信息为list[dict]
|
|
4176
|
+
Returns: 包含信息为list[dict]
|
|
4152
4177
|
### get_elastic_support_data
|
|
4153
4178
|
获取弹性支承信息
|
|
4154
4179
|
> 参数:
|
|
@@ -4158,7 +4183,7 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4158
4183
|
from qtmodel import *
|
|
4159
4184
|
odb.get_elastic_support_data()
|
|
4160
4185
|
```
|
|
4161
|
-
Returns: 包含信息为list[dict]
|
|
4186
|
+
Returns: 包含信息为list[dict]
|
|
4162
4187
|
### get_master_slave_link_data
|
|
4163
4188
|
获取主从连接信息
|
|
4164
4189
|
> 参数:
|
|
@@ -4168,7 +4193,7 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4168
4193
|
from qtmodel import *
|
|
4169
4194
|
odb.get_master_slave_link_data()
|
|
4170
4195
|
```
|
|
4171
|
-
Returns: 包含信息为list[dict]
|
|
4196
|
+
Returns: 包含信息为list[dict]
|
|
4172
4197
|
### get_node_local_axis_data
|
|
4173
4198
|
获取节点坐标信息
|
|
4174
4199
|
> 参数:
|
|
@@ -4197,7 +4222,17 @@ Returns: 包含信息为list[dict]或 dict
|
|
|
4197
4222
|
from qtmodel import *
|
|
4198
4223
|
odb.get_constraint_equation_data()
|
|
4199
4224
|
```
|
|
4200
|
-
Returns: 包含信息为list[dict]
|
|
4225
|
+
Returns: 包含信息为list[dict]
|
|
4226
|
+
### get_effective_width
|
|
4227
|
+
获取有效宽度数据
|
|
4228
|
+
> 参数:
|
|
4229
|
+
> group_name:边界组
|
|
4230
|
+
```Python
|
|
4231
|
+
# 示例代码
|
|
4232
|
+
from qtmodel import *
|
|
4233
|
+
odb.get_effective_width(group_name="边界组1")
|
|
4234
|
+
```
|
|
4235
|
+
Returns: list[dict]
|
|
4201
4236
|
## 获取施工阶段信息
|
|
4202
4237
|
### get_stage_name
|
|
4203
4238
|
获取所有施工阶段名称
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|