osis-python 0.3.9__tar.gz → 0.4.0__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 (102) hide show
  1. {osis_python-0.3.9/src/osis_python.egg-info → osis_python-0.4.0}/PKG-INFO +1 -1
  2. {osis_python-0.3.9 → osis_python-0.4.0/src/osis_python.egg-info}/PKG-INFO +1 -1
  3. {osis_python-0.3.9 → osis_python-0.4.0}/src/osis_python.egg-info/SOURCES.txt +1 -0
  4. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/__init__.py +1 -1
  5. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/boundary/manager.py +3 -3
  6. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/dynamic/manager.py +38 -2
  7. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/element/manager.py +45 -0
  8. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/live/manager.py +2 -0
  9. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/post/manager.py +14 -0
  10. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/section/common.py +3 -3
  11. osis_python-0.4.0/src/pyosis/section/composite.py +229 -0
  12. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/section/manager.py +843 -582
  13. {osis_python-0.3.9 → osis_python-0.4.0}/LICENSE +0 -0
  14. {osis_python-0.3.9 → osis_python-0.4.0}/README.md +0 -0
  15. {osis_python-0.3.9 → osis_python-0.4.0}/pyproject.toml +0 -0
  16. {osis_python-0.3.9 → osis_python-0.4.0}/setup.cfg +0 -0
  17. {osis_python-0.3.9 → osis_python-0.4.0}/src/osis_python.egg-info/dependency_links.txt +0 -0
  18. {osis_python-0.3.9 → osis_python-0.4.0}/src/osis_python.egg-info/requires.txt +0 -0
  19. {osis_python-0.3.9 → osis_python-0.4.0}/src/osis_python.egg-info/top_level.txt +0 -0
  20. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/boundary/__init__.py +0 -0
  21. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/boundary/interface.py +0 -0
  22. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/control/__init__.py +0 -0
  23. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/control/control.py +0 -0
  24. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/control/io.py +0 -0
  25. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/control/manager.py +0 -0
  26. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/control/nonlinear.py +0 -0
  27. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/core/__init__.py +0 -0
  28. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/core/all_func.py +0 -0
  29. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/core/client.py +0 -0
  30. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/core/command.py +0 -0
  31. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/core/engine.py +0 -0
  32. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/dynamic/__init__.py +0 -0
  33. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/dynamic/load_to_mass.py +0 -0
  34. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/dynamic/modal.py +0 -0
  35. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/dynamic/seismic.py +0 -0
  36. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/element/__init__.py +0 -0
  37. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/element/interface.py +0 -0
  38. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/general/__init__.py +0 -0
  39. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/general/interface.py +0 -0
  40. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/geometry/__init__.py +0 -0
  41. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/geometry/interface.py +0 -0
  42. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/geometry/manager.py +0 -0
  43. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/live/__init__.py +0 -0
  44. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/live/analysis.py +0 -0
  45. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/live/grade.py +0 -0
  46. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/live/lane.py +0 -0
  47. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/load/__init__.py +0 -0
  48. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/load/loadcase.py +0 -0
  49. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/load/manager.py +0 -0
  50. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/load/static.py +0 -0
  51. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/load/tendon.py +0 -0
  52. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/material/__init__.py +0 -0
  53. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/material/interface.py +0 -0
  54. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/material/manager.py +0 -0
  55. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/node/__init__.py +0 -0
  56. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/node/interface.py +0 -0
  57. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/node/manager.py +0 -0
  58. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/post/__init__.py +0 -0
  59. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/post/combine.py +0 -0
  60. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/post/design_check.py +0 -0
  61. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/post/display.py +0 -0
  62. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/project/__init__.py +0 -0
  63. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/project/interface.py +0 -0
  64. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/project/manager.py +0 -0
  65. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/property/__init__.py +0 -0
  66. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/property/component_thickness.py +0 -0
  67. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/property/coordinate.py +0 -0
  68. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/property/creep_shrink.py +0 -0
  69. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/property/damping.py +0 -0
  70. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/property/manager.py +0 -0
  71. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/property/pu_curve.py +0 -0
  72. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/quick_building/__init__.py +0 -0
  73. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/quick_building/interface.py +0 -0
  74. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/result/__init__.py +0 -0
  75. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/result/check.py +0 -0
  76. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/result/env.py +0 -0
  77. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/result/loadcase.py +0 -0
  78. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/result/manager.py +0 -0
  79. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/result/result.py +0 -0
  80. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/section/__init__.py +0 -0
  81. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/section/numeric.py +0 -0
  82. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/section/param.py +0 -0
  83. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/section/rebar.py +0 -0
  84. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/section/rib.py +0 -0
  85. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/section/steel.py +0 -0
  86. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/settlement/__init__.py +0 -0
  87. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/settlement/interface.py +0 -0
  88. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/settlement/manager.py +0 -0
  89. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/stability/__init__.py +0 -0
  90. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/stability/buckling.py +0 -0
  91. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/stability/manager.py +0 -0
  92. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/stage/__init__.py +0 -0
  93. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/stage/define.py +0 -0
  94. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/stage/manager.py +0 -0
  95. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/stage/overall.py +0 -0
  96. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/thickness/__init__.py +0 -0
  97. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/thickness/interface.py +0 -0
  98. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/thickness/manager.py +0 -0
  99. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/transfer/__init__.py +0 -0
  100. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/transfer/command_map.py +0 -0
  101. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/transfer/generator.py +0 -0
  102. {osis_python-0.3.9 → osis_python-0.4.0}/src/pyosis/transfer/parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osis-python
