diff --git a/resources/views/rd/fire-shutter-drawing/index.blade.php b/resources/views/rd/fire-shutter-drawing/index.blade.php index 07d46918..1dcbce44 100644 --- a/resources/views/rd/fire-shutter-drawing/index.blade.php +++ b/resources/views/rd/fire-shutter-drawing/index.blade.php @@ -791,33 +791,40 @@ function renderGrCross() { // 방화벽 (좌측 = 벽쪽) const wallX = pad; - // 연기차단재 — 채널 내 상하벽에 부착 (가로 배치) - const sealX = bx + bodyD - lp - t - sealD - 2; + // 연기차단재 — 슬롯 개구부 위치 (립 팁 사이, 1개만) + // 참조 스케치 기준: 상단 립 팁에 부착, 슬롯 안쪽으로 돌출 + const slotGapPx = fw - 2 * fl; // 슬롯 갭 (10mm → 40px) let sealSvg = ''; if (g.showSeal) { - sealSvg += ``; - sealSvg += ``; + const sealW = Math.max(sealT, 4); // 차단재 폭 (세로 방향) + const sealH = lp * 0.7; // 차단재 깊이 (가로 방향, 립 깊이의 70%) + const sealPosX = bx + bodyD - lp + 2; // 립 안쪽 시작점 + const sealPosY = by + fl - sealW / 2; // 상단 립 팁 위치 + sealSvg += ``; if (g.showDim) { - sealSvg += `연기차단재`; + sealSvg += `차단재`; } } - // 슬랫 — 채널 중심 수평선 + // 슬랫 — 슬롯 통과 수평선 (립 사이) const slatY = by + fw / 2 - slatT / 2; const slatX1 = bx + t + 2; - const slatX2 = bx + bodyD - lp - t - 2; + const slatX2 = bx + bodyD - t - 2; // 슬랫은 채널 전체를 관통 - // ① 클립 (채널 내부, 사이드월 내면에 부착 — 참조 도면 기준) - // 클립은 개구부 근처 채널 넓은 공간에 L형 브라켓으로 위치 - const clipSize = 15 * sc; // 15mm 클립 크기 - const clipT = Math.max(t, 3); // 클립 두께 - const clipX = bx + bodyD - lp - t - clipSize - 4; // 개구부 근처 (립 안쪽) - const clipY1 = by + t + 4; // 상단 사이드월 내면 - const clipY2 = by + fw - t - clipSize - 4; // 하단 사이드월 내면 + // ① 클립 (채널 내부, 사이드월 내면 — L형 브라켓) + // 참조 도면 기준: 개구부 근처 사이드월에 부착된 작은 브라켓 + const clipArmLen = 10 * sc; // 10mm 돌출 + const clipLegLen = 15 * sc; // 15mm 사이드월 따라 + const clipT = Math.max(t, 2); + const clipX1 = bx + bodyD - lp - t - 2; // 립 내면 근처 + // 상단 클립 (사이드월 내면에서 아래로 L형) + const clipY1 = by + t + 2; + // 하단 클립 (사이드월 내면에서 위로 L형) + const clipY2 = by + fw - t - 2; const clipSvg = ` - - - ${g.showDim ? `` : ''}`; + + + ${g.showDim ? `` : ''}`; // 치수선 let dimLines = '';