fix(rebar): 확대기초 단면 B6 다리 주석을 우측 여백으로, 격자 치수 글자를 치수선 위로

- B6 다리 주석 "B6 다리 → B5 / 높이 1723"을 우측 여백에 두고 B6 다리 끝까지 지시선을 그림
- 격자 치수 "61@125=7625"를 치수선 위로 옮겨 하단 지시선과 겹치지 않게 함

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-26 18:08:16 +09:00
1 parent 665b1c948a
commit f793a69d3f
2 files changed
+8 -4

No files matched your search

+6 -3
View File
@@ -73,8 +73,6 @@ export function footingSectionSvg(model: PierModel): string {
parts.push(line('b5', 'B6', xa, xb, y(z.B68), COLOR.b5, 1.2));
parts.push(line('b5', 'B7', xa, xb, y(z.B7), COLOR.b5, 1.2));
parts.push(line('b5', 'B8', xa, xb, y(z.B68), COLOR.b5, 1.2));
// B6 leg note: the leg runs from the 하면 1단 up to the B5 height (B6 다리 → B5 높이).
parts.push(text(cx, (y(z.B5) + y(z.B68)) / 2 - 3, `B6 다리 → B5 높이 ${(z.B5 - z.B68).toFixed(0)}`, 'middle', COLOR.b5));
// B1–B4 on the grid along W (교각축, orange points): odd grid positions carry B1, B2 and B3; even carry B4 (as bottomBars).
const xs = gridPositions(W, fs, 'sAxis');
@@ -122,7 +120,7 @@ export function footingSectionSvg(model: PierModel): string {
parts.push(text(x(W / 2) + 5, yDim + 14, `${fs.cSide}`, 'start', COLOR.dim));
parts.push(text(x(-W / 2 + fs.cSide) + 2, yDim + 14, `${g.e.toFixed(1)}`, 'start', COLOR.dim));
parts.push(text(x(W / 2 - fs.cSide) - 2, yDim + 14, `${g.e.toFixed(1)}`, 'end', COLOR.dim));
parts.push(text(cx, yDim + 14, `${g.n}@${fs.sAxis}=${g.G}`, 'middle', COLOR.dim));
parts.push(text(cx, yDim - 6, `${g.n}@${fs.sAxis}=${g.G}`, 'middle', COLOR.dim));
parts.push(text(cx, 20, `교각축 직각 단면 · 폭 ${W.toFixed(0)}`, 'middle', '#1F2937'));
const xr = X0 + W_PX + 18;
parts.push(`<line x1="${xr}" x2="${xr}" y1="${y(H).toFixed(1)}" y2="${y(0).toFixed(1)}" stroke="${COLOR.dim}" stroke-width="0.8"/>`);
@@ -130,6 +128,11 @@ export function footingSectionSvg(model: PierModel): string {
parts.push(text(xr + 6, y(H) + 12, `${fs.cTop}`, 'start', COLOR.dim));
parts.push(text(xr + 6, (y(H) + y(0)) / 2, `${levels - 1}@${fs.sV}=${(levels - 1) * fs.sV}`, 'start', COLOR.dim));
parts.push(text(xr + 6, y(0) - 4, `${fs.cBottom}`, 'start', COLOR.dim));
// B6 leg note in the right margin, with a leader to the B6 leg's end at the B6 height (B6 다리 → B5 높이, from the 하면 1단 up to B5).
const yNote = y(H) - 14;
parts.push(`<line class="b6note" x1="${(xr + 4).toFixed(1)}" x2="${xb.toFixed(1)}" y1="${(yNote + 4).toFixed(1)}" y2="${y(z.B68).toFixed(1)}" stroke="${COLOR.b5}" stroke-width="0.7"/>`);
parts.push(text(xr + 6, yNote, 'B6 다리 → B5', 'start', COLOR.b5));
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) => {
+2 -1
View File
@@ -60,7 +60,8 @@ describe('확대기초 교각축 직각 단면 (폭 W) (승인 2026-10-26, 추
});
it('2단계: B6 다리 주석 1723, 범례 5항목, 기둥과 말뚝 맥락 표시, 탭 4개 중 첫 탭만 작동', () => {
expect(svg).toContain('B6 다리 → B5 높이 1723');
expect(svg).toContain('B6 다리 → B5');
expect(svg).toContain('높이 1723');
for (const label of ['주철근 (B5–B8)', '직각·보조 (B1–B4)', '전단·띠 (B9)', '측면 수평 (B10-1 · B10-2)', '조립 (B11·B12)']) expect(svg).toContain(label);
expect(svg).toContain('class="column"');
expect(svg.split('class="pile"').length - 1).toBeGreaterThan(0);