osis-python 0.3.8__tar.gz → 0.3.9__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 (101) hide show
  1. {osis_python-0.3.8/src/osis_python.egg-info → osis_python-0.3.9}/PKG-INFO +1 -1
  2. {osis_python-0.3.8 → osis_python-0.3.9/src/osis_python.egg-info}/PKG-INFO +1 -1
  3. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/__init__.py +1 -1
  4. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/section/manager.py +46 -4
  5. {osis_python-0.3.8 → osis_python-0.3.9}/LICENSE +0 -0
  6. {osis_python-0.3.8 → osis_python-0.3.9}/README.md +0 -0
  7. {osis_python-0.3.8 → osis_python-0.3.9}/pyproject.toml +0 -0
  8. {osis_python-0.3.8 → osis_python-0.3.9}/setup.cfg +0 -0
  9. {osis_python-0.3.8 → osis_python-0.3.9}/src/osis_python.egg-info/SOURCES.txt +0 -0
  10. {osis_python-0.3.8 → osis_python-0.3.9}/src/osis_python.egg-info/dependency_links.txt +0 -0
  11. {osis_python-0.3.8 → osis_python-0.3.9}/src/osis_python.egg-info/requires.txt +0 -0
  12. {osis_python-0.3.8 → osis_python-0.3.9}/src/osis_python.egg-info/top_level.txt +0 -0
  13. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/boundary/__init__.py +0 -0
  14. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/boundary/interface.py +0 -0
  15. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/boundary/manager.py +0 -0
  16. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/control/__init__.py +0 -0
  17. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/control/control.py +0 -0
  18. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/control/io.py +0 -0
  19. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/control/manager.py +0 -0
  20. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/control/nonlinear.py +0 -0
  21. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/core/__init__.py +0 -0
  22. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/core/all_func.py +0 -0
  23. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/core/client.py +0 -0
  24. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/core/command.py +0 -0
  25. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/core/engine.py +0 -0
  26. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/dynamic/__init__.py +0 -0
  27. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/dynamic/load_to_mass.py +0 -0
  28. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/dynamic/manager.py +0 -0
  29. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/dynamic/modal.py +0 -0
  30. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/dynamic/seismic.py +0 -0
  31. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/element/__init__.py +0 -0
  32. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/element/interface.py +0 -0
  33. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/element/manager.py +0 -0
  34. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/general/__init__.py +0 -0
  35. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/general/interface.py +0 -0
  36. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/geometry/__init__.py +0 -0
  37. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/geometry/interface.py +0 -0
  38. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/geometry/manager.py +0 -0
  39. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/live/__init__.py +0 -0
  40. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/live/analysis.py +0 -0
  41. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/live/grade.py +0 -0
  42. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/live/lane.py +0 -0
  43. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/live/manager.py +0 -0
  44. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/load/__init__.py +0 -0
  45. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/load/loadcase.py +0 -0
  46. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/load/manager.py +0 -0
  47. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/load/static.py +0 -0
  48. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/load/tendon.py +0 -0
  49. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/material/__init__.py +0 -0
  50. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/material/interface.py +0 -0
  51. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/material/manager.py +0 -0
  52. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/node/__init__.py +0 -0
  53. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/node/interface.py +0 -0
  54. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/node/manager.py +0 -0
  55. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/post/__init__.py +0 -0
  56. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/post/combine.py +0 -0
  57. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/post/design_check.py +0 -0
  58. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/post/display.py +0 -0
  59. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/post/manager.py +0 -0
  60. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/project/__init__.py +0 -0
  61. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/project/interface.py +0 -0
  62. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/project/manager.py +0 -0
  63. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/property/__init__.py +0 -0
  64. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/property/component_thickness.py +0 -0
  65. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/property/coordinate.py +0 -0
  66. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/property/creep_shrink.py +0 -0
  67. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/property/damping.py +0 -0
  68. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/property/manager.py +0 -0
  69. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/property/pu_curve.py +0 -0
  70. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/quick_building/__init__.py +0 -0
  71. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/quick_building/interface.py +0 -0
  72. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/result/__init__.py +0 -0
  73. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/result/check.py +0 -0
  74. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/result/env.py +0 -0
  75. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/result/loadcase.py +0 -0
  76. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/result/manager.py +0 -0
  77. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/result/result.py +0 -0
  78. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/section/__init__.py +0 -0
  79. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/section/common.py +0 -0
  80. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/section/numeric.py +0 -0
  81. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/section/param.py +0 -0
  82. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/section/rebar.py +0 -0
  83. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/section/rib.py +0 -0
  84. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/section/steel.py +0 -0
  85. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/settlement/__init__.py +0 -0
  86. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/settlement/interface.py +0 -0
  87. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/settlement/manager.py +0 -0
  88. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/stability/__init__.py +0 -0
  89. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/stability/buckling.py +0 -0
  90. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/stability/manager.py +0 -0
  91. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/stage/__init__.py +0 -0
  92. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/stage/define.py +0 -0
  93. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/stage/manager.py +0 -0
  94. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/stage/overall.py +0 -0
  95. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/thickness/__init__.py +0 -0
  96. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/thickness/interface.py +0 -0
  97. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/thickness/manager.py +0 -0
  98. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/transfer/__init__.py +0 -0
  99. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/transfer/command_map.py +0 -0
  100. {osis_python-0.3.8 → osis_python-0.3.9}/src/pyosis/transfer/generator.py +0 -0
  101. {osis_python-0.3.8 → osis_python-0.3.9}/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.8
