fix: [rd] 모터측 큰 플랜지 삭제, 3인치 연결관→브라켓 직결
- 모터측 플랜지(flangeMT) 삭제 (실제 없는 부품) - 3인치 연결관이 샤프트 끝에서 복주머니까지 직접 연결 - 비모터측 플랜지만 유지
This commit is contained in:
@@ -1089,14 +1089,15 @@ function fs3dBuild() {
|
||||
stubPin.position.set(bkInnerFaceX - nonMotorSide * stubPinVisible / 2, 0, 0);
|
||||
meshes.shaft.add(stubPin);
|
||||
|
||||
// 모터측: 3인치 연결관 + 복주머니 (브라켓 체결)
|
||||
// 모터측: 3인치 연결관 + 복주머니 (브라켓 직접 체결)
|
||||
const reducerR = 38; // 3인치 관 반지름 (ø76mm ≈ 3")
|
||||
const reducerLen = stubPinVisible - 40; // 연결관 길이 (복주머니 공간 제외)
|
||||
const bokjuR = reducerR + 8; // 복주머니 외경 (연결관보다 약간 큼)
|
||||
const bokjuR = reducerR + 8; // 복주머니 외경
|
||||
const bokjuLen = 35; // 복주머니 길이
|
||||
const bokjuMat = new THREE.MeshStandardMaterial({ color: 0x6b7280, metalness: 0.6, roughness: 0.3 });
|
||||
|
||||
const mtBkInnerFaceX = motorDir * (W1 / 2 - motorBkD);
|
||||
const shaftEndX = motorDir * (mainShaftLen / 2); // 샤프트 관 끝
|
||||
|
||||
// 복주머니 (브라켓 내면에서 바로 안쪽, 브라켓과 직접 결합)
|
||||
const bokjuGeo = new THREE.CylinderGeometry(bokjuR, bokjuR, bokjuLen, 24);
|
||||
bokjuGeo.rotateZ(Math.PI / 2);
|
||||
@@ -1104,33 +1105,30 @@ function fs3dBuild() {
|
||||
bokju.position.set(mtBkInnerFaceX - motorDir * bokjuLen / 2, 0, 0);
|
||||
meshes.shaft.add(bokju);
|
||||
|
||||
// 3인치 연결관 (복주머니 ~ 메인 샤프트 플랜지)
|
||||
// 3인치 연결관 (복주머니 ~ 샤프트 관 끝, 플랜지 없이 직접 용접)
|
||||
const reducerStartX = mtBkInnerFaceX - motorDir * bokjuLen;
|
||||
const reducerEndX = shaftEndX;
|
||||
const reducerLen = Math.abs(reducerStartX - reducerEndX);
|
||||
const reducerGeo = new THREE.CylinderGeometry(reducerR, reducerR, reducerLen, 24);
|
||||
reducerGeo.rotateZ(Math.PI / 2);
|
||||
const reducer = new THREE.Mesh(reducerGeo, stubPinMat);
|
||||
const reducerStartX = mtBkInnerFaceX - motorDir * bokjuLen;
|
||||
reducer.position.set(reducerStartX - motorDir * reducerLen / 2, 0, 0);
|
||||
reducer.position.set((reducerStartX + reducerEndX) / 2, 0, 0);
|
||||
meshes.shaft.add(reducer);
|
||||
|
||||
// --- Main Shaft (원형관, 양쪽 플랜지 사이) ---
|
||||
// --- Main Shaft (원형관) ---
|
||||
const msGeo = new THREE.CylinderGeometry(shaftR, shaftR, mainShaftLen, 32);
|
||||
msGeo.rotateZ(Math.PI / 2);
|
||||
const msMesh = new THREE.Mesh(msGeo, shaftMat);
|
||||
msMesh.position.set(0, 0, 0);
|
||||
meshes.shaft.add(msMesh);
|
||||
|
||||
// 비모터측 플랜지 (샤프트 내경에 삽입 용접)
|
||||
// 비모터측 플랜지만 (샤프트 내경에 삽입 용접)
|
||||
const flangeGeo = new THREE.CylinderGeometry(flangeR, flangeR, flangeThick, 32);
|
||||
flangeGeo.rotateZ(Math.PI / 2);
|
||||
const flangeNM = new THREE.Mesh(flangeGeo, flangeMat);
|
||||
flangeNM.position.set(nonMotorSide * (mainShaftLen / 2 + flangeThick / 2), 0, 0);
|
||||
meshes.shaft.add(flangeNM);
|
||||
|
||||
// 모터측 플랜지 (샤프트 내경에 삽입, 3인치 연결관과 용접)
|
||||
const flangeMT = new THREE.Mesh(flangeGeo.clone(), flangeMat);
|
||||
flangeMT.position.set(motorDir * (mainShaftLen / 2 + flangeThick / 2), 0, 0);
|
||||
meshes.shaft.add(flangeMT);
|
||||
|
||||
meshes.shaft.position.set(0, shaftY, 0);
|
||||
scene.add(meshes.shaft);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user