From acd24ca154c8ae0d2dcc164931c2da6d1f1cea86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Mon, 9 Mar 2026 18:52:48 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[fire-shutter]=20=EC=97=B0=EA=B8=B0?= =?UTF-8?q?=EC=B0=A8=EB=8B=A8=EC=9E=AC=201=EA=B0=9C=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EB=B0=8F=20=EC=8A=AC=EB=A1=AF=20=EC=9C=84=EC=B9=98?= =?UTF-8?q?=20=EB=B0=B0=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 연기차단재: 2개→1개, 사이드월→슬롯 개구부(립 팁 사이) 위치로 이동 - 클립: 사각형→L형 브라켓으로 변경, 사이드월 내면에 부착 - 슬랫 라인을 채널 전체 관통으로 수정 --- .../rd/fire-shutter-drawing/index.blade.php | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) 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 = '';