improvements to side wall hinge

This commit is contained in:
zhao
2023-03-09 21:34:12 -05:00
parent fd84afa582
commit 2ddc90dd4d
4 changed files with 36 additions and 23 deletions

View File

@ -13,29 +13,34 @@ module hingeModule() {
applyYBarScrewMount() applyYBarScrewMount()
base(); base();
connSlack = 0.1;
connW = sideWallConnW - connSlack;
connD = sideWallConnD - connSlack;
module base() { module base() {
translate(v=[connSlack, connSlack,0])
intersection() { intersection() {
union() { union() {
cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]); cube(size = [connW, connD, sideWallConnLugDepression]);
// Riser to enforce side wall hinge clearance // Riser to enforce side wall hinge clearance
translate(v = [0, 0, sideWallConnLugDepression]) translate(v = [0, 0, sideWallConnLugDepression])
cube(size = [sideWallConnW, sideWallConnD - 12, sideWallZGapClearance]); cube(size = [connW, connD - 12, sideWallZGapClearance]);
} }
// TODO: pattern for this? beef up mirror4XY? // TODO: pattern for this? beef up mirror4XY?
cVal = 0.5; cVal = 0.5;
halfspace(p=[0,cVal,0], vpos=[0,1,1]); halfspace(p=[0,cVal,0], vpos=[0,1,1]);
halfspace(p=[cVal,0,0], vpos=[1,0,1]); halfspace(p=[cVal,0,0], vpos=[1,0,1]);
halfspace(p=[sideWallConnW-cVal,0,0], vpos=[-1,0,1]); halfspace(p=[connW-cVal,0,0], vpos=[-1,0,1]);
halfspace(p=[0,sideWallConnD-cVal,0], vpos=[0,-1,1]); halfspace(p=[0,connD-cVal,0], vpos=[0,-1,1]);
} }
} }
module applyHingePole() { module applyHingePole() {
apply_p() { apply_p() {
translate(v = [sideWallConnW-hingePoleR, hingePoleR, sideWallConnH]) translate(v = [sideWallConnW/2.0, hingePoleR, sideWallConnH])
cylinder(r = hingePoleR, h = hingePoleH); cylinder(r = hingePoleR, h = hingePoleH);
children(0); children(0);

View File

@ -15,16 +15,22 @@ module magnetModule() {
applyMagnetMount() applyMagnetMount()
base(); base();
connSlack = 0.1;
connW = sideWallConnW - connSlack;
connD = sideWallConnD - connSlack;
module base() { module base() {
translate(v=[connSlack, connSlack,0])
intersection() { intersection() {
cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]); cube(size = [connW, connD, sideWallConnLugDepression]);
// TODO: pattern for this? beef up mirror4XY? // TODO: pattern for this? beef up mirror4XY?
cVal = 0.5; cVal = 0.5;
halfspace(p=[0,cVal,0], vpos=[0,1,1]); halfspace(p=[0,cVal,0], vpos=[0,1,1]);
halfspace(p=[cVal,0,0], vpos=[1,0,1]); halfspace(p=[cVal,0,0], vpos=[1,0,1]);
halfspace(p=[sideWallConnW-cVal,0,0], vpos=[-1,0,1]); halfspace(p=[connW-cVal,0,0], vpos=[-1,0,1]);
halfspace(p=[0,sideWallConnD-cVal,0], vpos=[0,-1,1]); halfspace(p=[0,connD-cVal,0], vpos=[0,-1,1]);
} }
} }

View File

@ -13,6 +13,9 @@ include <./hingeModule.scad>
echo("Side Wall Height", sideWallZ); echo("Side Wall Height", sideWallZ);
echo("Side Wall Depth", sideWallY); echo("Side Wall Depth", sideWallY);
translate(v = [hingePoleDx ,hingePoleDy, 10])
rotate(a=[0,0,-120])
translate(v = [-hingePoleDx ,-hingePoleDy, 0])
*sideWallBase(); *sideWallBase();
module sideWallBase() { module sideWallBase() {
@ -24,7 +27,7 @@ module sideWallBase() {
module sideWallBase() { module sideWallBase() {
module roundThingHelper(x,y,z,r) { module sideWallShellHelper(x,y,z,r) {
translate(v=[r, r, 0]) translate(v=[r, r, 0])
minkowski() { minkowski() {
cube(size = [x-r, y - 2*r, z]); cube(size = [x-r, y - 2*r, z]);
@ -34,10 +37,10 @@ module sideWallBase() {
intersection() { intersection() {
difference() { difference() {
roundThingHelper(sideWallX,sideWallY,sideWallZ, baseRoundness); sideWallShellHelper(sideWallX,sideWallY,sideWallZ, baseRoundness);
translate(v=[sideWallThickness, sideWallThickness,0]) translate(v=[sideWallThickness, sideWallThickness,0])
roundThingHelper(sideWallX,sideWallY - 2*sideWallThickness, sideWallZ, baseRoundness); sideWallShellHelper(sideWallX,sideWallY - 2*sideWallThickness, sideWallZ, baseRoundness - sideWallThickness);
} }
halfspace(vpos=[-1,0,0], p=[sideWallX,0,0]); halfspace(vpos=[-1,0,0], p=[sideWallX,0,0]);
@ -53,32 +56,34 @@ module sideWallBase() {
apply_pn() { apply_pn() {
hull() { hull() {
hingeShell(); hingeShell();
hingeBacksideProjectionPlane(); hingeSideProjectionPlane();
} }
union() { union() {
hingeHole(); hingeHole();
// Trim parts of the wall for rotational clearance // Trim parts of the wall for rotational clearance
halfspace(p=[sideWallX-5, sideWallY, 0], vpos=[1,1.5,0]); halfspace(p=[0, sideWallY-2.5, 0], vpos=[-0.5,1,0]); // flat area to limit rotation against the main rail
halfspace(p=[sideWallX-10, sideWallY, 0], vpos=[1,2.5,0]);
} }
children(0); children(0);
} }
module hingeShell() { module hingeShell() {
translate(v = [sideWallX-hingePoleDx, sideWallY-(sideWallThickness+hingePoleDy), 0]) translate(v = [hingePoleDx, hingePoleDy, 0])
cylinder(r = hingeHoleShellR, h = sideWallZ); cylinder(r = hingeHoleShellR, h = sideWallZ);
} }
// XZ plane in line with the back of the case. Project the hinge pole shell onto this to fill any weird // XZ plane in line with the back of the case. Project the hinge pole shell onto this to fill any weird
// geometries from the curves of the side wall // geometries from the curves of the side wall
module hingeBacksideProjectionPlane() { module hingeSideProjectionPlane() {
translate(v=[sideWallX-hingePoleDx - hingeHoleShellR,sideWallY,0]) translate(v=[sideWallThickness, hingePoleDy - hingeHoleShellR, 0])
cube(size=[2*hingeHoleShellR, eps, sideWallZ]); cube(size=[eps, 2*hingeHoleShellR, sideWallZ]);
} }
module hingeHole() { module hingeHole() {
translate(v = [sideWallX-hingePoleDx, sideWallY-(sideWallThickness+hingePoleDy), 0]) translate(v = [hingePoleDx , hingePoleDy, 0])
cylinder(r = hingeHoleR, h = sideWallZ); cylinder(r = hingeHoleR, h = sideWallZ);
} }
} }

View File

@ -20,9 +20,6 @@ hingePoleR = 2;
hingePoleH = 5; hingePoleH = 5;
hingeHoleR = hingePoleR + 0.2; hingeHoleR = hingePoleR + 0.2;
hingePoleToConnectorOuterYZFace = hingePoleR/2;
hingePoleToConnectorOuterXZFace = hingePoleR/2;
sideWallZHingeSlack = 0.3; sideWallZHingeSlack = 0.3;
sideWallZGapClearance = 1.0; sideWallZGapClearance = 1.0;
@ -36,5 +33,5 @@ magnetMountToYBarFront = magnetMountShellRadius + sideWallSlotToXZ + 2;
sideWallXGapClearance = 0.2; sideWallXGapClearance = 0.2;
sideWallX = (yBarWidth-(railTotalWidth+railSlotToInnerYEdge)) - sideWallXGapClearance; sideWallX = (yBarWidth-(railTotalWidth+railSlotToInnerYEdge)) - sideWallXGapClearance;
hingePoleDx = hingePoleToConnectorOuterYZFace + sideWallSlotToOuterYEdge; hingePoleDx = sideWallSlotToOuterYEdge + sideWallConnW/2.0;
hingePoleDy = hingePoleToConnectorOuterXZFace + sideWallSlotToOuterXEdge; hingePoleDy = sideWallY - (sideWallSlotToOuterXEdge + hingeHoleR);