Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1
This commit is contained in:
@@ -38,12 +38,27 @@ from B08_Quantity.B08_Quantity_Engine_SlopeArea import PROTECTION_SOURCE, _key,
|
|||||||
from B08_Quantity.B08_Quantity_Engine_SlopeLength import station_slope
|
from B08_Quantity.B08_Quantity_Engine_SlopeLength import station_slope
|
||||||
|
|
||||||
#: 저장된 설계 단면적을 그대로 옮기는 칸 — `표 키 → 설계 키`.
|
#: 저장된 설계 단면적을 그대로 옮기는 칸 — `표 키 → 설계 키`.
|
||||||
|
#: ⚠ 측구 둘은 B06 이 **절토 분리와 같은 근거**(지반 유형 + 암반 경계선)로 갈라 낸 값이다
|
||||||
|
#: (2026-09-09 `6a7c339f`). 여기서 다시 가르지 않는다 — 근거가 없는 측점은 그쪽이
|
||||||
|
#: **나누지 않고** 사유(`ditch_split_basis`)를 함께 낸다. `split_basis()` 로 읽는다.
|
||||||
AREA_KEYS: tuple[tuple[str, str], ...] = (
|
AREA_KEYS: tuple[tuple[str, str], ...] = (
|
||||||
("cut_soil", "cut_soil_area_m2"),
|
("cut_soil", "cut_soil_area_m2"),
|
||||||
("cut_rock", "cut_rock_area_m2"),
|
("cut_rock", "cut_rock_area_m2"),
|
||||||
("embankment", "fill_area_m2"),
|
("embankment", "fill_area_m2"),
|
||||||
|
("ditch_soil", "ditch_soil_area_m2"),
|
||||||
|
("ditch_rock", "ditch_rock_area_m2"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#: `ditch_split_basis` 를 사람이 읽는 말로. 도면·화면이 「왜 이렇게 갈렸나」를 보일 때 쓴다.
|
||||||
|
#: ⚠ `rock_ground_no_boundary` 는 **못 가른 것**이다 — 절반씩 임의로 나누는 대신 전량 암으로
|
||||||
|
#: 두고 그 사실을 남긴다. 그 측점의 표에는 「암」 한 칸만 서는 것이 정상이다.
|
||||||
|
DITCH_SPLIT_LABEL: dict[str, str] = {
|
||||||
|
"no_ditch": "측구 없음",
|
||||||
|
"soil_ground": "토사 지반 — 전량 토사",
|
||||||
|
"rock_ground_no_boundary": "암 지반인데 암반 경계선이 없어 **못 가름** — 전량 암",
|
||||||
|
"rock_boundary": "암반 경계선으로 가름",
|
||||||
|
}
|
||||||
|
|
||||||
#: 사면 계열에서 오는 칸 — `표 키 → (B08 계열, 면)`.
|
#: 사면 계열에서 오는 칸 — `표 키 → (B08 계열, 면)`.
|
||||||
#: 성토파종·절토살포는 **법면보호공**이고, 그것은 B08 에서 면고르기를 참조한다
|
#: 성토파종·절토살포는 **법면보호공**이고, 그것은 B08 에서 면고르기를 참조한다
|
||||||
#: (`PROTECTION_SOURCE`). 참조를 끊으면 그쪽 한 곳만 고치면 이 표도 따라온다.
|
#: (`PROTECTION_SOURCE`). 참조를 끊으면 그쪽 한 곳만 고치면 이 표도 따라온다.
|
||||||
@@ -62,6 +77,20 @@ def _num(value: Any) -> float | None:
|
|||||||
return float(value) if isinstance(value, (int, float)) else None
|
return float(value) if isinstance(value, (int, float)) else None
|
||||||
|
|
||||||
|
|
||||||
|
def split_basis(design: dict[str, Any] | None) -> tuple[str, str] | None:
|
||||||
|
"""측구를 무슨 근거로 갈랐나 — `(코드, 사람이 읽는 말)`. 값이 없으면 `None`.
|
||||||
|
|
||||||
|
⚠ 표 칸은 숫자만 담으므로 이 말은 **표 밖**(주기·화면)에 실어야 한다. 「전량 암」이
|
||||||
|
경계선을 못 찾아서인지 정말 암 지반이어서인지는 숫자만 봐서는 알 수 없다.
|
||||||
|
"""
|
||||||
|
if not isinstance(design, dict):
|
||||||
|
return None
|
||||||
|
code = design.get("ditch_split_basis")
|
||||||
|
if not isinstance(code, str) or not code:
|
||||||
|
return None
|
||||||
|
return code, DITCH_SPLIT_LABEL.get(code, code)
|
||||||
|
|
||||||
|
|
||||||
def derived_cells(chainage_m: float, design: dict[str, Any] | None) -> dict[str, float | None]:
|
def derived_cells(chainage_m: float, design: dict[str, Any] | None) -> dict[str, float | None]:
|
||||||
"""저장된 횡단 설계 하나에서 **채울 수 있는 칸**만 낸다.
|
"""저장된 횡단 설계 하나에서 **채울 수 있는 칸**만 낸다.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user