improvements to side wall hinge
This commit is contained in:
@ -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);
|
||||||
|
|||||||
@ -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]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user