From 498c738ceef58e5950f1308d15e5c4160b3a8429 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Mon, 26 Oct 2026 04:45:40 +0900 Subject: [PATCH] =?UTF-8?q?fix(536-3):=20=EB=84=A4=EC=9D=BC=20=C2=B7=20?= =?UTF-8?q?=EC=95=B5=EC=BB=A4=20=EC=B5=9C=EC=86=8C=20=EA=B8=B8=EC=9D=B4=20?= =?UTF-8?q?=3D=201=20m=20=EC=84=B1=EA=B8=B4=20=EA=B1=B8=EC=9D=8C=20+=20?= =?UTF-8?q?=EC=9D=B4=EB=B6=84(=EA=B8=B8=EC=9D=B4=20=EB=8C=80=20Fs=20?= =?UTF-8?q?=EB=8B=A8=EC=A1=B0=20=EC=95=84=EB=8B=98)=20=C2=B7=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EC=B9=B8=20=EA=B2=A9=EC=9E=90=20=C2=B7=20=EB=84=A4?= =?UTF-8?q?=EC=9D=BC=20=ED=91=9C=EC=8B=9C=20=EC=9E=91=EA=B2=8C=20=C2=B7=20?= =?UTF-8?q?=EB=B3=B4=EA=B0=95=20=EB=8B=A8=EB=A9=B4=20=EA=B7=B8=EB=A6=BC=20?= =?UTF-8?q?=EC=A6=89=EC=8B=9C=20=EA=B7=B8=EB=A6=BC(=EB=B6=99=EC=9C=BC?= =?UTF-8?q?=EB=A9=B4=20ResizeObserver=20=EA=B0=80=20=EB=8B=A4=EC=8B=9C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 실측: 0+720 우 깎기 우기 L 3 1.049 · 7.5 1.211 · 12 1.156 — 옛 4.5 m 걸음이 O.K 창을 건너뜀 - requestAnimationFrame 이 안 도는 창(ORCA)에서 단면 그림이 비던 것 Co-Authored-By: Claude Opus 5.5 --- E03_StabSection/E03_StabSection_Router_WhatIf.py | 2 ++ E03_StabSection/E03_StabSection_UI_Reinforce.ts | 2 +- E03_StabSection/E03_StabSection_UI_Section.ts | 10 +++++----- E03_StabSection/E03_StabSection_UI_Support.css | 7 +++++++ E03_StabSection/E03_StabSection_UI_Support.ts | 4 ++-- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/E03_StabSection/E03_StabSection_Router_WhatIf.py b/E03_StabSection/E03_StabSection_Router_WhatIf.py index 6eb721d60..9380dda50 100644 --- a/E03_StabSection/E03_StabSection_Router_WhatIf.py +++ b/E03_StabSection/E03_StabSection_Router_WhatIf.py @@ -260,6 +260,8 @@ def run_whatif(root: Path, station_key: str, req: WhatIfRequest) -> dict[str, An start, max_ratio=SUPPORT_MAX_LEN, step=SUPPORT_LEN_STEP, + # 길이 대 Fs 가 늘 단조롭지 않음(활동면이 깊어짐) — 1 m 성긴 걸음 뒤 이분 + coarse=max(1, round(SUPPORT_MAX_LEN - start)), ) else: found = {"found": None, "tried": []} diff --git a/E03_StabSection/E03_StabSection_UI_Reinforce.ts b/E03_StabSection/E03_StabSection_UI_Reinforce.ts index de3893053..58216e0d5 100644 --- a/E03_StabSection/E03_StabSection_UI_Reinforce.ts +++ b/E03_StabSection/E03_StabSection_UI_Reinforce.ts @@ -278,7 +278,7 @@ export function buildReinforce(o: ReinforceOptions): HTMLElement { toggles: { map: false, centers: false, candidates: false }, picked: null, }; - requestAnimationFrame(() => canvas.render(draw)); + canvas.render(draw); // 붙기 전 = 기본 폭 · 붙으면 ResizeObserver 가 다시 그림 } if (o.row.walls) { const method = createSelectField({ diff --git a/E03_StabSection/E03_StabSection_UI_Section.ts b/E03_StabSection/E03_StabSection_UI_Section.ts index 391467554..ff43d86e6 100644 --- a/E03_StabSection/E03_StabSection_UI_Section.ts +++ b/E03_StabSection/E03_StabSection_UI_Section.ts @@ -346,10 +346,10 @@ export function createSectionCanvas(onPick: (index: number | null) => void): Sec ...ns, }), svgEl("rect", { - x: s.head[0] - 2.5 * unit, - y: s.head[1] - 2.5 * unit, - width: 5 * unit, - height: 5 * unit, + x: s.head[0] - 1.2 * unit, + y: s.head[1] - 1.2 * unit, + width: 2.4 * unit, + height: 2.4 * unit, class: "e03-support__head", }), ); @@ -358,7 +358,7 @@ export function createSectionCanvas(onPick: (index: number | null) => void): Sec svgEl("circle", { cx: s.cross[0], cy: s.cross[1], - r: 3 * unit, + r: 1.5 * unit, class: "e03-support__cross", "data-role": "support-cross", ...ns, diff --git a/E03_StabSection/E03_StabSection_UI_Support.css b/E03_StabSection/E03_StabSection_UI_Support.css index c2d8207ed..bc2f77b62 100644 --- a/E03_StabSection/E03_StabSection_UI_Support.css +++ b/E03_StabSection/E03_StabSection_UI_Support.css @@ -53,3 +53,10 @@ vertical-align: middle; background: var(--e03-support); } + +.e03-support-fields { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); + gap: var(--spacing-8); + align-items: end; +} diff --git a/E03_StabSection/E03_StabSection_UI_Support.ts b/E03_StabSection/E03_StabSection_UI_Support.ts index 7d87b6cfa..07c8f829b 100644 --- a/E03_StabSection/E03_StabSection_UI_Support.ts +++ b/E03_StabSection/E03_StabSection_UI_Support.ts @@ -182,7 +182,7 @@ export function buildSupport(o: SupportOptions): HTMLElement { }); typeField.select.dataset.role = "support-type"; const inputs = new Map(); - const fields = el("div", { className: "e03-panel__row" }); + const fields = el("div", { className: "e03-support-fields" }); fields.append(sideField.root, typeField.root); for (const key of FIELDS) { const f = createInputField({ @@ -295,6 +295,6 @@ export function buildSupport(o: SupportOptions): HTMLElement { rec.support_forces?.[o.condition], ), }; - requestAnimationFrame(() => canvas.render(draw)); + canvas.render(draw); // 붙기 전 = 기본 폭 · 붙으면 ResizeObserver 가 다시 그림 return host; }