summaryrefslogtreecommitdiff
path: root/box/box.scad
diff options
context:
space:
mode:
Diffstat (limited to 'box/box.scad')
-rw-r--r--box/box.scad137
1 files changed, 120 insertions, 17 deletions
diff --git a/box/box.scad b/box/box.scad
index 585668e..5c53432 100644
--- a/box/box.scad
+++ b/box/box.scad
@@ -58,12 +58,12 @@ pcbThickness = 1.6;
//-- How much the PCB needs to be raised from the base
//-- to leave room for solderings and whatnot
-standoffHeight = 3.4;
+standoffHeight = 3.9; //4.3;
pinDiameter = 2.7;
standoffDiameter = 6;
//-- padding between pcb and inside wall
-paddingFront = 0.1;
+paddingFront = 49.4;
paddingBack = 0.1;
paddingRight = 0.1;
paddingLeft = 0.1;
@@ -101,7 +101,7 @@ cutoutsLid = [
// (5) = { yappRectangle | yappCircle }
// (6) = { yappCenter }
cutoutsFront = [
- [-3.67 * IN + origin_y - 9/2, 0, 9, 3.3, 0, yappRectangle]
+ //[-3.67 * IN + origin_y - 9/2, 0, 9, 3.3, 0, yappRectangle]
];
//-- back plane -- origin is pcb[0,0,0]
@@ -123,7 +123,7 @@ cutoutsBack = [
// (2..5) = yappLeft / yappRight / yappFront / yappBack (one or more)
// (n) = { yappSymmetric }
snapJoins = [
- [2, 5, yappLeft, yappRight, yappSymmetric]
+ [20, 5, yappLeft, yappRight, yappSymmetric]
];
//-- origin of labels is box [0,0,0]
@@ -135,9 +135,8 @@ snapJoins = [
// (5) = size
// (6) = "label text"
labelsPlane = [
- [12, 35, 0, "lid", "Liberation Mono:style=bold", 4, "Square Dishy"],
- [15, 30, 0, "lid", "Liberation Mono:style=bold", 4, "150W PoE++" ],
- [15, 25, 0, "lid", "Liberation Mono:style=bold", 4, "50V DC" ],
+ [12, 35, 0, "lid", "Liberation Mono:style=bold", 4, "Square Dishy 150W PoE++"],
+ [35, 28, 0, "lid", "Liberation Mono:style=bold", 4, "50V DC" ],
];
// Reference board model
@@ -149,31 +148,135 @@ translate([pcbX - origin_x, pcbY + origin_y, pcbZ - pcbThickness / 2])
onLidGap = 0;
module lid_diagrams() {
- translate([15, 18, -lidLabelDepth])
+ translate([12, 27.5, -lidLabelDepth])
linear_extrude(basePlaneThickness)
scale([0.15, 0.15, 1])
import("Polarity_marking_center_positive.svg");
+}
+
+module sl_plug() {
+ h1 = 36;
+ h2 = 3.5;
+ h3 = 11;
+ h4 = 55.5 - h3;
+ d1 = 12;
+ d2 = 10;
+ d3 = 3.3;
+ hull() {
+ cylinder(h=h1, d1=d1, d2=d2);
+ translate([0, 0, h1])
+ cylinder(h=h2, d1=d2, d2=d3);
+ translate([0, 5, 0]) {
+ cylinder(h=h1, d1=d1, d2=d2);
+ translate([0, 0, h1])
+ cylinder(h=h2, d1=d2, d2=d3);
+ }
+ }
+ hull() {
+ cylinder(h=h4, d=d3);
+ translate([0, 5, 0])
+ cylinder(h=h4, d=d3);
+ }
+ translate([13, 15, -h3])
+ rotate([0, 0, 90])
+ linear_extrude(h3)
+ mirror([1, 0, 0])
+ offset(0.2)
+ import("outline.svg");
+}
- translate([shellLength - frontLabelDepth, 23.5, -12])
- rotate([90, 0, 90])
- linear_extrude(basePlaneThickness)
- scale([0.075, 0.075, 1])
- import("plug.svg");
+module sl_shell() {
+ difference() {
+ hull() {
+ minkowski() {
+ sl_plug();
+ sphere(r=2);
+ }
+ translate([15, 0, 0])
+ minkowski() {
+ sl_plug();
+ sphere(r=2);
+ }
+ }
+ sl_plug();
+ translate([-25, -25, -60])
+ cube(50);
+ translate([-25, -25, 39.8])
+ cube(50);
+ hull() {
+ $fn=16;
+ translate([0, -0.35, 0])
+ cylinder(h=50, d=3.5);
+ translate([0, 5.35, 0])
+ cylinder(h=50, d=3.5);
+ }
+ hull() {
+ translate([7, -15, -4.5])
+ rotate([90, 0, 45])
+ cylinder(h=10, d=7);
+ translate([7, -15, -13])
+ rotate([90, 0, 45])
+ cylinder(h=10, d=7);
+ }
+ }
}
+module solidMinkowskiBox(L, W, H, rad, plane, wall)
+{
+ minkowski() {
+ cube([L+(wall*2)-(rad*2),
+ W+(wall*2)-(rad*2),
+ (H*2)+(plane*2)-(rad*2)],
+ center=true);
+ sphere(rad);
+ }
+}
+
+
difference() {
- YAPPgenerate();
+ union() {
+ YAPPgenerate();
+ difference() {
+ translate([pcbX + 101, pcbY + origin_y - 3.67 * IN + 5/2, pcbZ + 3.3/2])
+ rotate([180, 90, 0])
+ sl_shell();
+ difference() {
+ cube(400, center=true);
+ translate([(shellLength/2), shellWidth/2, (baseWallHeight) + basePlaneThickness]) {
+ $fn=25;
+ solidMinkowskiBox(shellInsideLength, shellInsideWidth, baseWallHeight,
+ roundRadius, basePlaneThickness, wallThickness);
+ }
+ }
+ translate([0, 0, (baseWallHeight+basePlaneThickness+
+ lidWallHeight+lidPlaneThickness)])
+ lidShell();
+ }
+ }
+
+ translate([pcbX + 101, pcbY + origin_y - 3.67 * IN + 5/2, pcbZ + 3.3/2])
+ rotate([180, 90, 0])
+ sl_plug();
if (printLidShell) {
if (showSideBySide) {
mirror([0,0,1])
mirror([0,1,0])
- translate([0, (5 + shellWidth+(shiftLid/2))*-2, 0])
- lid_diagrams();
+ translate([0, (5 + shellWidth+(shiftLid/2))*-2, 0]) {
+ lid_diagrams();
+ translate([0, 0, -(baseWallHeight+basePlaneThickness+
+ lidWallHeight+lidPlaneThickness+onLidGap)])
+ translate([pcbX + 101, pcbY + origin_y - 3.67 * IN + 5/2, pcbZ + 3.3/2])
+ rotate([180, 90, 0])
+ sl_plug();
+ }
} else {
translate([0, 0, (baseWallHeight+basePlaneThickness+
lidWallHeight+lidPlaneThickness+onLidGap)])
- lid_diagrams();
+ lid_diagrams();
+ translate([pcbX + 101, pcbY + origin_y - 3.67 * IN + 5/2, pcbZ + 3.3/2])
+ rotate([180, 90, 0])
+ sl_plug();
}
}
} \ No newline at end of file