From 1a6ceebb4c2f9308dd4affb65c95db85136bb04f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Fri, 13 Mar 2026 21:20:54 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[fire-shutter]=203D=20=EA=B0=80=EC=9D=B4?= =?UTF-8?q?=EB=93=9C=EB=A0=88=EC=9D=BC=20=EB=B2=BD=20=EC=A0=95=EB=A0=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20B=ED=82=A4=20=EA=B7=B8?= =?UTF-8?q?=EB=A6=AC=EB=93=9C=20=ED=86=A0=EA=B8=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 벽 기둥 내면을 본체 배면과 같은 선상에 정렬 (브라켓은 벽 안에 매립) - B키로 바닥 그리드 표시/숨기기 토글 기능 추가 --- .../rd/fire-shutter-drawing/index.blade.php | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/resources/views/rd/fire-shutter-drawing/index.blade.php b/resources/views/rd/fire-shutter-drawing/index.blade.php index 5535f7c0..985f4295 100644 --- a/resources/views/rd/fire-shutter-drawing/index.blade.php +++ b/resources/views/rd/fire-shutter-drawing/index.blade.php @@ -1325,10 +1325,11 @@ function fs3dInit() { const hemi = new THREE.HemisphereLight(0x87ceeb, 0x8b4513, 0.3); scene.add(ambient, dir1, dir2, hemi); - // Grid + // Grid (B키로 토글) const grid = new THREE.GridHelper(5000, 50, 0x334155, 0x1e293b); grid.position.y = 0; scene.add(grid); + let floorGridRef = grid; // B키 토글용 참조 // === TransformControls (클릭 선택 + 이동) === transformCtrl = new THREE.TransformControls(camera, renderer.domElement); @@ -1438,6 +1439,12 @@ function deselectMesh() { return; } + // B: 바닥 그리드 토글 + if (k === 'b' && !e.altKey && !e.ctrlKey) { + if (floorGridRef) floorGridRef.visible = !floorGridRef.visible; + return; + } + // H: 선택된 요소 감추기 if (k === 'h' && selectedKey) { const hideKey = selectedKey; @@ -2198,11 +2205,12 @@ function createRailGroup() { const wallMat = new THREE.MeshStandardMaterial({ color: wallColor, transparent: true, opacity: wl.opacity / 100, side: THREE.DoubleSide }); meshes.wall = new THREE.Group(); - // 가이드레일 최대 깊이 (개구부 중심에서 브라켓 끝까지) - const railMaxDepth = isScreenType - ? (g.sideWall + g.thickness + 30) // ③ 벽연형-C 벽쪽 body 끝 = 111.55mm - : (rw / 2); // 철재형: 레일 절반 폭 - const whw = hw + railMaxDepth; // 벽 기둥 내면 = 브라켓 끝에 정렬 + // 가이드레일 본체 배면 깊이 (개구부에서 본체 백월까지) + // 벽 기둥 내면 = 본체 배면과 같은 선상 (브라켓 ③④는 벽 두께 안에 매립) + const railBodyDepth = isScreenType + ? (g.sideWall + g.thickness) // 본체 배면 = 81.55mm + : (rw / 2); // 철재형: 레일 절반 폭 + const whw = hw + railBodyDepth; const wg = wl.wing; const topH = wl.topMargin; const totalH = colH + topH;