fix: [fire-shutter] ④ 안보강 제거 + 방화벽 ① 립에 밀착
- ④ 벽연형(안보강) 완전 제거 (렌더링, 라벨, 변수) - 방화벽 우측면 = ① 립 좌측 끝에 밀착 - 레이아웃: 방화벽│①립+②+①본체 → 개구부
This commit is contained in:
@@ -1088,9 +1088,7 @@ function renderGrCross() {
|
||||
const padL = 30; // SVG 좌측 여백 (px)
|
||||
const padT = 55; // SVG 상단 여백 (타이틀 공간)
|
||||
|
||||
// ④ 벽연형 치수 (30mm 폭 × 45mm 세로, ㄷ자 우측열림)
|
||||
const w4depth = 30 * sc; // 30mm → 90px (가로, 벽→개구부 방향)
|
||||
const w4height = 45 * sc; // 45mm → 135px (세로)
|
||||
// (④ 벽연형 — 제거됨)
|
||||
|
||||
// ② 본체 치수
|
||||
const b2w = 90 * sc; // 90mm → 270px (가로)
|
||||
@@ -1107,12 +1105,11 @@ function renderGrCross() {
|
||||
const m1e14 = 14 * sc; // 14mm → 42px (하단 내부 수직)
|
||||
|
||||
// ── 좌표 계산 ──
|
||||
// 방화벽 고정 → ④ 벽 오른면에 부착 → ② ④ 오른쪽에 부착
|
||||
const w4x = padL + wallW; // ④ 좌측 = 벽 우측면에 밀착
|
||||
const bx = w4x + w4depth; // ② 좌측벽 = ④ 우측면
|
||||
const by = padT + m1tab; // ② 상단 y
|
||||
const trimLipX = bx - m1lip; // ① 립 좌측 (④ 안쪽에 겹침)
|
||||
const trimRightX = bx + m1body; // ① body 우측 끝 (130mm 끝)
|
||||
// 방화벽 우측면 = ① 립 좌측 끝 (밀착)
|
||||
const trimLipX = padL + wallW; // ① 립 좌측 = 벽 우측
|
||||
const bx = trimLipX + m1lip; // ② 좌측벽 = ① 립 끝
|
||||
const by = padT + m1tab; // ② 상단 y
|
||||
const trimRightX = bx + m1body; // ① body 우측 끝 (130mm 끝)
|
||||
|
||||
// (③ C형, ② 내부 계단 — 철재에서는 미사용)
|
||||
|
||||
@@ -1124,15 +1121,7 @@ function renderGrCross() {
|
||||
|
||||
// ══════════════════════════════════════════
|
||||
// ④ 벽연형 EGI 1.55T (갈색, ㄷ자 30-45-30 우측열림)
|
||||
// ② 좌측벽 왼쪽에 위치, 세로 중앙 정렬
|
||||
// ══════════════════════════════════════════
|
||||
const w4cy = by + (b2h - w4height) / 2; // 세로 중앙 정렬
|
||||
// 상단 플랜지 (좌→우 30mm)
|
||||
P.push(`<rect x="${w4x}" y="${w4cy}" width="${w4depth}" height="${t}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
// 좌측 웹 (상→하 45mm)
|
||||
P.push(`<rect x="${w4x}" y="${w4cy}" width="${t}" height="${w4height}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
// 하단 플랜지 (좌→우 30mm)
|
||||
P.push(`<rect x="${w4x}" y="${w4cy + w4height - t}" width="${w4depth}" height="${t}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
// (④ 안보강 — 제거됨)
|
||||
|
||||
// ══════════════════════════════════════════
|
||||
// ② 본체 EGI 1.55T (회색, 90×72 C채널)
|
||||
@@ -1245,10 +1234,7 @@ function renderGrCross() {
|
||||
labels += `<circle cx="${lb2x}" cy="${lb2y}" r="8" fill="none" stroke="${cBody}" stroke-width="1.5"/>`;
|
||||
labels += `<text x="${lb2x}" y="${lb2y + 3}" fill="${cBody}" font-size="9" font-weight="900" text-anchor="middle" font-family="Pretendard">②</text>`;
|
||||
// (③ C형 라벨 — 생략)
|
||||
// ④ 벽연형 라벨 (④ 중앙)
|
||||
const lb4x = w4x + w4depth / 2, lb4y = w4cy + w4height / 2;
|
||||
labels += `<circle cx="${lb4x}" cy="${lb4y}" r="8" fill="none" stroke="${cWall}" stroke-width="1.5"/>`;
|
||||
labels += `<text x="${lb4x}" y="${lb4y + 3}" fill="${cWall}" font-size="9" font-weight="900" text-anchor="middle" font-family="Pretendard">④</text>`;
|
||||
// (④ 라벨 — 제거됨)
|
||||
|
||||
// ══════════════════════════════════════════
|
||||
// 개구부 방향 표시
|
||||
@@ -1258,9 +1244,9 @@ function renderGrCross() {
|
||||
const arrowTxt = `<text x="${arrowX}" y="${arrowY}" fill="#64748b" font-size="10" font-weight="700" text-anchor="start" font-family="Pretendard">→ 개구부</text>`;
|
||||
|
||||
// ══════════════════════════════════════════
|
||||
// 방화벽 (해치 패턴) — 고정 위치
|
||||
// 방화벽 (해치 패턴) — ① 립 좌측에 밀착
|
||||
// ══════════════════════════════════════════
|
||||
const wallX = padL; // 벽 고정 위치
|
||||
const wallX = trimLipX - wallW; // 벽 우측 = ① 립 좌측
|
||||
const wallYstart = by - 20;
|
||||
const wallH = b2h + 40;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user