revert yBar changes, also WIP on side connectors and side wall
This commit is contained in:
@ -4,8 +4,17 @@ include <./math.scad>
|
|||||||
include <./common.scad>
|
include <./common.scad>
|
||||||
|
|
||||||
module halfspace(vpos, p) {
|
module halfspace(vpos, p) {
|
||||||
translate(p)
|
// TODO: clean up
|
||||||
align(a=[0,0,-1], b=vpos)
|
ref = [0,0,-1];
|
||||||
translate(v=[0,0,-inf/2])
|
|
||||||
|
if (cross(ref, vpos) == [0,0,0]) {
|
||||||
|
translate(p)
|
||||||
|
translate(v=[0,0, (ref*vpos) * -inf/2])
|
||||||
cube(size=[inf, inf, inf], center=true);
|
cube(size=[inf, inf, inf], center=true);
|
||||||
|
} else {
|
||||||
|
translate(p)
|
||||||
|
align(a=ref, b = vpos)
|
||||||
|
translate(v = [0, 0, -inf/2])
|
||||||
|
cube(size = [inf, inf, inf], center = true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -18,11 +18,11 @@ module align(a,b) {
|
|||||||
echo("b", b);
|
echo("b", b);
|
||||||
rot_axis = cross(a,b);
|
rot_axis = cross(a,b);
|
||||||
|
|
||||||
if (rot_axis == 0) {
|
if (rot_axis == [0,0,0]) {
|
||||||
error("Can't align - provided vectors are parallel");
|
error("Can't align - provided vectors are parallel");
|
||||||
}
|
}
|
||||||
|
|
||||||
echo("rot_axis", rot_axis);
|
//echo("rot_axis", rot_axis);
|
||||||
|
|
||||||
angle = acos(a*b/(norm(a)*norm(b)));
|
angle = acos(a*b/(norm(a)*norm(b)));
|
||||||
echo("angle", angle)
|
echo("angle", angle)
|
||||||
|
|||||||
@ -64,14 +64,16 @@ function screwRadiusSlacked(screwType) =
|
|||||||
module counterSunkHead_N(screwType, screwExtension=0, headExtension=0) {
|
module counterSunkHead_N(screwType, screwExtension=0, headExtension=0) {
|
||||||
|
|
||||||
if (screwType == "m3") {
|
if (screwType == "m3") {
|
||||||
cylinder(r1=m3RadiusSlacked, r2=m3CounterSunkHeadRadius, h=m3CounterSunkHeadLength);
|
translate(v=[0,0,-m3CounterSunkHeadLength])
|
||||||
|
union() {
|
||||||
|
cylinder(r1 = m3RadiusSlacked, r2 = m3CounterSunkHeadRadius, h = m3CounterSunkHeadLength);
|
||||||
|
|
||||||
translate(v=[0,0,-screwExtension])
|
translate(v = [0, 0, -screwExtension])
|
||||||
cylinder(r=m3RadiusSlacked, h=screwExtension);
|
cylinder(r = m3RadiusSlacked, h = screwExtension);
|
||||||
|
|
||||||
translate(v=[0,0,m3CounterSunkHeadLength])
|
|
||||||
cylinder(r=m3CounterSunkHeadRadius, h=headExtension);
|
|
||||||
|
|
||||||
|
translate(v = [0, 0, m3CounterSunkHeadLength])
|
||||||
|
cylinder(r = m3CounterSunkHeadRadius, h = headExtension);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
error("Unsupported screw type");
|
error("Unsupported screw type");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +0,0 @@
|
|||||||
// Config file for derived variables. These variables are calculated from profile variables and are used by
|
|
||||||
// multiple components.
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
include <./config.scad>
|
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ railSideMountThickness = 2.5;
|
|||||||
|
|
||||||
// Distance between the middle of a screw mount and the rail's vertical edges
|
// Distance between the middle of a screw mount and the rail's vertical edges
|
||||||
railScrewHoleToInnerEdge = 5;
|
railScrewHoleToInnerEdge = 5;
|
||||||
railScrewHoleToOuterEdge = 9;
|
railScrewHoleToOuterEdge = 7;
|
||||||
|
|
||||||
// Distance between the midpoint of the rail screw holes.
|
// Distance between the midpoint of the rail screw holes.
|
||||||
rackMountScrewWidth = maxUnitWidth + 2 * railScrewHoleToInnerEdge;
|
rackMountScrewWidth = maxUnitWidth + 2 * railScrewHoleToInnerEdge;
|
||||||
|
|||||||
56
rack/sideWall.scad
Normal file
56
rack/sideWall.scad
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
include <../helper/math.scad>
|
||||||
|
include <../helper/halfspace.scad>
|
||||||
|
include <../misc/magnet.scad>
|
||||||
|
include <./config.scad>
|
||||||
|
include <./yBar.scad>
|
||||||
|
include <./sideWallConnector.scad>
|
||||||
|
|
||||||
|
|
||||||
|
sideWallZ = 110;
|
||||||
|
sideWallY = 110;
|
||||||
|
sideWallX = 12;
|
||||||
|
sideWallThickness = 2.5;
|
||||||
|
|
||||||
|
module sideWall() {
|
||||||
|
|
||||||
|
sideWallBase();
|
||||||
|
|
||||||
|
|
||||||
|
module sideWallBase() {
|
||||||
|
|
||||||
|
module roundThingHelper(x,y,z,r) {
|
||||||
|
translate(v=[r, r, 0])
|
||||||
|
minkowski() {
|
||||||
|
cube(size = [x-r, y - 2*r, z]);
|
||||||
|
sphere(r = r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
intersection() {
|
||||||
|
difference() {
|
||||||
|
roundThingHelper(sideWallX,sideWallY,sideWallZ, baseRoundness);
|
||||||
|
|
||||||
|
translate(v=[sideWallThickness, sideWallThickness,0])
|
||||||
|
roundThingHelper(sideWallX,sideWallY - 2*sideWallThickness,sideWallZ, baseRoundness);
|
||||||
|
}
|
||||||
|
halfspace(vpos=[-1,0,0], p=[sideWallX,0,0]);
|
||||||
|
halfspace(vpos=[0,0,-1], p=[0,0,sideWallZ]);
|
||||||
|
halfspace(vpos=[0,0,1], p=[0,0,0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module applyHingeConnector() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module applyMagnetConnector() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module applyEpicVentilation() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*sideWall();
|
||||||
@ -2,19 +2,57 @@ include <./config.scad>
|
|||||||
include <../helper/screws.scad>
|
include <../helper/screws.scad>
|
||||||
|
|
||||||
sideWallConnectorSlotWidth = 7;
|
sideWallConnectorSlotWidth = 7;
|
||||||
|
|
||||||
|
sideWallConnW = 7;
|
||||||
|
sideWallConnD = 20;
|
||||||
|
sideWallConnLugDepression = 2;
|
||||||
|
|
||||||
|
yBarScrewHoleToOuterYEdge = 3.5;
|
||||||
|
yBarScrewHoleToFrontXEdge = 16;
|
||||||
|
|
||||||
module sideWallConnector_N() {
|
module sideWallConnector_N() {
|
||||||
|
translate(v = [0, 0, -sideWallConnLugDepression])
|
||||||
|
cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]);
|
||||||
|
|
||||||
lugW = 7;
|
translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, -(m3HeatSetInsertSlotHeightSlacked+sideWallConnLugDepression)])
|
||||||
lugD = 20;
|
heatSetInsertSlot_N(rackFrameScrewType);
|
||||||
lugH = 2;
|
|
||||||
|
|
||||||
insertDw = lugW/2;
|
|
||||||
|
|
||||||
insertDd = lugD-4;
|
|
||||||
|
|
||||||
translate(v = [0, 0, -lugH])
|
|
||||||
cube(size = [lugW, lugD, lugH]);
|
|
||||||
|
|
||||||
translate(v = [insertDw, insertDd, -(m3HeatSetInsertSlotHeightSlacked+lugH)])
|
|
||||||
heatSetInsertSlot_N(rackFrameScrewType);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module sideWallConnectorMagnet() {
|
||||||
|
difference() {
|
||||||
|
cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]);
|
||||||
|
|
||||||
|
translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, sideWallConnLugDepression])
|
||||||
|
counterSunkHead_N(rackFrameScrewType, headExtension=eps,screwExtension=inf10);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate(v = [0, 5, 6])
|
||||||
|
rotate(a = [0, 90, 0])
|
||||||
|
difference() {
|
||||||
|
|
||||||
|
hull() {
|
||||||
|
cylinder(r = magnetRSlacked + 1, h = magnetHSlacked+1);
|
||||||
|
translate(v=[5,0,(magnetHSlacked+1)/2])
|
||||||
|
cube(size=[eps, 2*(magnetRSlacked+1),magnetHSlacked+1], center=true);
|
||||||
|
}
|
||||||
|
translate(v=[0,0,1])
|
||||||
|
cylinder(r = magnetRSlacked, h = magnetHSlacked);
|
||||||
|
}
|
||||||
|
|
||||||
|
//cylinder(r = magnetRSlacked, h = magnetHSlacked);
|
||||||
|
}
|
||||||
|
|
||||||
|
module sideWallConnectorHinge() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module sideWallConnectorHinge_N() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
*sideWallConnector_N();
|
||||||
|
|
||||||
|
sideWallConnectorMagnet();
|
||||||
|
|
||||||
|
//counterSunkHead_N(rackFrameScrewType,screwExtension=10);
|
||||||
|
|||||||
@ -15,7 +15,7 @@ include <./yBarBasePlateConnector.scad>
|
|||||||
|
|
||||||
railSlotToInnerYEdge = 2;
|
railSlotToInnerYEdge = 2;
|
||||||
railSlotToXZ = 3;
|
railSlotToXZ = 3;
|
||||||
railSlotToSideWallSlot = 0;
|
railSlotToSideWallSlot = 2;
|
||||||
sideWallSlotToOuterYEdge = 3;
|
sideWallSlotToOuterYEdge = 3;
|
||||||
sideWallSlotToXZ = 3;
|
sideWallSlotToXZ = 3;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user