fix: [rd] 모터측 브라켓 제거 — 모터가 복주머니로 샤프트에 직접 결합
- 모터측 브라켓 제거 (비모터측에만 브라켓 존재) - 복주머니가 셔터박스 끝에서 직접 시작 - 모터 → 출력축 → 복주머니 → 샤프트 직결 구조 - 주축 길이 재계산 (모터측 브라켓 두께 제외)
This commit is contained in:
@@ -1059,22 +1059,17 @@ function fs3dBuild() {
|
||||
|
||||
// 환봉 길이 = bracket inner → shaft end gap
|
||||
const roundBarLen = 60;
|
||||
// 주축 길이 = 양쪽 환봉/복주머니 사이 (전체 폭 - bracket*2 - 환봉 - 복주머니)
|
||||
const mainShaftLen = W1 - bkW * 2 - roundBarLen - couplingLen;
|
||||
const nonMotorSide = -motorDir; // 모터 반대쪽
|
||||
// 주축 길이 = 비모터측(bracket+환봉) + 모터측(복주머니) 제외
|
||||
const mainShaftLen = W1 - bkW - roundBarLen - couplingLen;
|
||||
|
||||
// --- Left Bracket ---
|
||||
const bkGeoL = new THREE.BoxGeometry(bkW, bkH, bkD);
|
||||
const bkMeshL = new THREE.Mesh(bkGeoL, bracketMat);
|
||||
bkMeshL.position.set(-W1 / 2 + bkW / 2, 0, 0);
|
||||
meshes.shaft.add(bkMeshL);
|
||||
|
||||
// --- Right Bracket ---
|
||||
const bkMeshR = new THREE.Mesh(bkGeoL.clone(), bracketMat);
|
||||
bkMeshR.position.set(W1 / 2 - bkW / 2, 0, 0);
|
||||
meshes.shaft.add(bkMeshR);
|
||||
// --- Non-motor side Bracket (모터 반대쪽만 브라켓 존재) ---
|
||||
const bkGeo = new THREE.BoxGeometry(bkW, bkH, bkD);
|
||||
const bkMesh = new THREE.Mesh(bkGeo, bracketMat);
|
||||
bkMesh.position.set(nonMotorSide * (W1 / 2 - bkW / 2), 0, 0);
|
||||
meshes.shaft.add(bkMesh);
|
||||
|
||||
// --- Non-motor side: 환봉 (round bar, thin cylinder) ---
|
||||
const nonMotorSide = -motorDir; // 모터 반대쪽
|
||||
const rbGeo = new THREE.CylinderGeometry(roundBarDia / 2, roundBarDia / 2, roundBarLen, 16);
|
||||
rbGeo.rotateZ(Math.PI / 2);
|
||||
const rbMesh = new THREE.Mesh(rbGeo, shaftMat);
|
||||
@@ -1098,15 +1093,15 @@ function fs3dBuild() {
|
||||
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);
|
||||
const cpCenterX = motorDir * (W1 / 2 - bkW - couplingLen / 2);
|
||||
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 - bkW - 3), 0, 0);
|
||||
flange.position.set(motorDir * (W1 / 2 - 3), 0, 0);
|
||||
meshes.shaft.add(flange);
|
||||
|
||||
meshes.shaft.position.set(0, shaftY, 0);
|
||||
@@ -1123,7 +1118,7 @@ function fs3dBuild() {
|
||||
const motorBodyLen = motorR * 2.5; // 본체 길이
|
||||
const gearBoxLen = motorR * 1.2; // 기어박스 길이
|
||||
const totalMotorLen = motorBodyLen + gearBoxLen;
|
||||
const motorStartX = motorDir * (W1 / 2 - bkW - couplingLen); // 복주머니 끝
|
||||
const motorStartX = motorDir * (W1 / 2 - couplingLen); // 복주머니 끝 (모터측 브라켓 없음)
|
||||
const motorMidX = motorStartX - motorDir * totalMotorLen / 2; // 모터 전체 중심
|
||||
|
||||
// 1) 모터 본체 (은색 원통 — 메인 실린더)
|
||||
|
||||
Reference in New Issue
Block a user