3
+ Version: 0.3.9
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.8
3
+ Version: 0.3.9
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
@@ -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.8"
10
+ __version__ = "0.3.9"
11
11
  __author__ = "CCCC Highway Consultant Co. Ltd." # 中交公路规划设计院 - 工程技术研究中心 - lzh - wjh - myf
12
12
 
13
13
  from .core.engine import OSISEngine
@@ -106,6 +106,39 @@ class SectionType(Enum):
106
106
 
107
107
  NUMERICAL = 51 # 数值截面
108
108
 
109
+ @dataclass(frozen=False)
110
+ class Rebar:
111
+ """钢筋基类"""
112
+ has_bent_up_rebar: bool # 是否有弯起钢筋
113
+ has_shear_stirrup: bool # 是否有抗剪箍筋
114
+ has_torsional_stirrup: bool # 是否有扭转箍筋
115
+ has_web_vertical_rebar: bool # 是否有腹板竖筋
116
+ longitudinal_rebars: list[dict] # 纵筋
117
+ longitudinal_rebars_count: int # 纵筋数量
118
+ @staticmethod
119
+ def empty() -> Rebar:
120
+ """无钢筋信息时的占位对象(内部使用)"""
121
+ return Rebar(
122
+ has_bent_up_rebar=False,
123
+ has_shear_stirrup=False,
124
+ has_torsional_stirrup=False,
125
+ has_web_vertical_rebar=False,
126
+ longitudinal_rebars=[],
127
+ longitudinal_rebars_count=0,
128
+ )
129
+ @classmethod
130
+ def _from_dict(cls, d: dict) -> Rebar:
131
+ """从接口 dict 构造 Rebar 对象(内部使用)"""
132
+ lr = d.get("longitudinalRebars")
133
+ cnt = d.get("longitudinalRebarsCount")
134
+ return cls(
135
+ has_bent_up_rebar=bool(d.get("hasBentUpRebar")),
136
+ has_shear_stirrup=bool(d.get("hasShearStirrup")),
137
+ has_torsional_stirrup=bool(d.get("hasTorsionalStirrup")),
138
+ has_web_vertical_rebar=bool(d.get("hasWebVerticalRebar")),
139
+ longitudinal_rebars=list(lr) if isinstance(lr, list) else [],
140
+ longitudinal_rebars_count=int(cnt) if cnt is not None else 0,
141
+ )
109
142
 
110
143
  # ──────────────────────────────────────────────
111
144
  # Section 基类
@@ -138,11 +171,19 @@ class Section:
138
171
  has_concrete_section: bool # 是否有混凝土截面
139
172
  has_steel_section: bool # 是否有钢截面
140
173
  related_elements: list[int] # 相关单元
141
-
174
+ rebar: Rebar # 钢筋
142
175
  @classmethod
143
176
  def _from_dict(cls, d: dict) -> Section:
144
177
  """从接口 dict 构造 Section 对象(内部使用)"""
145
178
  raw_type = int(d.get("type", 0))
179
+ sp = d.get("stressPoints")
180
+ ct = d.get("contour")
181
+ rel = d.get("relatedElement")
182
+ raw_rebar = d.get("rebar")
183
+ if isinstance(raw_rebar, dict):
184
+ rebar_obj = Rebar._from_dict(raw_rebar)
185
+ else:
186
+ rebar_obj = Rebar.empty()
146
187
  return cls(
147
188
  no=d.get("no"),
148
189
  name=d.get("name"),
@@ -153,15 +194,16 @@ class Section:
153
194
  offset_value_y=d.get("offsetValueY"),
154
195
  offset_type_z=d.get("offsetTypeZ"),
155
196
  offset_value_z=d.get("offsetValueZ"),
156
- stress_points=list(d.get("stressPoints")),
197
+ stress_points=list(sp) if isinstance(sp, list) else [],
157
198
  boundary=d.get("boundary"),
158
199
  height=d.get("height"),
159
200
  modeling_point_x=d.get("modelingPointX"),
160
201
  modeling_point_y=d.get("modelingPointY"),
161
- contour=list(d.get("contour")),
202
+ contour=list(ct) if isinstance(ct, list) else [],
162
203
  has_concrete_section=d.get("hasConcreteSection"),
163
204
  has_steel_section=d.get("hasSteelSection"),
164
- related_elements=list(d.get("relatedElement")),
205
+ related_elements=list(rel) if isinstance(rel, list) else [],
206
+ rebar = rebar_obj,
165
207
  )
166
208
 
167
209
  def __repr__(self) -> str:
File without changes
File without changes
File without changes
File without changes