3
- Version: 0.3.9
3
+ Version: 0.4.0
4
4
  Summary: A Python client library for Osis APDL
5
5
  Author-email: "CCCC Highway Consultant Co. Ltd." <support@osisbim.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osis-python
3
- Version: 0.3.9
3
+ Version: 0.4.0
4
4
  Summary: A Python client library for Osis APDL
5
5
  Author-email: "CCCC Highway Consultant Co. Ltd." <support@osisbim.com>
6
6
  License-Expression: MIT
@@ -74,6 +74,7 @@ src/pyosis/result/manager.py
74
74
  src/pyosis/result/result.py
75
75
  src/pyosis/section/__init__.py
76
76
  src/pyosis/section/common.py
77
+ src/pyosis/section/composite.py
77
78
  src/pyosis/section/manager.py
78
79
  src/pyosis/section/numeric.py
79
80
  src/pyosis/section/param.py
@@ -7,7 +7,7 @@ A library for extending OSIS functionality.
7
7
  A library that allows users to use CAE with great flexibility.
8
8
  """
9
9
 
10
- __version__ = "0.3.9"
10
+ __version__ = "0.4.0"
11
11
  __author__ = "CCCC Highway Consultant Co. Ltd." # 中交公路规划设计院 - 工程技术研究中心 - lzh - wjh - myf
12
12
 
13
13
  from .core.engine import OSISEngine
@@ -293,7 +293,7 @@ class ElstcSptBoundary(Boundary):
293
293
  is_occupied=d.get("isOccupied"),
294
294
  is_selected=d.get("isSelected"),
295
295
  is_ploted=d.get("isPloted"),
296
- constraints=list(d.get("constraints")),
296
+ # constraints=list(d.get("constraints")),
297
297
  coor_no=d.get("coorNO"),
298
298
  k_values=list(d.get("k")),
299
299
  elastic_k=list(d.get("elasticK")),
@@ -333,8 +333,8 @@ class GeneralElstcSptBoundary(Boundary):
333
333
  flag_m=d.get("flagM"),
334
334
  flag_c=d.get("flagC"),
335
335
  stiffness_matrix=list(d.get("stiffnessMatrix")),
336
- mass_matrix=list(d.get("massMatrix")),
337
- damping_matrix=list(d.get("dampingMatrix")),
336
+ # mass_matrix=list(d.get("massMatrix")),
337
+ # damping_matrix=list(d.get("dampingMatrix")),
338
338
  )
339
339
 
340
340
  def __repr__(self) -> str:
@@ -7,7 +7,7 @@
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- from dataclasses import dataclass
10
+ from dataclasses import dataclass, field
11
11
  from typing import Literal
12
12
 
13
13
  from .load_to_mass import (
@@ -28,18 +28,54 @@ from .seismic import (
28
28
  )
29
29
  from ..core.client import osis_client
30
30
 
31
-
31
+ @dataclass(frozen=False)
32
+ class LoadToMassLcPara:
33
+ """荷载转换质量中的单个荷载工况参数"""
34
+ load_case: str
35
+ mass_factor: float
36
+ g: float
37
+ mass_dir: list[int] = field(default_factory=lambda: [1, 1, 1]) # [X, Y, Z]
38
+ trans_node_force: bool = True # transNForce
39
+ trans_beam_force: bool = True # transBForce
40
+ trans_surface_force: bool = False # transSForce
41
+ @classmethod
42
+ def _from_dict(cls, d: dict) -> LoadToMassLcPara:
43
+ return cls(
44
+ load_case=d.get("loadCase"),
45
+ mass_factor=d.get("massFactor"),
46
+ g=d.get("G"),
47
+ mass_dir=list(d.get("massDir") or [1, 1, 1]),
48
+ trans_node_force=bool(d.get("transNForce")),
49
+ trans_beam_force=bool(d.get("transBForce")),
50
+ trans_surface_force=bool(d.get("transSForce")),
51
+ )
32
52
  # ──────────────────────────────────────────────
33
53
  # 管理类
34
54
  # ──────────────────────────────────────────────
35
55
  @dataclass(frozen=False)
36
56
  class LoadToMass:
37
57
  name: str
58
+ no: int
59
+ analysis_type: int = 0
60
+ ok: bool = False
61
+ related_stages: list[int] = field(default_factory=list)
62
+ lc_paras_count: int = 0
63
+ lc_paras: list[LoadToMassLcPara] = field(default_factory=list)
38
64
 
39
65
  @classmethod
40
66
  def _from_dict(cls, d: dict) -> LoadToMass:
41
67
  return cls(
42
68
  name=d.get("name"),
69
+ no=d.get("no"),
70
+ analysis_type=d.get("analysisType", 0),
71
+ ok=bool(d.get("ok")),
72
+ related_stages=list(d.get("relatedStages") or []),
73
+ lc_paras_count=d.get("lcParasCount", 0),
74
+ lc_paras=[
75
+ LoadToMassLcPara._from_dict(p)
76
+ for p in (d.get("lcParas") or [])
77
+ if isinstance(p, dict)
78
+ ],
43
79
  )
44
80
 
45
81
  class LoadToMassManager:
@@ -24,6 +24,9 @@ from .interface import (
24
24
  osis_element_del,
25
25
  osis_element_mod,
26
26
  osis_element_group,
27
+ osis_taperele,
28
+ osis_element_tapereledel,
29
+ osis_element_taperelemod,
27
30
  )
28
31
 
29
32
 
@@ -380,6 +383,48 @@ class TaperEleGroupManager:
380
383
  taper_ele_groups = [TaperEleGroup._from_dict(d) for d in resp.get("data", []) if "name" in d]
381
384
  return taper_ele_groups
382
385
 
386
+ def create(
387
+ self,
388
+ name: str,
389
+ z_type: Literal["0", "1"],
390
+ z_trans: float = 1.0,
391
+ z_pos: Literal["0", "1"] = "0",
392
+ z_dis: float = 0.0,
393
+ y_type: Literal["0", "1"] = "0",
394
+ y_trans: float = 1.0,
395
+ y_pos: Literal["0", "1"] = "0",
396
+ y_dis: float = 0.0,
397
+ *eles: str,
398
+
399
+ ) -> TaperEleGroup:
400
+ """创建变截面单元组"""
401
+ ok, err = osis_taperele(
402
+ name,
403
+ z_type,
404
+ z_trans,
405
+ z_pos,
406
+ z_dis,
407
+ y_type,
408
+ y_trans,
409
+ y_pos,
410
+ y_dis,
411
+ *eles,
412
+ )
413
+ if not ok:
414
+ raise RuntimeError(f"创建变截面单元组 {name} 失败: {err}")
415
+ return self.get(name)
416
+
417
+ def delete(self, name: str) -> None:
418
+ ok, err = osis_element_tapereledel(name)
419
+ if not ok:
420
+ raise RuntimeError(f"删除变截面单元组 {name} 失败: {err}")
421
+
422
+ def rename(self, old_name: str, new_name: str) -> TaperEleGroup:
423
+ ok, err = osis_element_taperelemod(old_name, new_name)
424
+ if not ok:
425
+ raise RuntimeError(f"重命名变截面单元组 {old_name} -> {new_name} 失败: {err}")
426
+ return self.get(new_name)
427
+
383
428
  def get(self, name: str | list[str]) -> TaperEleGroup | list[TaperEleGroup | None] | None:
384
429
  """根据名称获取变截面单元组
