stbkit 0.1.0a9.dev1__py3-none-any.whl
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.
- stbkit/__main__.py +10 -0
- stbkit/api/__init__.py +48 -0
- stbkit/api/experimental/__init__.py +19 -0
- stbkit/api/experimental/repository/__init__.py +30 -0
- stbkit/api/py.typed +0 -0
- stbkit/api/stb_latest.py +7 -0
- stbkit/api/stb_v2_0_2.py +11 -0
- stbkit/api/stb_v2_1_1.py +9 -0
- stbkit/cli/__init__.py +17 -0
- stbkit/cli/_internal/cli_main.py +114 -0
- stbkit/cli/_internal/common.py +126 -0
- stbkit/cli/_internal/constants_exit_code.py +59 -0
- stbkit/cli/_internal/converter.py +693 -0
- stbkit/cli/_internal/diff.py +213 -0
- stbkit/cli/_internal/entry_points.py +25 -0
- stbkit/cli/_internal/global_parent.py +70 -0
- stbkit/cli/_internal/show_versions.py +36 -0
- stbkit/cli/_internal/validate.py +310 -0
- stbkit/cli/commands/convert.py +16 -0
- stbkit/cli/commands/diff.py +16 -0
- stbkit/cli/commands/validate.py +16 -0
- stbkit/cli/py.typed +0 -0
- stbkit/tools/__init__.py +12 -0
- stbkit/tools/_internal/__init__.py +5 -0
- stbkit/tools/_internal/constants.py +21 -0
- stbkit/tools/_internal/data_model/building_geometry.py +1208 -0
- stbkit/tools/_internal/data_model/building_geometry_web.py +106 -0
- stbkit/tools/_internal/data_model/element_data.py +93 -0
- stbkit/tools/_internal/data_model/ifc_data/entity_data.py +67 -0
- stbkit/tools/_internal/data_model/ifc_data/entity_names.py +32 -0
- stbkit/tools/_internal/data_model/shape_data.py +1089 -0
- stbkit/tools/_internal/diff/__init__.py +5 -0
- stbkit/tools/_internal/diff/common.py +50 -0
- stbkit/tools/_internal/diff/diff_xml.py +796 -0
- stbkit/tools/_internal/matrix.py +51 -0
- stbkit/tools/_internal/optional_dependencies/__init__.py +5 -0
- stbkit/tools/_internal/optional_dependencies/ifc_common.py +28 -0
- stbkit/tools/_internal/optional_dependencies/ifc_exporter/ifc_entity_exporter.py +473 -0
- stbkit/tools/_internal/optional_dependencies/ifc_exporter/ifc_profile_exporter.py +267 -0
- stbkit/tools/_internal/optional_dependencies/ifc_exporter/ifc_representation_exporter.py +178 -0
- stbkit/tools/_internal/optional_dependencies/ifc_pipeline.py +133 -0
- stbkit/tools/_internal/optional_dependencies/ifc_to_building_geometry.py +64 -0
- stbkit/tools/_internal/stb_io.py +116 -0
- stbkit/tools/_internal/stb_repair/_common.py +24 -0
- stbkit/tools/_internal/stb_repair/_stb_repair.py +197 -0
- stbkit/tools/_internal/stb_repair/_stb_v2_0_2_repair.py +53 -0
- stbkit/tools/_internal/stb_repair/_stb_v2_1_0_repair.py +109 -0
- stbkit/tools/_internal/stb_repair/_stb_v2_1_1_repair.py +109 -0
- stbkit/tools/_internal/studio_report.py +49 -0
- stbkit/tools/_internal/utils/atomic_writer.py +57 -0
- stbkit/tools/_internal/utils/float_rounding.py +49 -0
- stbkit/tools/_internal/utils/girder_utils.py +91 -0
- stbkit/tools/_internal/utils/guid_utils.py +30 -0
- stbkit/tools/_internal/utils/mesh_utils.py +1305 -0
- stbkit/tools/_internal/utils/node_utils.py +50 -0
- stbkit/tools/_internal/utils/unit_utils.py +23 -0
- stbkit/tools/_internal/vectors.py +222 -0
- stbkit/tools/converters/__init__.py +39 -0
- stbkit/tools/converters/_internal/__init__.py +5 -0
- stbkit/tools/converters/_internal/building_geometry_to_ply_text.py +32 -0
- stbkit/tools/converters/_internal/coord_converter.py +151 -0
- stbkit/tools/converters/_internal/element_data_to_building_geometry.py +549 -0
- stbkit/tools/converters/_internal/ifc_to_ply_text.py +21 -0
- stbkit/tools/converters/_internal/name_converter.py +23 -0
- stbkit/tools/converters/_internal/pipeline/__init__.py +5 -0
- stbkit/tools/converters/_internal/pipeline/data.py +188 -0
- stbkit/tools/converters/_internal/pipeline/execution.py +569 -0
- stbkit/tools/converters/_internal/pipeline/ply_pipeline.py +52 -0
- stbkit/tools/converters/_internal/pipeline/stb_pipeline.py +226 -0
- stbkit/tools/converters/_internal/pipeline/stb_pipeline_latest.py +39 -0
- stbkit/tools/converters/_internal/pipeline/step.py +139 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/__init__.py +17 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/_stb_latest_to_element_data.py +186 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/member/member_footing.py +49 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/member/member_line.py +533 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/member/member_pile.py +100 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/member/member_plane.py +103 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/open.py +70 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec.py +214 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_beam_rc.py +67 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_beam_s.py +97 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_beam_src.py +28 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_brace_s.py +49 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_column_cft.py +217 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_column_rc.py +41 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_column_s.py +127 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_column_src.py +173 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_foundation.py +225 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_parapet_rc.py +53 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_pile_rc.py +106 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_pile_s.py +100 -0
- stbkit/tools/converters/_internal/stb_latest_to_element_data/section/sec_steel.py +432 -0
- stbkit/tools/converters/_internal/stb_to_building_geometry.py +44 -0
- stbkit/tools/converters/_internal/stb_to_ifc_data/__init__.py +5 -0
- stbkit/tools/converters/_internal/stb_to_ifc_data/_stb_to_ifc_data.py +59 -0
- stbkit/tools/converters/_internal/stb_to_ifc_data/convert_option.py +22 -0
- stbkit/tools/converters/_internal/stb_to_ply_text.py +22 -0
- stbkit/tools/py.typed +0 -0
- stbkit/tools/upgrade/__init__.py +13 -0
- stbkit/tools/upgrade/_internal/__init__.py +5 -0
- stbkit/tools/upgrade/_internal/common.py +205 -0
- stbkit/tools/upgrade/_internal/upgrade.py +228 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/__init__.py +60 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/hook_common.py +62 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/hook_joint_beam_shape_h.py +44 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/hook_sec_pile_rc.py +101 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/hook_sec_pile_s.py +78 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/hook_sec_slab_deck.py +56 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/hook_sec_slab_rc.py +128 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/post_girder.py +126 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/post_open.py +110 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/post_sec_beam_rc.py +227 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hook_funcs/post_sec_beam_s.py +1153 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/hooks.py +22 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/post.py +42 -0
- stbkit/tools/upgrade/_internal/v2_0_2_to_v2_1_0/tables.py +99 -0
- stbkit/tools/upgrade/_internal/v2_1_0_to_v2_1_1/__init__.py +58 -0
- stbkit/tools/upgrade/_internal/v2_1_0_to_v2_1_1/hooks.py +32 -0
- stbkit/tools/upgrade/_internal/v2_1_0_to_v2_1_1/tables.py +56 -0
- stbkit-0.1.0a9.dev1.dist-info/METADATA +196 -0
- stbkit-0.1.0a9.dev1.dist-info/RECORD +125 -0
- stbkit-0.1.0a9.dev1.dist-info/WHEEL +5 -0
- stbkit-0.1.0a9.dev1.dist-info/entry_points.txt +2 -0
- stbkit-0.1.0a9.dev1.dist-info/licenses/LICENSE +373 -0
- stbkit-0.1.0a9.dev1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Copyright 2025-2026 TAISEI CORPORATION
|
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
|
3
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
from stbkit.core.data_model import stb_v2_0_2, stb_v2_1_0
|
|
8
|
+
from stbkit.core.data_model.common import StBridgeElement
|
|
9
|
+
from stbkit.core.stb_exceptions import NoneAccessError
|
|
10
|
+
from stbkit.core.stb_reporting import Reporter
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def convert_sec_pile_rc(
|
|
14
|
+
v202: stb_v2_0_2.StbSecPileRc, v210: stb_v2_1_0.StbSecPileRc
|
|
15
|
+
) -> None:
|
|
16
|
+
v202_figure: stb_v2_0_2.StbSecFigurePileRc | None = (
|
|
17
|
+
v202.stb_sec_figure_pile_rc_or_none
|
|
18
|
+
)
|
|
19
|
+
if v202_figure:
|
|
20
|
+
v210_conventional: stb_v2_1_0.StbSecPileRcConventional = (
|
|
21
|
+
stb_v2_1_0.StbSecPileRcConventional(
|
|
22
|
+
strength_concrete=v202.strength_concrete_or_none
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
v210.stb_sec_pile_rc_conventional = v210_conventional
|
|
26
|
+
v210_figure: stb_v2_1_0.StbSecFigurePileRcConventional = (
|
|
27
|
+
stb_v2_1_0.StbSecFigurePileRcConventional(
|
|
28
|
+
length_pipe=v202_figure.length_pipe_or_none,
|
|
29
|
+
t_pipe=v202_figure.t_pipe_or_none,
|
|
30
|
+
strength_pipe=v202_figure.strength_pipe_or_none,
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
v210_conventional.stb_sec_figure_pile_rc_conventional = v210_figure
|
|
34
|
+
v202_straight: stb_v2_0_2.StbSecPileRcStraight | None = (
|
|
35
|
+
v202_figure.stb_sec_pile_rc_straight_or_none
|
|
36
|
+
)
|
|
37
|
+
if v202_straight:
|
|
38
|
+
v210_straight: stb_v2_1_0.StbSecPileRcConventionalStraight = (
|
|
39
|
+
stb_v2_1_0.StbSecPileRcConventionalStraight(d=v202_straight.d)
|
|
40
|
+
)
|
|
41
|
+
v210_figure.stb_sec_pile_rc_conventional_straight = v210_straight
|
|
42
|
+
v202_extend_foot: stb_v2_0_2.StbSecPileRcExtendedFoot | None = (
|
|
43
|
+
v202_figure.stb_sec_pile_rc_extended_foot_or_none
|
|
44
|
+
)
|
|
45
|
+
if v202_extend_foot:
|
|
46
|
+
v210_extend_foot: stb_v2_1_0.StbSecPileRcConventionalExtendedFoot = stb_v2_1_0.StbSecPileRcConventionalExtendedFoot(
|
|
47
|
+
d_extended_foot=v202_extend_foot.d_extended_foot_or_none,
|
|
48
|
+
d_axial=v202_extend_foot.d_axial_or_none,
|
|
49
|
+
length_extended_foot=v202_extend_foot.length_extended_foot_or_none,
|
|
50
|
+
angle_extended_foot_taper=v202_extend_foot.angle_extended_foot_taper_or_none,
|
|
51
|
+
)
|
|
52
|
+
v210_figure.stb_sec_pile_rc_conventional_extended_foot = v210_extend_foot
|
|
53
|
+
v202_extend_top: stb_v2_0_2.StbSecPileRcExtendedTop | None = (
|
|
54
|
+
v202_figure.stb_sec_pile_rc_extended_top_or_none
|
|
55
|
+
)
|
|
56
|
+
if v202_extend_top:
|
|
57
|
+
v210_extend_top: stb_v2_1_0.StbSecPileRcConventionalExtendedTop = stb_v2_1_0.StbSecPileRcConventionalExtendedTop(
|
|
58
|
+
d_extended_top=v202_extend_top.d_extended_top_or_none,
|
|
59
|
+
d_axial=v202_extend_top.d_axial_or_none,
|
|
60
|
+
angle_extended_top_taper=v202_extend_top.angle_extended_top_taper_or_none,
|
|
61
|
+
)
|
|
62
|
+
v210_figure.stb_sec_pile_rc_conventional_extended_top = v210_extend_top
|
|
63
|
+
v202_extend_top_foot: stb_v2_0_2.StbSecPileRcExtendedTopFoot | None = (
|
|
64
|
+
v202_figure.stb_sec_pile_rc_extended_top_foot_or_none
|
|
65
|
+
)
|
|
66
|
+
if v202_extend_top_foot:
|
|
67
|
+
v210_extend_top_foot: stb_v2_1_0.StbSecPileRcConventionalExtendedTopFoot = stb_v2_1_0.StbSecPileRcConventionalExtendedTopFoot(
|
|
68
|
+
d_extended_top=v202_extend_top_foot.d_extended_top_or_none,
|
|
69
|
+
d_axial=v202_extend_top_foot.d_axial_or_none,
|
|
70
|
+
d_extended_foot=v202_extend_top_foot.d_extended_foot_or_none,
|
|
71
|
+
length_extended_foot=v202_extend_top_foot.length_extended_foot_or_none,
|
|
72
|
+
angle_extended_foot_taper=v202_extend_top_foot.angle_extended_foot_taper_or_none,
|
|
73
|
+
angle_extended_top_taper=v202_extend_top_foot.angle_extended_top_taper_or_none,
|
|
74
|
+
)
|
|
75
|
+
v210_figure.stb_sec_pile_rc_conventional_extended_top_foot = (
|
|
76
|
+
v210_extend_top_foot
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def post_sec_pile_rc(v202: stb_v2_0_2.StBridge, v210: stb_v2_1_0.StBridge) -> None:
|
|
81
|
+
try:
|
|
82
|
+
v202_list: list[stb_v2_0_2.StbSecPileRc] = (
|
|
83
|
+
v202.stb_model.stb_sections.stb_sec_pile_rc
|
|
84
|
+
)
|
|
85
|
+
v210_list: list[stb_v2_1_0.StbSecPileRc] = (
|
|
86
|
+
v210.stb_model.stb_sections.stb_sec_pile_rc
|
|
87
|
+
)
|
|
88
|
+
except NoneAccessError:
|
|
89
|
+
return
|
|
90
|
+
for v202_sec_pile, v210_sec_pile in zip(v202_list, v210_list):
|
|
91
|
+
convert_sec_pile_rc(v202_sec_pile, v210_sec_pile)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def sec_pile_rc(
|
|
95
|
+
before: StBridgeElement, after: StBridgeElement, *, reporter: Reporter
|
|
96
|
+
) -> None:
|
|
97
|
+
if not isinstance(before, stb_v2_0_2.StbSecPileRc) or not isinstance(
|
|
98
|
+
after, stb_v2_1_0.StbSecPileRc
|
|
99
|
+
):
|
|
100
|
+
return
|
|
101
|
+
convert_sec_pile_rc(before, after)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Copyright 2025-2026 TAISEI CORPORATION
|
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
|
3
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
from stbkit.core.data_model import stb_v2_0_2, stb_v2_1_0
|
|
8
|
+
from stbkit.core.data_model.common import StBridgeElement
|
|
9
|
+
from stbkit.core.stb_exceptions import NoneAccessError
|
|
10
|
+
from stbkit.core.stb_reporting import Reporter
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def convert_sec_pile_s(
|
|
14
|
+
v202: stb_v2_0_2.StbSecPileS, v210: stb_v2_1_0.StbSecPileS
|
|
15
|
+
) -> None:
|
|
16
|
+
v202_figure: stb_v2_0_2.StbSecFigurePileS | None = (
|
|
17
|
+
v202.stb_sec_figure_pile_s_or_none
|
|
18
|
+
)
|
|
19
|
+
if v202_figure:
|
|
20
|
+
v210_conventional: stb_v2_1_0.StbSecPileSConventional = (
|
|
21
|
+
stb_v2_1_0.StbSecPileSConventional()
|
|
22
|
+
)
|
|
23
|
+
v210.stb_sec_pile_s_conventional = v210_conventional
|
|
24
|
+
v210_figure: stb_v2_1_0.StbSecFigurePileS = stb_v2_1_0.StbSecFigurePileS()
|
|
25
|
+
v210_conventional.stb_sec_figure_pile_s = v210_figure
|
|
26
|
+
for v202_straight in v202_figure.stb_sec_pile_s_straight:
|
|
27
|
+
v210_straight = stb_v2_1_0.StbSecPileSStraight(
|
|
28
|
+
id_order=v202_straight.id_order,
|
|
29
|
+
length_pile=v202_straight.length_pile_or_none,
|
|
30
|
+
d=v202_straight.d_or_none,
|
|
31
|
+
t=v202_straight.t_or_none,
|
|
32
|
+
strength=v202_straight.strength_or_none,
|
|
33
|
+
)
|
|
34
|
+
v210_figure.stb_sec_pile_s_straight.append(v210_straight)
|
|
35
|
+
for v202_rotational in v202_figure.stb_sec_pile_s_rotational:
|
|
36
|
+
v210_rotational = stb_v2_1_0.StbSecPileSRotational(
|
|
37
|
+
id_order=v202_rotational.id_order,
|
|
38
|
+
length_pile=v202_rotational.length_pile_or_none,
|
|
39
|
+
d1=v202_rotational.d1_or_none,
|
|
40
|
+
d2=v202_rotational.d2_or_none,
|
|
41
|
+
t=v202_rotational.t_or_none,
|
|
42
|
+
strength=v202_rotational.strength_or_none,
|
|
43
|
+
)
|
|
44
|
+
v210_figure.stb_sec_pile_s_rotational.append(v210_rotational)
|
|
45
|
+
for v202_taper in v202_figure.stb_sec_pile_s_taper:
|
|
46
|
+
v210_taper = stb_v2_1_0.StbSecPileSTaper(
|
|
47
|
+
id_order=v202_taper.id_order,
|
|
48
|
+
length_pile=v202_taper.length_pile_or_none,
|
|
49
|
+
d1=v202_taper.d1_or_none,
|
|
50
|
+
d2=v202_taper.d2_or_none,
|
|
51
|
+
t=v202_taper.t_or_none,
|
|
52
|
+
strength=v202_taper.strength_or_none,
|
|
53
|
+
)
|
|
54
|
+
v210_figure.stb_sec_pile_s_taper.append(v210_taper)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def post_sec_pile_s(v202: stb_v2_0_2.StBridge, v210: stb_v2_1_0.StBridge) -> None:
|
|
58
|
+
try:
|
|
59
|
+
v202_list: list[stb_v2_0_2.StbSecPileS] = (
|
|
60
|
+
v202.stb_model.stb_sections.stb_sec_pile_s
|
|
61
|
+
)
|
|
62
|
+
v210_list: list[stb_v2_1_0.StbSecPileS] = (
|
|
63
|
+
v210.stb_model.stb_sections.stb_sec_pile_s
|
|
64
|
+
)
|
|
65
|
+
except NoneAccessError:
|
|
66
|
+
return
|
|
67
|
+
for v202_sec_pile, v210_sec_pile in zip(v202_list, v210_list):
|
|
68
|
+
convert_sec_pile_s(v202_sec_pile, v210_sec_pile)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def sec_pile_s(
|
|
72
|
+
before: StBridgeElement, after: StBridgeElement, *, reporter: Reporter
|
|
73
|
+
) -> None:
|
|
74
|
+
if not isinstance(before, stb_v2_0_2.StbSecPileS) or not isinstance(
|
|
75
|
+
after, stb_v2_1_0.StbSecPileS
|
|
76
|
+
):
|
|
77
|
+
return
|
|
78
|
+
convert_sec_pile_s(before, after)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Copyright 2026 TAISEI CORPORATION
|
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
|
3
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
from stbkit.core.data_model import stb_v2_0_2, stb_v2_1_0
|
|
8
|
+
from stbkit.core.data_model.common import StBridgeElement
|
|
9
|
+
from stbkit.core.stb_exceptions import NoneAccessError
|
|
10
|
+
from stbkit.core.stb_reporting import Code, Phase, Reporter
|
|
11
|
+
|
|
12
|
+
from ....._internal.constants import UNKNOWN_ELEMENT_SIZE_MM
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def sec_slab_deck(
|
|
16
|
+
before: StBridgeElement, after: StBridgeElement, *, reporter: Reporter
|
|
17
|
+
) -> None:
|
|
18
|
+
if not isinstance(before, stb_v2_0_2.StbSecSlabDeck) or not isinstance(
|
|
19
|
+
after, stb_v2_1_0.StbSecSlabDeck
|
|
20
|
+
):
|
|
21
|
+
return
|
|
22
|
+
use_default_length_by_can_not_calc_flag: bool = False
|
|
23
|
+
use_default_length_by_error_calc_flag: bool = False
|
|
24
|
+
try:
|
|
25
|
+
top_concrete: float = (
|
|
26
|
+
before.stb_sec_figure_slab_deck.stb_sec_slab_deck_straight.depth
|
|
27
|
+
)
|
|
28
|
+
top_concrete -= before.stb_sec_product_slab_deck.depth_deck
|
|
29
|
+
if top_concrete <= 0:
|
|
30
|
+
use_default_length_by_error_calc_flag = True
|
|
31
|
+
except NoneAccessError:
|
|
32
|
+
use_default_length_by_can_not_calc_flag = True
|
|
33
|
+
|
|
34
|
+
for deck_product in after.stb_sec_slab_deck_product:
|
|
35
|
+
deck_product.release_time = "Undefined"
|
|
36
|
+
if use_default_length_by_can_not_calc_flag:
|
|
37
|
+
reporter.warning(
|
|
38
|
+
f"デッキスラブの厚みが算出できなかったため、デフォルト値{UNKNOWN_ELEMENT_SIZE_MM}mmを使用します",
|
|
39
|
+
code=Code.REPAIR_LOG,
|
|
40
|
+
phase=Phase.REPAIR,
|
|
41
|
+
value=str(top_concrete),
|
|
42
|
+
stb_element=deck_product,
|
|
43
|
+
)
|
|
44
|
+
deck_product.top_concrete = UNKNOWN_ELEMENT_SIZE_MM
|
|
45
|
+
elif use_default_length_by_error_calc_flag:
|
|
46
|
+
reporter.warning(
|
|
47
|
+
f"デッキスラブの厚みが0以下となったため、デフォルト値{UNKNOWN_ELEMENT_SIZE_MM}mmを使用します",
|
|
48
|
+
code=Code.REPAIR_LOG,
|
|
49
|
+
phase=Phase.REPAIR,
|
|
50
|
+
value=str(UNKNOWN_ELEMENT_SIZE_MM),
|
|
51
|
+
ref_value=str(top_concrete),
|
|
52
|
+
stb_element=after,
|
|
53
|
+
)
|
|
54
|
+
deck_product.top_concrete = UNKNOWN_ELEMENT_SIZE_MM
|
|
55
|
+
else:
|
|
56
|
+
deck_product.top_concrete = top_concrete
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Copyright 2025-2026 TAISEI CORPORATION
|
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
|
3
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
from stbkit.core.data_model import stb_v2_0_2, stb_v2_1_0
|
|
8
|
+
from stbkit.core.data_model.common import StBridgeElement
|
|
9
|
+
from stbkit.core.stb_reporting import Code, Phase, Reporter
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def convert_sec_figure_slab_rc(
|
|
13
|
+
v202: stb_v2_0_2.StbSecFigureSlabRc, *, reporter: Reporter
|
|
14
|
+
) -> stb_v2_1_0.StbSecFigureSlabRcConventional | None:
|
|
15
|
+
v210: stb_v2_1_0.StbSecFigureSlabRcConventional = (
|
|
16
|
+
stb_v2_1_0.StbSecFigureSlabRcConventional()
|
|
17
|
+
)
|
|
18
|
+
if v202.stb_sec_slab_rc_straight:
|
|
19
|
+
v202_straight: stb_v2_0_2.StbSecSlabRcStraight = v202.stb_sec_slab_rc_straight
|
|
20
|
+
v210_straight: stb_v2_1_0.StbSecSlabRcConventionalStraight = (
|
|
21
|
+
stb_v2_1_0.StbSecSlabRcConventionalStraight(depth=v202_straight.depth)
|
|
22
|
+
)
|
|
23
|
+
v210.stb_sec_slab_rc_conventional_straight = v210_straight
|
|
24
|
+
elif v202.stb_sec_slab_rc_taper:
|
|
25
|
+
v202_tapers: list[stb_v2_0_2.StbSecSlabRcTaper] = v202.stb_sec_slab_rc_taper
|
|
26
|
+
try:
|
|
27
|
+
taper_base = next(
|
|
28
|
+
v202_taper for v202_taper in v202_tapers if v202_taper.pos == "BASE"
|
|
29
|
+
)
|
|
30
|
+
taper_tip = next(
|
|
31
|
+
v202_taper for v202_taper in v202_tapers if v202_taper.pos == "TIP"
|
|
32
|
+
)
|
|
33
|
+
except StopIteration:
|
|
34
|
+
reporter.warning(
|
|
35
|
+
message="TaperのBASE,TIPが1回ずつ使われていないため変換できません",
|
|
36
|
+
code=Code.SCHEMA_ERROR,
|
|
37
|
+
phase=Phase.UPGRADE,
|
|
38
|
+
stb_element=v202,
|
|
39
|
+
)
|
|
40
|
+
return None
|
|
41
|
+
|
|
42
|
+
v210_taper: stb_v2_1_0.StbSecSlabRcConventionalTaper = (
|
|
43
|
+
stb_v2_1_0.StbSecSlabRcConventionalTaper(
|
|
44
|
+
base_depth=taper_base.depth, tip_depth=taper_tip.depth
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
v210.stb_sec_slab_rc_conventional_taper = v210_taper
|
|
48
|
+
elif v202.stb_sec_slab_rc_haunch:
|
|
49
|
+
v202_haunches: list[stb_v2_0_2.StbSecSlabRcHaunch] = v202.stb_sec_slab_rc_haunch
|
|
50
|
+
try:
|
|
51
|
+
haunch_base = next(
|
|
52
|
+
v202_haunch
|
|
53
|
+
for v202_haunch in v202_haunches
|
|
54
|
+
if v202_haunch.pos == "BASE"
|
|
55
|
+
)
|
|
56
|
+
haunch_center = next(
|
|
57
|
+
v202_haunch
|
|
58
|
+
for v202_haunch in v202_haunches
|
|
59
|
+
if v202_haunch.pos == "CENTER"
|
|
60
|
+
)
|
|
61
|
+
haunch_haunch = next(
|
|
62
|
+
v202_haunch
|
|
63
|
+
for v202_haunch in v202_haunches
|
|
64
|
+
if v202_haunch.pos == "HAUNCH"
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
except StopIteration:
|
|
68
|
+
reporter.warning(
|
|
69
|
+
message=(
|
|
70
|
+
"HaunchのBASE,CENTER,HAUNCHが1回ずつ使われていないため変換できません"
|
|
71
|
+
),
|
|
72
|
+
code=Code.SCHEMA_ERROR,
|
|
73
|
+
phase=Phase.UPGRADE,
|
|
74
|
+
stb_element=v202,
|
|
75
|
+
)
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
v210_haunch: stb_v2_1_0.StbSecSlabRcConventionalHaunch = (
|
|
79
|
+
stb_v2_1_0.StbSecSlabRcConventionalHaunch(
|
|
80
|
+
base_depth=haunch_base.depth,
|
|
81
|
+
tip_depth=haunch_center.depth,
|
|
82
|
+
haunch_length=haunch_haunch.depth,
|
|
83
|
+
)
|
|
84
|
+
)
|
|
85
|
+
v210.stb_sec_slab_rc_conventional_haunch = v210_haunch
|
|
86
|
+
else:
|
|
87
|
+
reporter.warning(
|
|
88
|
+
message="必要な子要素がないため変換できません",
|
|
89
|
+
code=Code.SCHEMA_ERROR,
|
|
90
|
+
phase=Phase.UPGRADE,
|
|
91
|
+
stb_element=v202,
|
|
92
|
+
)
|
|
93
|
+
return None
|
|
94
|
+
return v210
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def convert_sec_slab_rc(
|
|
98
|
+
v202: stb_v2_0_2.StbSecSlabRc,
|
|
99
|
+
v210: stb_v2_1_0.StbSecSlabRc,
|
|
100
|
+
*,
|
|
101
|
+
reporter: Reporter,
|
|
102
|
+
) -> None:
|
|
103
|
+
if not v202.stb_sec_figure_slab_rc:
|
|
104
|
+
reporter.warning(
|
|
105
|
+
message="必要な子要素がないため変換できません",
|
|
106
|
+
code=Code.SCHEMA_ERROR,
|
|
107
|
+
phase=Phase.UPGRADE,
|
|
108
|
+
stb_element=v202,
|
|
109
|
+
)
|
|
110
|
+
return
|
|
111
|
+
v210_fig_conventional: stb_v2_1_0.StbSecFigureSlabRcConventional | None = (
|
|
112
|
+
convert_sec_figure_slab_rc(v202.stb_sec_figure_slab_rc, reporter=reporter)
|
|
113
|
+
)
|
|
114
|
+
if v210_fig_conventional is None:
|
|
115
|
+
return
|
|
116
|
+
v210.stb_sec_slab_rc_conventional = stb_v2_1_0.StbSecSlabRcConventional(
|
|
117
|
+
stb_sec_figure_slab_rc_conventional=v210_fig_conventional
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def sec_slab_rc(
|
|
122
|
+
before: StBridgeElement, after: StBridgeElement, *, reporter: Reporter
|
|
123
|
+
) -> None:
|
|
124
|
+
if not isinstance(before, stb_v2_0_2.StbSecSlabRc) or not isinstance(
|
|
125
|
+
after, stb_v2_1_0.StbSecSlabRc
|
|
126
|
+
):
|
|
127
|
+
return
|
|
128
|
+
convert_sec_slab_rc(before, after, reporter=reporter)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Copyright 2025-2026 TAISEI CORPORATION
|
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
|
3
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
from stbkit.core.data_model import stb_v2_0_2, stb_v2_1_0
|
|
8
|
+
from stbkit.core.data_model.common import StBridgeElement
|
|
9
|
+
from stbkit.core.repository import RepositoryV2_0_2
|
|
10
|
+
from stbkit.core.stb_exceptions import NoneAccessError
|
|
11
|
+
from stbkit.core.stb_reporting import Reporter
|
|
12
|
+
|
|
13
|
+
from ....._internal.utils import girder_utils
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def post_girder(
|
|
17
|
+
v202: stb_v2_0_2.StBridge,
|
|
18
|
+
v210: stb_v2_1_0.StBridge,
|
|
19
|
+
repo_v202: RepositoryV2_0_2,
|
|
20
|
+
reporter: Reporter,
|
|
21
|
+
) -> None:
|
|
22
|
+
try:
|
|
23
|
+
v202_girders: list[stb_v2_0_2.StbGirder] = (
|
|
24
|
+
v202.stb_model.stb_members.stb_girders.stb_girder
|
|
25
|
+
)
|
|
26
|
+
except NoneAccessError:
|
|
27
|
+
return
|
|
28
|
+
v210_girders: list[stb_v2_1_0.StbGirder] = (
|
|
29
|
+
v210.stb_model.stb_members.stb_girders.stb_girder
|
|
30
|
+
)
|
|
31
|
+
for v202_girder, v210_girder in zip(v202_girders, v210_girders):
|
|
32
|
+
girder_length_value: girder_utils.GirderLengthValue = (
|
|
33
|
+
girder_utils.girder_length(v202_girder, v202)
|
|
34
|
+
)
|
|
35
|
+
length: float = girder_length_value.length
|
|
36
|
+
pos_control_point_start: float = girder_length_value.pos_control_point_start
|
|
37
|
+
pos_control_point_end: float = girder_length_value.pos_control_point_end
|
|
38
|
+
v202_sec: StBridgeElement = repo_v202.deref(v202_girder).id_section
|
|
39
|
+
distances_s: list[float] = []
|
|
40
|
+
distances_rc: list[float] = []
|
|
41
|
+
match v202_sec:
|
|
42
|
+
case stb_v2_0_2.StbSecBeamRc():
|
|
43
|
+
figure_rc: stb_v2_0_2.StbSecFigureBeamRc = (
|
|
44
|
+
v202_sec.stb_sec_figure_beam_rc
|
|
45
|
+
)
|
|
46
|
+
if figure_rc.stb_sec_beam_rc_haunch:
|
|
47
|
+
if v202_girder.haunch_start_or_none is not None:
|
|
48
|
+
distances_rc.append(
|
|
49
|
+
pos_control_point_start + v202_girder.haunch_start
|
|
50
|
+
)
|
|
51
|
+
if v202_girder.haunch_end_or_none is not None:
|
|
52
|
+
distances_rc.append(
|
|
53
|
+
pos_control_point_end - v202_girder.haunch_end
|
|
54
|
+
)
|
|
55
|
+
case stb_v2_0_2.StbSecBeamS():
|
|
56
|
+
figure_s: stb_v2_0_2.StbSecSteelFigureBeamS = (
|
|
57
|
+
v202_sec.stb_sec_steel_figure_beam_s
|
|
58
|
+
)
|
|
59
|
+
if (
|
|
60
|
+
figure_s.stb_sec_steel_beam_s_haunch
|
|
61
|
+
or figure_s.stb_sec_steel_beam_s_five_types
|
|
62
|
+
):
|
|
63
|
+
if v202_girder.haunch_start_or_none is not None:
|
|
64
|
+
distances_s.append(
|
|
65
|
+
pos_control_point_start + v202_girder.haunch_start
|
|
66
|
+
)
|
|
67
|
+
if v202_girder.haunch_end_or_none is not None:
|
|
68
|
+
distances_s.append(
|
|
69
|
+
pos_control_point_end - v202_girder.haunch_end
|
|
70
|
+
)
|
|
71
|
+
if (
|
|
72
|
+
figure_s.stb_sec_steel_beam_s_joint
|
|
73
|
+
or figure_s.stb_sec_steel_beam_s_five_types
|
|
74
|
+
):
|
|
75
|
+
if v202_girder.joint_start_or_none is not None:
|
|
76
|
+
distances_s.append(v202_girder.joint_start)
|
|
77
|
+
if v202_girder.joint_end_or_none is not None:
|
|
78
|
+
distances_s.append(length - v202_girder.joint_end)
|
|
79
|
+
case stb_v2_0_2.StbSecBeamSrc():
|
|
80
|
+
figure_s_src: stb_v2_0_2.StbSecSteelFigureBeamSrc = (
|
|
81
|
+
v202_sec.stb_sec_steel_figure_beam_src
|
|
82
|
+
)
|
|
83
|
+
if (
|
|
84
|
+
figure_s_src.stb_sec_steel_beam_src_haunch
|
|
85
|
+
or figure_s_src.stb_sec_steel_beam_src_five_types
|
|
86
|
+
):
|
|
87
|
+
if v202_girder.haunch_start_or_none is not None:
|
|
88
|
+
distances_s.append(
|
|
89
|
+
pos_control_point_start + v202_girder.haunch_start
|
|
90
|
+
)
|
|
91
|
+
if v202_girder.haunch_end_or_none is not None:
|
|
92
|
+
distances_s.append(
|
|
93
|
+
pos_control_point_end - v202_girder.haunch_end
|
|
94
|
+
)
|
|
95
|
+
if (
|
|
96
|
+
figure_s_src.stb_sec_steel_beam_src_joint
|
|
97
|
+
or figure_s_src.stb_sec_steel_beam_src_five_types
|
|
98
|
+
):
|
|
99
|
+
if v202_girder.joint_start_or_none is not None:
|
|
100
|
+
distances_s.append(v202_girder.joint_start)
|
|
101
|
+
if v202_girder.joint_end_or_none is not None:
|
|
102
|
+
distances_s.append(length - v202_girder.joint_end)
|
|
103
|
+
figure_rc_src: stb_v2_0_2.StbSecFigureBeamSrc = (
|
|
104
|
+
v202_sec.stb_sec_figure_beam_src
|
|
105
|
+
)
|
|
106
|
+
if figure_rc_src.stb_sec_beam_src_haunch:
|
|
107
|
+
if v202_girder.haunch_start_or_none is not None:
|
|
108
|
+
distances_rc.append(
|
|
109
|
+
pos_control_point_start + v202_girder.haunch_start
|
|
110
|
+
)
|
|
111
|
+
if v202_girder.haunch_end_or_none is not None:
|
|
112
|
+
distances_rc.append(
|
|
113
|
+
pos_control_point_end - v202_girder.haunch_end
|
|
114
|
+
)
|
|
115
|
+
distances_rc.sort()
|
|
116
|
+
distances_s.sort()
|
|
117
|
+
if distances_s:
|
|
118
|
+
v210_girder.stb_girder_steel_switch = [
|
|
119
|
+
stb_v2_1_0.StbGirderSteelSwitch(order=index + 1, distance=distance)
|
|
120
|
+
for index, distance in enumerate(distances_s)
|
|
121
|
+
]
|
|
122
|
+
if distances_rc:
|
|
123
|
+
v210_girder.stb_girder_concrete_switch = [
|
|
124
|
+
stb_v2_1_0.StbGirderConcreteSwitch(order=index + 1, distance=distance)
|
|
125
|
+
for index, distance in enumerate(distances_rc)
|
|
126
|
+
]
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Copyright 2025-2026 TAISEI CORPORATION
|
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
|
3
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
import uuid
|
|
8
|
+
from copy import deepcopy
|
|
9
|
+
|
|
10
|
+
from stbkit.core.data_model import stb_v2_0_2, stb_v2_1_0
|
|
11
|
+
from stbkit.core.stb_exceptions import NoneAccessError
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def find_wall_or_slabs(
|
|
15
|
+
stb: stb_v2_0_2.StBridge, id_open: int | None
|
|
16
|
+
) -> list[stb_v2_0_2.StbWall | stb_v2_0_2.StbSlab]:
|
|
17
|
+
result: list[stb_v2_0_2.StbWall | stb_v2_0_2.StbSlab] = []
|
|
18
|
+
if id_open is None:
|
|
19
|
+
return result
|
|
20
|
+
walls: stb_v2_0_2.StbWalls | None = None
|
|
21
|
+
try:
|
|
22
|
+
walls = stb.stb_model.stb_members.stb_walls
|
|
23
|
+
for wall in walls.stb_wall:
|
|
24
|
+
if not wall.stb_open_id_list_or_none:
|
|
25
|
+
continue
|
|
26
|
+
for open_id in wall.stb_open_id_list.stb_open_id:
|
|
27
|
+
if open_id.id == id_open:
|
|
28
|
+
result.append(wall)
|
|
29
|
+
except NoneAccessError:
|
|
30
|
+
pass
|
|
31
|
+
try:
|
|
32
|
+
slabs: stb_v2_0_2.StbSlabs = stb.stb_model.stb_members.stb_slabs
|
|
33
|
+
for slab in slabs.stb_slab:
|
|
34
|
+
if not slab.stb_open_id_list_or_none:
|
|
35
|
+
continue
|
|
36
|
+
for open_id in slab.stb_open_id_list.stb_open_id:
|
|
37
|
+
if open_id.id == id_open:
|
|
38
|
+
result.append(slab)
|
|
39
|
+
except NoneAccessError:
|
|
40
|
+
pass
|
|
41
|
+
return result
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def post_open(v202: stb_v2_0_2.StBridge, v210: stb_v2_1_0.StBridge) -> None:
|
|
45
|
+
try:
|
|
46
|
+
v202_opens: stb_v2_0_2.StbOpens = v202.stb_model.stb_members.stb_opens
|
|
47
|
+
except NoneAccessError:
|
|
48
|
+
return
|
|
49
|
+
max_open_id: int = (
|
|
50
|
+
max(obj.id if obj.id else 0 for obj in v202_opens.stb_open)
|
|
51
|
+
if v202_opens.stb_open
|
|
52
|
+
else 0
|
|
53
|
+
)
|
|
54
|
+
v210_opens: list[stb_v2_1_0.StbOpenArrangement] = (
|
|
55
|
+
v210.ensure.stb_model()
|
|
56
|
+
.ensure.stb_members()
|
|
57
|
+
.ensure.stb_open_arrangements()
|
|
58
|
+
.stb_open_arrangement
|
|
59
|
+
)
|
|
60
|
+
v210_sec_opens: list[stb_v2_1_0.StbSecOpenRc] = (
|
|
61
|
+
v210.stb_model.ensure.stb_sections().stb_sec_open_rc
|
|
62
|
+
)
|
|
63
|
+
max_sec_open_id: int = (
|
|
64
|
+
max(obj.id if obj.id else 0 for obj in v210_sec_opens) if v210_sec_opens else 0
|
|
65
|
+
)
|
|
66
|
+
for v202_open in v202_opens.stb_open:
|
|
67
|
+
v210_open: stb_v2_1_0.StbOpenArrangement = stb_v2_1_0.StbOpenArrangement(
|
|
68
|
+
id=v202_open.id_or_none,
|
|
69
|
+
guid=v202_open.guid_or_none,
|
|
70
|
+
name=v202_open.name_or_none,
|
|
71
|
+
id_section=v202_open.id_section_or_none,
|
|
72
|
+
position_x=v202_open.position_x_or_none,
|
|
73
|
+
position_y=v202_open.position_y_or_none,
|
|
74
|
+
rotate=v202_open.rotate_or_none,
|
|
75
|
+
)
|
|
76
|
+
wall_or_slabs: list[stb_v2_0_2.StbWall | stb_v2_0_2.StbSlab] = (
|
|
77
|
+
find_wall_or_slabs(v202, v202_open.id)
|
|
78
|
+
)
|
|
79
|
+
if not wall_or_slabs:
|
|
80
|
+
continue
|
|
81
|
+
if v202_open.id_section_or_none is not None:
|
|
82
|
+
id_section: int = v202_open.id_section
|
|
83
|
+
else:
|
|
84
|
+
max_sec_open_id += 1
|
|
85
|
+
id_section = max_sec_open_id
|
|
86
|
+
for index, wall_or_slab in enumerate(wall_or_slabs):
|
|
87
|
+
# 2件目以降は、同一インスタンスを使い回すと先に設定したid_memberを
|
|
88
|
+
# 上書きしてしまうため、複製して別IDを振る
|
|
89
|
+
if index > 0:
|
|
90
|
+
new_v210_open: stb_v2_1_0.StbOpenArrangement = deepcopy(v210_open)
|
|
91
|
+
max_open_id += 1
|
|
92
|
+
new_v210_open.id = max_open_id
|
|
93
|
+
else:
|
|
94
|
+
new_v210_open = v210_open
|
|
95
|
+
|
|
96
|
+
if isinstance(wall_or_slab, stb_v2_0_2.StbWall):
|
|
97
|
+
new_v210_open.kind_member = "WALL"
|
|
98
|
+
else:
|
|
99
|
+
new_v210_open.kind_member = "SLAB"
|
|
100
|
+
new_v210_open.id_member = wall_or_slab.id
|
|
101
|
+
new_v210_open.id_section = id_section
|
|
102
|
+
v210_opens.append(new_v210_open)
|
|
103
|
+
v210_sec_open: stb_v2_1_0.StbSecOpenRc = stb_v2_1_0.StbSecOpenRc(
|
|
104
|
+
id=id_section,
|
|
105
|
+
guid=uuid.uuid4(),
|
|
106
|
+
name=(v202_open.name + "_sec") if v202_open.name_or_none else "unnamed_sec",
|
|
107
|
+
length_x=v202_open.length_x,
|
|
108
|
+
length_y=v202_open.length_y,
|
|
109
|
+
)
|
|
110
|
+
v210_sec_opens.append(v210_sec_open)
|