diff --git a/resources/views/rd/fire-shutter-drawing/index.blade.php b/resources/views/rd/fire-shutter-drawing/index.blade.php
index 06eaee23..0b948bd5 100644
--- a/resources/views/rd/fire-shutter-drawing/index.blade.php
+++ b/resources/views/rd/fire-shutter-drawing/index.blade.php
@@ -1387,31 +1387,28 @@ function renderSbSide() {
` : '';
})()}
-
+
${(() => {
- const bk30 = 30*sc, bk15 = 15*sc, bk20 = 20*sc;
- // 전면판 J-훅 내부에 위치, 레일 개구부(70mm)를 막지 않음
- // 프로파일: 밑면에서 하향 30mm → 내향 15mm → 하향 20mm (레일 개구부 전면벽)
- const bx = ox + f50; // Seg3 끝 (50mm 지점) = 레일 개구부 전면
- const by = oy + sH; // 밑면 레벨
- const O = [
- [bx, by], // 0: 밑면 레벨 (레일 개구 전면)
- [bx, by + bk30], // 1: 30mm 하향
- [bx + bk15, by + bk30], // 2: 15mm 내향 (레일 방향 선반)
- [bx + bk15, by + bk30 + bk20],// 3: 20mm 하향 (하단)
- ];
- const I = [
- [bx - vt, by],
- [bx - vt, by + bk30 - vt],
- [bx + bk15 - vt, by + bk30 - vt],
- [bx + bk15 - vt, by + bk30 + bk20],
- ];
- const outer = O.map(p => p.join(',')).join(' L');
- const inner = [I[3],I[2],I[1],I[0]].map(p => p.join(',')).join(' L');
+ // 프로파일: 좌측벽(55)─상부선반(30)─스텝(15↓)─하부립(20)─하부선반(50)
+ // 레일 개구부 전면에 위치, 레일과 떨어진 형태로 밑면에서 만남
+ const b20=20*sc, b15=15*sc, b50b=50*sc, b55=55*sc, b30=30*sc;
+ const bx = ox + f50 + vt; // 전면판 Seg3 끝에서 시작
+ const by = oy + sH; // 밑면 레벨 (상단)
const brkCol = '#7c9c6b';
+ const brkStroke = '#5a7a4a';
return `
-
- 레일연결절곡물
+
+
+
+
+
+
+
+
+
+
+
+ 린텔
`;
})()}
@@ -1905,16 +1902,20 @@ function addPlate(w, h, d, x, y, z, mat, eMat) {
// Seg1: 17mm ← (Seg2 상단에서 전면 방향으로 복귀)
addPlate(W1, pt, fpSeg[0], 0, fpSeg[1] - pt / 2, frontZ - fpSeg[2] + fpSeg[0] / 2);
- // ── 밑면레일연결절곡물 (레일 개구부 전면벽, 70mm 개구 유지) ──
- // Seg3 끝(50mm 지점)에서 하향, 레일 개구부를 막지 않음
+ // ── 밑면레일연결절곡물 (린텔, 5세그먼트: 20,15,50,55,30) ──
+ // 좌측벽(55)─상부선반(30)─스텝(15↓)─하부립(20)─하부선반(50)
const brkMat = new THREE.MeshStandardMaterial({ color: 0x7c9c6b, transparent: true, opacity: S.td.caseOpacity, side: THREE.DoubleSide });
- const brkZ = frontZ - fpSeg[2]; // Seg3 끝 = 레일 개구 전면
- // 30mm 하향 (밑면에서 아래로, 레일 개구 전면벽)
- addPlate(W1, 30, pt, 0, -30 / 2, brkZ + pt / 2, brkMat);
- // 15mm 내향 선반 (30mm 하단에서 레일 방향)
- addPlate(W1, pt, 15, 0, -30 + pt / 2, brkZ - 15 / 2, brkMat);
- // 20mm 하향 (선반 끝에서 더 아래로)
- addPlate(W1, 20, pt, 0, -30 - 20 / 2, brkZ - 15 + pt / 2, brkMat);
+ const brkZ = frontZ - fpSeg[2]; // Seg3 끝 = 린텔 좌측벽 위치
+ // 좌측벽 (55mm 수직, 밑면에서 아래로)
+ addPlate(W1, 55, pt, 0, -55 / 2, brkZ - pt / 2, brkMat);
+ // 상부선반 (30mm → 내향, 밑면 레벨)
+ addPlate(W1, pt, 30, 0, pt / 2, brkZ - 30 / 2, brkMat);
+ // 스텝벽 (15mm ↓, 상부선반 내측 끝)
+ addPlate(W1, 15, pt, 0, -15 / 2, brkZ - 30 - pt / 2, brkMat);
+ // 하부립 (20mm → 내향, 스텝 하단)
+ addPlate(W1, pt, 20, 0, -15 + pt / 2, brkZ - 30 - 20 / 2, brkMat);
+ // 하부선반 (50mm → 내향, 좌측벽 하단)
+ addPlate(W1, pt, 50, 0, -55 + pt / 2, brkZ - 50 / 2, brkMat);
// ── ② 상부 커버는 케이스 공통으로 아래에서 렌더링 ──