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 = '';