fix: [fire-shutter] ① 마감재를 ② 바깥으로 이동 (감싸는 구조)

- ① 수평면 시작점: bx → bx-t1 (② 백월 바깥, 방화벽쪽 이동)
- overlap 제거: ①과 ② 사이 겹침 없음 (①이 ② 바깥에 위치)
- 측면탭 위치 조정: ② 백월 좌측을 따라 배치
This commit is contained in:
김보곤
2026-03-11 16:21:45 +09:00
parent 58991e352e
commit 8a2a569403

View File

@@ -837,21 +837,17 @@ function renderGrCross() {
`<rect x="${c4SideStartX}" y="${c4Y+c4c-t2-c4a}" width="${t2}" height="${c4a}" fill="${cBk4}" stroke="${ms}" stroke-width="${mw}" opacity="0.8"/>`,
].join('\n');
// ── ① 마감재 SUS 1.2T × 2장 (② 위 덮씌우기, 절곡: 10-11-110-30-15-15-15, 상하 대칭) ──
// 코킹립(10mm)은 Z방향 절곡 → 평면도에서 보이지 않음
// 측면탭(11mm)은 ②백월을 따라 내려가는 'ㄱ' 구조 → 평면도에서 보임
// 수평면(110mm)이 ②백월에서 개구부 방향으로 연장 → 랩(30mm) → 3단 꺾임
// ── ① 마감재 SUS 1.2T × 2장 (② 바깥을 감싸는 외피, 절곡: 10-11-110-30-15-15-15, 상하 대칭) ──
// ① 수평면 시작점 = ②백월 바깥 (①이 ②를 감싸므로 ② 좌측 바깥에서 시작)
const wallRight = pad + wallW; // 방화벽 우측면 X
const trimL1 = bx; // ① 수평면 시작 = ② 백월 외면
const m1HEnd = trimL1 + m1c; // 수평면 우측 끝 X (bx + 110mm)
const trimL = bx - m1b; // 치수선 기준 좌측 끝 = 탭 끝
const trimL1 = bx - t1; // ① 수평면 시작 = ② 백월 바깥 (①두께만큼 좌측)
const m1HEnd = trimL1 + m1c; // 수평면 우측 끝 X
const trimR = m1HEnd + t1; // 치수선용 우측 끝 (① 우측 끝)
const trimX2 = trimR; // 치수선용
// ①는 ② 바깥에 1px 겹쳐서 "붙어있는" 형태로 표현
const overlap = 1; // 접촉 겹침 (px)
const tTop = by - t1 + overlap; // 단 ① 수평면 Y
const tBot = by + bOuterW - overlap; // 하단 ① 수평면 Y
// ①는 ② 바깥을 감싸는 구조 (겹침 없음)
const tTop = by - t1; // 상단 ① 수평면 Y (② 상면 바깥)
const tBot = by + bOuterW; // 단 ① 수평면 Y (② 하면 바깥)
// 개구부쪽 3단 꺾임 좌표 (상단 기준)
const wrapX = m1HEnd - t1; // 랩 시작 X
@@ -861,15 +857,19 @@ function renderGrCross() {
const step3X = step1X - m1g; // 3단 끝 X
const trim1Svg = [
// ══════ 상단 ① 마감재 (② 상면 위에 덮씌우기) ══════
`<rect x="${trimL1-t1}" y="${tTop}" width="${t1}" height="${m1b+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// ══════ 상단 ① 마감재 (② 상면 바깥을 감싸기) ══════
// 측면탭: ② 백월 좌측을 따라 아래로 (② 내부 방향)
`<rect x="${trimL1}" y="${tTop}" width="${t1}" height="${m1b+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 수평면: ② 상면 위를 덮음 (좌→우 110mm)
`<rect x="${trimL1}" y="${tTop}" width="${m1c}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 랩: 개구부쪽 아래로 30mm
`<rect x="${wrapX}" y="${tTop+t1}" width="${t1}" height="${m1d}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 3단 꺾임
`<rect x="${step1X}" y="${wrap1Y-t1}" width="${m1e+t1}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
`<rect x="${step1X}" y="${step2Y}" width="${t1}" height="${m1f}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
`<rect x="${step3X}" y="${step2Y}" width="${m1g+t1}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// ══════ 하단 ① 마감재 (② 하면 위에 덮씌우기, 거울상) ══════
`<rect x="${trimL1-t1}" y="${tBot-m1b}" width="${t1}" height="${m1b+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// ══════ 하단 ① 마감재 (② 하면 바깥을 감싸기, 거울상) ══════
`<rect x="${trimL1}" y="${tBot-m1b}" width="${t1}" height="${m1b+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
`<rect x="${trimL1}" y="${tBot}" width="${m1c}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
`<rect x="${wrapX}" y="${tBot-m1d}" width="${t1}" height="${m1d}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
`<rect x="${step1X}" y="${tBot-m1d}" width="${m1e+t1}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,