From b3cd1ffebc7270e28ee811cd976e57cd636253a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sun, 8 Mar 2026 22:12:33 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[rd]=20=EB=B3=B5=EC=A3=BC=EB=A8=B8?= =?UTF-8?q?=EB=8B=88+=ED=94=8C=EB=9E=9C=EC=A7=80=EB=A5=BC=20=EB=AA=A8?= =?UTF-8?q?=ED=84=B0=20=EA=B7=B8=EB=A3=B9=EC=9C=BC=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 모터 숨기면 복주머니+플랜지도 함께 숨김 - 샤프트는 복주머니 없이 자기 구간까지만 표시 - 모터 ON: 브라켓 ← 모터 ← 출력축 ← 복주머니 ← 샤프트 - 모터 OFF: 샤프트만 남음 (비모터측 브라켓+환봉까지) --- .../rd/fire-shutter-drawing/index.blade.php | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/resources/views/rd/fire-shutter-drawing/index.blade.php b/resources/views/rd/fire-shutter-drawing/index.blade.php index 91348406..2d320b33 100644 --- a/resources/views/rd/fire-shutter-drawing/index.blade.php +++ b/resources/views/rd/fire-shutter-drawing/index.blade.php @@ -1087,33 +1087,34 @@ function fs3dBuild() { msMesh.position.set(msCenterX, 0, 0); meshes.shaft.add(msMesh); - // --- Motor side: 복주머니 (모터 돌출축 + 샤프트를 감싸는 커플링) --- - // 외통 (샤프트보다 큰 원통 — 모터축과 샤프트관을 메우는 결합부) - const cpGeo = new THREE.CylinderGeometry(couplingDia / 2, couplingDia / 2, couplingLen, 24); - cpGeo.rotateZ(Math.PI / 2); - const cpMat = new THREE.MeshStandardMaterial({ color: 0x78716c, metalness: 0.7, roughness: 0.2 }); - const cpMesh = new THREE.Mesh(cpGeo, cpMat); + // --- Motor side: 복주머니+플랜지는 모터 그룹에 추가 (아래 모터 섹션에서 생성) --- + // cpCenterX, couplingDia 등은 모터 섹션에서 사용 const cpCenterX = motorDir * (W1 / 2 - couplingLen / 2); - cpMesh.position.set(cpCenterX, 0, 0); - meshes.shaft.add(cpMesh); - // 플랜지 링 (모터 출력축과의 결합면) - const flangeGeo = new THREE.CylinderGeometry(couplingDia / 2 + 10, couplingDia / 2 + 10, 6, 24); - flangeGeo.rotateZ(Math.PI / 2); - const flangeMat = new THREE.MeshStandardMaterial({ color: 0x57534e, metalness: 0.8, roughness: 0.2 }); - const flange = new THREE.Mesh(flangeGeo, flangeMat); - flange.position.set(motorDir * (W1 / 2 - 3), 0, 0); - meshes.shaft.add(flange); meshes.shaft.position.set(0, shaftY, 0); scene.add(meshes.shaft); - // === MOTOR (DH-150K/300K 스타일: 본체 + 기어박스 + 베이스 + 다리) === + // === MOTOR (DH-150K/300K 스타일: 복주머니 + 본체 + 기어박스 + 베이스 + 다리) === meshes.motor = new THREE.Group(); const motorR = b.shaftDia * 0.6; // 모터 반지름 (샤프트 1.2배) const metalMat = new THREE.MeshStandardMaterial({ color: 0x94a3b8, metalness: 0.6, roughness: 0.3 }); const darkMat = new THREE.MeshStandardMaterial({ color: 0x374151, metalness: 0.5, roughness: 0.4 }); const blueMat = new THREE.MeshStandardMaterial({ color: 0x2563eb, metalness: 0.4, roughness: 0.4 }); + // 0) 복주머니 + 플랜지 (모터 그룹 소속 — 모터 숨기면 함께 숨김) + const cpGeo = new THREE.CylinderGeometry(couplingDia / 2, couplingDia / 2, couplingLen, 24); + cpGeo.rotateZ(Math.PI / 2); + const cpMat = new THREE.MeshStandardMaterial({ color: 0x78716c, metalness: 0.7, roughness: 0.2 }); + const cpMesh = new THREE.Mesh(cpGeo, cpMat); + cpMesh.position.set(cpCenterX, 0, 0); + meshes.motor.add(cpMesh); + const flangeGeo = new THREE.CylinderGeometry(couplingDia / 2 + 10, couplingDia / 2 + 10, 6, 24); + flangeGeo.rotateZ(Math.PI / 2); + const flangeMat = new THREE.MeshStandardMaterial({ color: 0x57534e, metalness: 0.8, roughness: 0.2 }); + const flange = new THREE.Mesh(flangeGeo, flangeMat); + flange.position.set(motorDir * (W1 / 2 - 3), 0, 0); + meshes.motor.add(flange); + // 모터 위치: 브라켓 안쪽, 복주머니 옆 const motorBodyLen = motorR * 2.5; // 본체 길이 const gearBoxLen = motorR * 1.2; // 기어박스 길이