385
430
  Args:
@@ -501,6 +501,8 @@ class LiveGradeManager:
501
501
  Raises:
502
502
  RuntimeError: 创建失败时抛出异常
503
503
  """
504
+ raise RuntimeError(f"暂不支持创建LiveGrade对象")
505
+ # TODO 需要修改DB文件grade字段值
504
506
  ok, err = osis_livegrade_crowd(name, "JTGD60_2015", "CROWD", eBridgeType, dPara)
505
507
  if not ok:
506
508
  raise RuntimeError(f"创建人群荷载等级 {name} 失败: {err}")
@@ -10,6 +10,8 @@ from __future__ import annotations
10
10
 
11
11
  from typing import Literal
12
12
 
13
+ from ..core import osis_run
14
+
13
15
  from .combine import (
14
16
  osis_combine_create,
15
17
  osis_combine_post,
@@ -495,6 +497,18 @@ class PostManager:
495
497
  if not ok:
496
498
  raise RuntimeError(f"删除验算作用 ({item}) 失败: {err}")
497
499
 
500
+ # ═══════════════════════════════════════════
501
+ # 快捷功能
502
+ # ═══════════════════════════════════════════
503
+
504
+ def combination_and_check():
505
+ '''
506
+ 自动组合与验算
507
+ '''
508
+ ok, err = osis_run("CombinationAndCheck")
509
+ if not ok:
510
+ raise RuntimeError(f"自动组合与验算失败: {err}")
511
+
498
512
  # ═══════════════════════════════════════════
499
513
  # 结果显示
500
514
  # ═══════════════════════════════════════════
@@ -371,7 +371,7 @@ def osis_section_conventionalbox(nSec: int, strName: str, eSectionType: Literal[
371
371
  pass
372
372
 
373
373
  @REGISTRY.register('Section')
374
- def osis_section_flat_box(nSec: int, strName: str, eSectionType: Literal["FLATBOX"]="FLATBOX",
374
+ def osis_section_streamed_box(nSec: int, strName: str, eSectionType: Literal["STREAMEDBOX"]="STREAMEDBOX",
375
375
  H: float=4.0, BtL: float=20.0, BtR: float=20.0, BbL: float=10.5, BbR: float=10.5, Bs: float=0.8,
376
376
  Tt: float=0.28, Tb1: float=0.27, Tb2: float=0.27, Tw: float=0.25, Ttj: float=0.5, Tbj: float=0.27, Twj: float=0.4,
377
377
  nCellNum: int=5, Bi1: float=4.7, Bi2: float=6.85, Bi3: float=6, Bi4: float=6.85,
@@ -384,12 +384,12 @@ def osis_section_flat_box(nSec: int, strName: str, eSectionType: Literal["FLATBO
384
384
  eSlopeType: Literal["Integral", "CastInPlace"]="Integral",
385
385
  i: float=0.0, i1: float=0.0, i2: float=0.0, i3: float=0.0, i4: float=0.0,
386
386
  R1: float=0.5, R2: float=0.2):
387
- """定义或修改扁平箱梁截面(FlatBox)。
387
+ """定义或修改扁平箱梁截面(STREAMEDBOX)。
388
388
 
389
389
  Args:
390
390
  nSec (int): 截面编号,从1开始编号。
391
391
  strName (str): 截面名称。
392
- eSectionType (str): 截面类型,固定为 FLATBOX
392
+ eSectionType (str): 截面类型,固定为 STREAMEDBOX
393
393
  H (float): 截面高度。
394
394
  BtL (float): 设计线左顶板宽。
395
395
  BtR (float): 设计线右顶板宽。
@@ -0,0 +1,229 @@
1
+ from typing import Literal
2
+
3
+ from ..core import REGISTRY
4
+
5
+
6
+ @REGISTRY.register("Section")
7
+ def osis_section_composite_steel_i(
8
+ Index: int,
9
+ Name: str,
10
+ Type: Literal["COMPOSITESTEELI"],
11
+ Bt: float,
12
+ Bc: float,
13
+ Tt1: float,
14
+ Tt2: float,
15
+ Tt3: float,
16
+ Tc1: float,
17
+ Tc2: float,
18
+ B1: float,
19
+ B2: float,
20
+ x1: float,
21
+ x2: float,
22
+ x3: float,
23
+ GirderNum: Literal["SINGLE", "DOUBLE", "TRIPLE"],
24
+ H1: float,
25
+ Bf1: float,
26
+ Bb1: float,
27
+ Tf1: float,
28
+ Tb1: float,
29
+ Tw1: float,
30
+ WebRibPos1: Literal["LEFT", "RIGHT", "BOTH"],
31
+ MiddleSameWithSide: Literal[0, 1],
32
+ H2: float,
33
+ Bf2: float,
34
+ Bb2: float,
35
+ Tf2: float,
36
+ Tb2: float,
37
+ Tw2: float,
38
+ WebRibPos2: Literal["LEFT", "RIGHT", "BOTH"],
39
+ ):
40
+ """定义或修改工字型钢组合截面(COMPOSITESTEELI)。
41
+
42
+ Args:
43
+ Index: 截面编号
44
+ Name: 截面名
45
+ Type: 固定为 COMPOSITESTEELI
46
+ Bt: 板宽
47
+ Bc: 悬臂长
48
+ Tt1: 标准段板厚
49
+ Tt2: 两侧加厚段板厚
50
+ Tt3: 中间加厚段板厚
51
+ Tc1: 悬臂端板厚
52
+ Tc2: 悬臂倒角处板厚
53
+ B1: 两侧加厚段板宽
54
+ B2: 中间加厚段板宽
55
+ x1, x2, x3: 倒角
56
+ GirderNum: SINGLE=单梁, DOUBLE=双梁, TRIPLE=三梁
57
+ H1, Bf1, Bb1, Tf1, Tb1, Tw1, WebRibPos1: 边梁
58
+ MiddleSameWithSide: 中梁构造同边梁,1=相同,0=不同
59
+ H2, Bf2, Bb2, Tf2, Tb2, Tw2, WebRibPos2: 中梁(MiddleSameWithSide=1 时 H2 等可填 0)
60
+ """
61
+ pass
62
+
63
+ @REGISTRY.register("Section")
64
+ def osis_section_composite_steel_trough(
65
+ Index: int,
66
+ Name: str,
67
+ Type: Literal["COMPOSITESTEELTROUGH"],
68
+ Bt: float,
69
+ Bc: float,
70
+ Tt1: float,
71
+ Tt2: float,
72
+ Tt3: float,
73
+ Tc1: float,
74
+ Tc2: float,
75
+ B1: float,
76
+ B2: float,
77
+ x1: float,
78
+ x2: float,
79
+ x3: float,
80
+ H1: float,
81
+ Bb: float,
82
+ Bf1: float,
83
+ Tf1: float,
84
+ Tb: float,
85
+ Tw1: float,
86
+ RightSameWithLeft: Literal[0, 1],
87
+ HasSteelI: Literal[0, 1],
88
+ H2: float,
89
+ Bf2: float,
90
+ Bf3: float,
91
+ Tf2: float,
92
+ Tf3: float,
93
+ Tw2: float,
94
+ ):
95
+ """定义或修改槽型钢组合截面(COMPOSITESTEELTROUGH)。
96
+
97
+ Args:
98
+ Index: 截面编号
99
+ Name: 截面名
100
+ Type: 固定为 COMPOSITESTEELTROUGH
101
+ Bt: 板宽
102
+ Bc: 悬臂长
103
+ Tt1: 标准段板厚
104
+ Tt2: 两侧加厚段板厚
105
+ Tt3: 中间加厚段板厚
106
+ Tc1: 悬臂端板厚
107
+ Tc2: 悬臂倒角处板厚
108
+ B1: 两侧加厚段板宽
109
+ B2: 中间加厚段板宽
110
+ x1, x2, x3: 倒角
111
+ H1: 主梁梁高
112
+ Bb: 主梁底板宽
113
+ Bf1: 主梁上翼缘宽
114
+ Tf1: 主梁上翼缘厚
115
+ Tb: 主梁底板厚
116
+ Tw1: 主梁腹板厚
117
+ RightSameWithLeft: 右腹板加劲肋布置是否与左侧相同,1=相同,0=不同
118
+ HasSteelI: 是否有小纵梁,1=有,0=无
119
+ H2, Bf2, Bf3, Tf2, Tf3, Tw2: 小纵梁(HasSteelI=0 时可填 0)
120
+ """
121
+ pass
122
+ @REGISTRY.register("Section")
123
+ def osis_section_composite_steel_box(
124
+ Index: int,
125
+ Name: str,
126
+ Type: Literal["COMPOSITESTEELBOX"],
127
+ Bt: float,
128
+ Bc: float,
129
+ Tt1: float,
130
+ Tt2: float,
131
+ Tt3: float,
132
+ Tc1: float,
133
+ Tc2: float,
134
+ B1: float,
135
+ B2: float,
136
+ x1: float,
137
+ x2: float,
138
+ x3: float,
139
+ GirderNum: Literal["SINGLE", "DOUBLE", "TRIPLE"],
140
+ H1: float,
141
+ Bf1: float,
142
+ Bct: float,
143
+ Bb: float,
144
+ Bcb: float,
145
+ Tf1: float,
146
+ Tb: float,
147
+ Tw1: float,
148
+ SameLayout: Literal[0, 1],
149
+ H2: float,
150
+ Bf2: float,
151
+ Bf3: float,
152
+ Tf2: float,
153
+ Tf3: float,
154
+ Tw2: float,
155
+ ):
156
+ """定义或修改箱型钢组合截面(COMPOSITESTEELBOX)。
157
+
158
+ Args:
159
+ Index: 截面编号
160
+ Name: 截面名
161
+ Type: 固定为 COMPOSITESTEELBOX
162
+ Bt: 板宽
163
+ Bc: 悬臂长
164
+ Tt1: 标准段板厚
165
+ Tt2: 两侧加厚段板厚
166
+ Tt3: 中间加厚段板厚
167
+ Tc1: 悬臂端板厚
168
+ Tc2: 悬臂倒角处板厚
169
+ B1: 两侧加厚段板宽
170
+ B2: 中间加厚段板宽
171
+ x1, x2, x3: 倒角
172
+ GirderNum: SINGLE=单梁, DOUBLE=双梁, TRIPLE=三梁
173
+ H1: 主梁梁高
174
+ Bf1: 主梁上翼缘宽
175
+ Bct: 主梁上翼缘悬出宽
176
+ Bb: 主梁下翼缘宽
177
+ Bcb: 主梁下翼缘悬出宽
178
+ Tf1: 主梁上翼缘厚
179
+ Tb: 主梁下翼缘厚
180
+ Tw1: 主梁腹板厚
181
+ SameLayout: 下翼缘加劲肋布置与上翼缘是否相同,1=相同,0=不同
182
+ H2, Bf2, Bf3, Tf2, Tf3, Tw2: 小纵梁/次梁(单梁时可填 0)
183
+ """
184
+ pass
185
+
186
+ @REGISTRY.register("Section")
187
+ def osis_section_composite_custom(
188
+ Index: int,
189
+ Name: str,
190
+ Type: Literal["COMPOSITECUSTOM"],
191
+ PartNum: int,
192
+ BaseE: float,
193
+ BaseMu: float,
194
+ ):
195
+ """定义或修改自定义组合截面(COMPOSITECUSTOM)。"""
196
+ pass
197
+
198
+
199
+ @REGISTRY.register("SectionPart")
200
+ def osis_section_part_polygon(
201
+ SecIndex: int,
202
+ PartIndex: int,
203
+ PartMatType: Literal["Concrete", "Steel"],
204
+ PartE: float,
205
+ PartMu: float,
206
+ PartDensity: float,
207
+ PartGeoType: Literal["Polygon"],
208
+ ContourMatrix: str,
209
+ ContourWidth: str,
210
+ ):
211
+ """自定义组合截面 - 面域 Part(Polygon)。"""
212
+ pass
213
+
214
+
215
+ @REGISTRY.register("SectionPart")
216
+ def osis_section_part_line(
217
+ SecIndex: int,
218
+ PartIndex: int,
219
+ PartMatType: Literal["Concrete", "Steel"],
220
+ PartE: float,
221
+ PartMu: float,
222
+ PartDensity: float,
223
+ PartGeoType: Literal["Line"],
224
+ PointMatrix: str,
225
+ LineMatrix: str,
226
+ WidthMatrix: str,
227
+ ):
228
+ """自定义组合截面 - 线域 Part(Line)。"""
229
+ pass