fix(view): the 끊음 marks are short "//" breaks, and the pile label sits clear below them
The break lines ran across the members at a slant. They are now two short slanted strokes on the column stub and across the pile group, and the pile label is moved below the break. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a2e4648f7b
commit
c0a4ce57ad
1 file changed
+11
-4
+11
-4
@@ -13,6 +13,12 @@ const PILE_STUB = 4;
|
||||
|
||||
const mm = (v: number) => Math.round(v * 1000);
|
||||
|
||||
/** A break mark (끊음): two short slanted strokes "//" centred on (x, y), so the member is shown as cut. */
|
||||
function breakMark(x: number, y: number, halfWidth: number): string {
|
||||
const d = 0.12;
|
||||
return `<g stroke="#55606e" stroke-width="0.03" fill="none"><line x1="${x - halfWidth - d / 2}" y1="${y - 0.15}" x2="${x - halfWidth + d / 2}" y2="${y + 0.15}"/><line x1="${x + halfWidth - d / 2}" y1="${y - 0.15}" x2="${x + halfWidth + d / 2}" y2="${y + 0.15}"/></g>`;
|
||||
}
|
||||
|
||||
function svgOf(x0: number, y0: number, w: number, h: number, label: string, body: string): string {
|
||||
const pw = Math.round(w * FOOTING_PX_PER_M);
|
||||
const ph = Math.round(h * FOOTING_PX_PER_M);
|
||||
@@ -68,15 +74,16 @@ export function footingSideSvg(model: PierModel): string {
|
||||
const col = model.columns[0];
|
||||
if (col) {
|
||||
parts.push(`<rect x="${col.s - col.diameter / 2}" y="${-f.top - COLUMN_STUB}" width="${col.diameter}" height="${COLUMN_STUB}" fill="#c9d4df" stroke="#0f5c66" stroke-width="0.02"/>`);
|
||||
// Break marks on the column stub and at the pile bottom.
|
||||
parts.push(`<line x1="${col.s - col.diameter}" y1="${-f.top - COLUMN_STUB * 0.6}" x2="${col.s + col.diameter}" y2="${-f.top - COLUMN_STUB * 0.6 - 0.2}" stroke="#55606e" stroke-width="0.03"/>`);
|
||||
// Break mark on the column stub, at its middle.
|
||||
parts.push(breakMark(col.s, -f.top - COLUMN_STUB / 2, col.diameter / 2 + 0.15));
|
||||
}
|
||||
if (piles.length) {
|
||||
parts.push(`<line x1="${f.s - f.length / 2}" y1="${-(botEl + 0.3)}" x2="${f.s + f.length / 2}" y2="${-(botEl + 0.3) - 0.2}" stroke="#55606e" stroke-width="0.03"/>`);
|
||||
// Break mark across the pile group, in the lower stub (the pile label sits below it).
|
||||
parts.push(breakMark(f.s, -(botEl + 0.6), f.length / 2));
|
||||
}
|
||||
parts.push(`<text x="${f.s + f.length / 2 + 0.35}" y="${-(f.top + f.bottom) / 2}" font-size="0.28" text-anchor="start">h1 ${mm(f.top - f.bottom)}</text>`);
|
||||
if (piles.length) {
|
||||
parts.push(`<text x="${f.s}" y="${-(botEl + 0.9)}" font-size="0.28" text-anchor="middle">말뚝 ${mm(pileLen)} (끊음)</text>`);
|
||||
parts.push(`<text x="${f.s}" y="${-(botEl + 1.3)}" font-size="0.28" text-anchor="middle">말뚝 ${mm(pileLen)} (끊음)</text>`);
|
||||
}
|
||||
void pileTop;
|
||||
return svgOf(x0, y0, w, h, '확대기초·말뚝 측면', parts.join(''));
|
||||
|
||||
Reference in new issue
Block a user