refactor(472-3 B06 구조물): 관 · BOX · 세월교 · 물넘이 모양 계산을 logic 으로 옮김(518-2)

- logic 새 파일 9 — B06_Section_Cross_Culvert · _Culvert_Geom · _Culvert_Extra · _Culvert_Tiers ·
  _Culvert_Types · _Culvert_Wire · _Box_Geom · _Ford_Geom · _Ford_Pavement
- 그림 파일(UI_Cross_Culvert · _Culvert_Types · _Box · _Ford · _Ford_Pavement)은 받은 좌표로 그리기만 ·
  관 겹 꼭짓점(pipeShellCorners) · 물넘이 노면 끝 · 월류선 · 유출 성토선은 logic 으로
- 옛 순수 기하 6 파일(UI_Cross_Culvert_Geom · _Extra · _Tiers · _Wire · _Box_Geom · _Ford_Geom) 지움 ·
  부르는 쪽(B05 Corridor · Structure_Layouts · Route_Carry_Patch · Wall 등)은 import 줄만
- test_472_3 GEOMETRY_PULLS 자기 11 줄 + 더는 안 끌리는 Design_Surface 1 줄 걷음
- 시험 · helper 경로를 새 logic 파일로 — 옮긴 파일을 가리키던 낡은 경로

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 19:17:23 +09:00
co-authored by Claude Opus 5.5
parent 1d5d63875b
commit e4befd158a
79 changed files with 685 additions and 639 deletions
@@ -22,17 +22,17 @@
import { structureHashParts, wallSweepAt } from "./logic/B05_Profile_UI_Corridor_Structures_Hash";
import type { CrossSection, CulvertSideSpec } from "../B06_Section/B06_Section_Api_Fetch";
import { computeCulvertLayout } from "../B06_Section/B06_Section_UI_Cross_Culvert";
import { computeCulvertLayout } from "../B06_Section/logic/B06_Section_Cross_Culvert";
import {
culvertOwnerFor,
ownWallsDrawAt,
restrictToSide,
tierSpanOf,
} from "../B06_Section/B06_Section_UI_Cross_Culvert_Wire";
} from "../B06_Section/logic/B06_Section_Cross_Culvert_Wire";
import { pipeWallThicknessM } from "../B06_Section/logic/B06_Section_UI_Cross_Culvert_Const";
import type { CulvertLayout } from "../B06_Section/B06_Section_UI_Cross_Culvert";
import { computeFordLayout, fordAdjustOf } from "../B06_Section/B06_Section_UI_Cross_Ford";
import type { FordLayout } from "../B06_Section/B06_Section_UI_Cross_Ford";
import type { CulvertLayout } from "../B06_Section/logic/B06_Section_Cross_Culvert";
import { computeFordLayout, fordAdjustOf } from "../B06_Section/logic/B06_Section_Cross_Ford_Geom";
import type { FordLayout } from "../B06_Section/logic/B06_Section_Cross_Ford_Geom";
import {
boreBandAt,
boreRingChainages,
@@ -40,8 +40,11 @@ import {
splitByBand,
} from "./B05_Profile_UI_Corridor_Structures_Box";
import type { SectionPolygon } from "./B05_Profile_UI_Corridor_Structures_Box";
import { computeBoxLayout, DEFAULT_BOX_SIDE_ADJUST } from "../B06_Section/B06_Section_UI_Cross_Box";
import type { BoxAdjust, BoxLayout } from "../B06_Section/B06_Section_UI_Cross_Box";
import {
computeBoxLayout,
DEFAULT_BOX_SIDE_ADJUST,
} from "../B06_Section/logic/B06_Section_Cross_Box_Geom";
import type { BoxAdjust, BoxLayout } from "../B06_Section/logic/B06_Section_Cross_Box_Geom";
import { buildWingSolids } from "./logic/B05_Profile_UI_Corridor_Structures_Wing";
import {
buildWallPath,
@@ -12,8 +12,8 @@
* ========================================================================== */
import type { CrossSection } from "../B06_Section/B06_Section_Api_Fetch";
import { computeBoxLayout } from "../B06_Section/B06_Section_UI_Cross_Box";
import type { BoxAdjust } from "../B06_Section/B06_Section_UI_Cross_Box";
import { computeBoxLayout } from "../B06_Section/logic/B06_Section_Cross_Box_Geom";
import type { BoxAdjust } from "../B06_Section/logic/B06_Section_Cross_Box_Geom";
import type { CorridorStructure, StructureFrame } from "./B05_Profile_UI_Corridor_Structures";
import { buildWingSolids } from "./logic/B05_Profile_UI_Corridor_Structures_Wing";
import { chuteBands } from "./B05_Profile_UI_Corridor_Structures_Chute";
@@ -9,13 +9,13 @@
* ========================================================================== */
import type { ChuteSpec, CrossSection } from "../B06_Section/B06_Section_Api_Fetch";
import type { OffsetPoint } from "../B06_Section/B06_Section_UI_Cross_Culvert_Types";
import type { OffsetPoint } from "../B06_Section/logic/B06_Section_Cross_Culvert_Types";
import {
chuteBandOutline,
chuteRun,
groundLine,
} from "../B06_Section/B06_Section_UI_Cross_Wall_Hatch";
import { outletFillLine } from "../B06_Section/B06_Section_UI_Cross_Ford_Pavement";
import { outletFillLine } from "../B06_Section/logic/B06_Section_Cross_Ford_Pavement";
/** 성토 조각 하나 — B06 오버레이가 띠를 그리는 선(절토 조각은 뺀다). */
interface FillSegment {
@@ -11,16 +11,16 @@
* ========================================================================== */
import type { CrossSection } from "../B06_Section/B06_Section_Api_Fetch";
import type { CulvertLayout } from "../B06_Section/B06_Section_UI_Cross_Culvert";
import { computeCulvertLayout } from "../B06_Section/B06_Section_UI_Cross_Culvert";
import type { CulvertLayout } from "../B06_Section/logic/B06_Section_Cross_Culvert";
import { computeCulvertLayout } from "../B06_Section/logic/B06_Section_Cross_Culvert";
import { bodyAbsolute } from "../B06_Section/B06_Section_UI_Cross_Body_Guard";
import type { WallAdjust } from "../B06_Section/B06_Section_UI_Cross_Culvert_Types";
import { ZERO_ADJUST } from "../B06_Section/B06_Section_UI_Cross_Culvert_Types";
import type { WallAdjust } from "../B06_Section/logic/B06_Section_Cross_Culvert_Types";
import { ZERO_ADJUST } from "../B06_Section/logic/B06_Section_Cross_Culvert_Types";
import {
culvertOwnerFor,
culvertReach,
restrictToSide,
} from "../B06_Section/B06_Section_UI_Cross_Culvert_Wire";
} from "../B06_Section/logic/B06_Section_Cross_Culvert_Wire";
/** 단면 폴리곤 [offset, 표고][] — 코리도 솔리드가 쓰는 그 형식. */
export type SectionPolygon = Array<[number, number]>;
@@ -24,10 +24,13 @@ import {
inletStructure,
revetOffset,
} from "../B06_Section/B06_Section_Structure_Layouts";
import { DEFAULT_BOX_SIDE_ADJUST } from "../B06_Section/B06_Section_UI_Cross_Box_Geom";
import { DEFAULT_BOX_SIDE_ADJUST } from "../B06_Section/logic/B06_Section_Cross_Box_Geom";
import type { BoxControl } from "../B06_Section/B06_Section_UI_Cross_Box_Panel";
import { culvertLinkFor, type CulvertLink } from "../B06_Section/B06_Section_UI_Cross_Culvert_Wire";
import { fordAdjustOf } from "../B06_Section/B06_Section_UI_Cross_Ford_Geom";
import {
culvertLinkFor,
type CulvertLink,
} from "../B06_Section/logic/B06_Section_Cross_Culvert_Wire";
import { fordAdjustOf } from "../B06_Section/logic/B06_Section_Cross_Ford_Geom";
import type { FordControl } from "../B06_Section/B06_Section_UI_Cross_Ford_Panel";
import { createCrossSectionCard } from "../B06_Section/B06_Section_UI_Cross_View";
import type { RockBoundaryControl } from "../B06_Section/B06_Section_UI_Cross_Design";