From 61a8db916d6d772ae9f8b5c82a79296f9952c642 Mon Sep 17 00:00:00 2001 From: ypshim Date: Tue, 27 Oct 2026 09:59:18 +0900 Subject: [PATCH] =?UTF-8?q?feat(rebar):=20=ED=99=95=EB=8C=80=EA=B8=B0?= =?UTF-8?q?=EC=B4=88=20=EB=8B=A8=EB=A9=B4=20=ED=92=8D=EC=84=A0=20=EC=A7=80?= =?UTF-8?q?=EC=8B=9C=EC=84=A0=EC=9D=98=20=EB=81=9D=EC=9D=84=20=EC=A0=90?= =?UTF-8?q?=EC=B2=A0=EA=B7=BC=20=ED=91=9C=EC=8B=9C=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 각 풍선의 지시선 끝에 철근 계열 색의 점(점철근)을 찍어, 선 위가 아니라 점에 닿도록 함 - B1–B4 선 철근, B11 선 철근도 같은 방식으로 점 표시 Co-Authored-By: Claude Haiku 5.5 --- src/view/footing-section-svg.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/view/footing-section-svg.ts b/src/view/footing-section-svg.ts index 7a91b9f..a3587ef 100644 --- a/src/view/footing-section-svg.ts +++ b/src/view/footing-section-svg.ts @@ -153,21 +153,22 @@ export function footingSectionSvg(model: PierModel): string { parts.push(text(xr + 6, yNote + 12, `높이 ${(z.B5 - z.B68).toFixed(0)}`, 'start', COLOR.b5)); // Bubbles outside the outline, spread apart, each with a leader to its bar (the leader carries the same data-bar, so it highlights too). - const bubble = (name: string, bx: number, by: number, tx: number, ty: number) => { + // A leader ends on a point rebar (점철근) of its family: a small dot in the family colour at the leader end (승인 2026-10-26). + const bubble = (name: string, bx: number, by: number, tx: number, ty: number, dotColor: string) => { const edgeY = by < ty ? by + 11 : by - 11; - return `${name}`; + return `${name}`; }; const zB11 = js.length > 0 ? fs.cBottom + js[0] * fs.sV : fs.cBottom; const yTop = 40; const yBot = Y0 + 100; // Each bottom bubble sits straight below its own bar (B2 left of centre, B4 at centre, B3 right of centre) on a bar of the right parity. - parts.push(bubble('B5', xa + 12, yTop, x(xsW[1]), y(z.B5))); - parts.push(bubble('B1', cx - 60, yTop, cx - 60, y(z.B1))); - parts.push(bubble('B11', xb - 20, yTop, xb, y(zB11))); - parts.push(bubble('B10-1', X0 - 18, y(fs.cBottom + (levels - 1) * fs.sV / 2), X0 + 2, y(fs.cBottom + (levels - 1) * fs.sV / 2))); - parts.push(bubble('B2', cx - 70, yBot, cx - 70, y(z.B24))); - parts.push(bubble('B4', cx, yBot, cx, y(z.B24))); - parts.push(bubble('B3', cx + 70, yBot, cx + 70, y(z.B3))); + parts.push(bubble('B5', xa + 12, yTop, x(xsW[1]), y(z.B5), COLOR.b5)); + parts.push(bubble('B1', cx - 60, yTop, cx - 60, y(z.B1), COLOR.b14)); + parts.push(bubble('B11', xb - 20, yTop, xb, y(zB11), COLOR.b11)); + parts.push(bubble('B10-1', X0 - 18, y(fs.cBottom + (levels - 1) * fs.sV / 2), X0 + 2, y(fs.cBottom + (levels - 1) * fs.sV / 2), COLOR.b10)); + parts.push(bubble('B2', cx - 70, yBot, cx - 70, y(z.B24), COLOR.b14)); + parts.push(bubble('B4', cx, yBot, cx, y(z.B24), COLOR.b14)); + parts.push(bubble('B3', cx + 70, yBot, cx + 70, y(z.B3), COLOR.b14)); // Legend (선 모양별, 삽도 기준) and the units note. const yLeg = 352;