diff --git a/rack-mount/catalog/honeycomb-tray/README.md b/rack-mount/catalog/honeycomb-tray/README.md new file mode 100644 index 0000000..0062c92 --- /dev/null +++ b/rack-mount/catalog/honeycomb-tray/README.md @@ -0,0 +1,16 @@ + +# Angle Bracket System + + + + +Please see [entry.scad](./entry.scad) for config and building. Make sure the correct rack profile is configured in [rackFrame.scad](../../../config/rackFrame.scad). + +This uses the [angle brackets](../../angle-bracket/entry.scad) for the sides, but creates a full honeycomb tray spanning boxWidth and boxDepth for more stability, ventilation and less print material. + +### BOM: + +| Item | Name | Quantity | Comment | +|---------------------------------------------------------------|---------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------| +| | M3x12 FHCS | 8 | Extras are useful and inexpensive. If you plan on eventually stacking multiple racks together, don't hesitate to get a lot more. | +| | M3 hex nut | 8 | ☝️ | diff --git a/rack-mount/catalog/honeycomb-tray/bracket.scad b/rack-mount/catalog/honeycomb-tray/bracket.scad new file mode 100644 index 0000000..82a4e3c --- /dev/null +++ b/rack-mount/catalog/honeycomb-tray/bracket.scad @@ -0,0 +1,36 @@ +include <../../common.scad> + +use <../../enclosed-box/sideRail.scad> + + +/* + Simple angle bracket mounting system. Mainly derived the enclosed box system. +*/ +module angleBrackets ( + // begin config //////////////////////////////////////////////////////////////////////////////////////////////////////// + + // Does not affect any part dimensions. Set this to true to visualize how a box would be mounted. + visualize = false, + + + thickness = 1, + boxWidth = 203, + boxDepth = 145, + sideVent = true, + u = 3 + + // end config ////////////////////////////////////////////////////////////////////////////////////////////////////////// +) { + + sideSupportRailBase(top=false, defaultThickness=thickness, railSideThickness=thickness, supportedZ=10*u-2*thickness, supportedY=boxDepth, supportedX=boxWidth, sideVent=sideVent); + + rightRailTrans = visualize + ? translate(v=[boxWidth,0,0]) * mirror(v=[1,0,0]) + : translate(v=[30,0,0]) * mirror(v=[1,0,0]); + + multmatrix(rightRailTrans) + sideSupportRailBase(top=false, defaultThickness=thickness, railSideThickness=thickness, supportedZ=10*u-2*thickness, supportedY=boxDepth, supportedX=boxWidth, sideVent=sideVent); +} + + +angleBrackets(); diff --git a/rack-mount/catalog/honeycomb-tray/entry.scad b/rack-mount/catalog/honeycomb-tray/entry.scad new file mode 100644 index 0000000..c012b91 --- /dev/null +++ b/rack-mount/catalog/honeycomb-tray/entry.scad @@ -0,0 +1,108 @@ + +// ===== Combined Assembly (Fixed): Entry Brackets + Honeycomb Tray ===== +// - Uses your exact bracket geometry from entry.scad +// - Places right bracket using visualize=true so spacing = boxWidth +// - Honeycomb subtraction fixed: keeps walls, removes hex cores +// +// Keep your project structure so `use ` resolves correctly. +use ; + +// ---------------- User Parameters ---------------- +boxWidth = 203; +boxDepth = 145; +base_thickness = 3.0; // tray plate thickness +wall_thickness = 1.0; // forwarded to entry.scad's thickness +u = 4; +sideVent = true; + +// Honeycomb +hex_side = 6.0; +cell_wall = 1.5; +rim_width = 3.0; + +// Vertical and bonding tweaks +baseZ = -1.0; // Z of tray (align with rail bottoms, -1.0 puts it on print bed) +bondOverlapX = 0.0; // extend tray under rails in X (each side) +bondOverlapY = 0.0; // extend slightly front/back in Y if desired + +// ---------------- Honeycomb Helpers ---------------- +module __hex2d(side) { + polygon(points=[ for (i=[0:5]) [ side*cos(60*i), side*sin(60*i) ] ]); +} + +module __honeycomb_plate(width, depth, plate_h, side, wall, rim) { + // Full plate, then subtract ONLY the inner hex cores inside the rim area. + difference() { + cube([width, depth, plate_h], center=false); + + // Subtract hex cores + x_step = 1.5 * side; + y_step = sqrt(3) * side; + w = width - 2*rim; + d = depth - 2*rim; + + translate([rim, rim, 0]) + union() { + for (ix = [0 : ceil(w / x_step) + 1]) { + x = side + ix * x_step; + y_off = (ix % 2) * (y_step/2); + for (iy = [0 : ceil(d / y_step) + 1]) { + y = y_off + iy * y_step; + if (x >= 0 && x <= w && y >= 0 && y <= d) { + // subtract inner hex only -> leaves walls + translate([x, y, 0]) + linear_extrude(height=plate_h + 0.05) + __hex2d(max(0.01, side - wall)); + } + } + } + } + } +} + +// ---------------- Bridge to your entry.scad ---------------- +module __entry_brackets( + wall_t = wall_thickness, + width = boxWidth, + depth = boxDepth, + unit = u, + vent = sideVent +) { + // visualize=true so right rail is placed at x=boxWidth + angleBrackets( + visualize = true, + thickness = wall_t, + boxWidth = width, + boxDepth = depth, + u = unit, + sideVent = vent + ); +} + +// ---------------- Final Assembly ---------------- +module angleBrackets_with_honeycomb_tray( + width = boxWidth, + depth = boxDepth, + base_h = base_thickness, + wall_t = wall_thickness, + unit = u, + vent = sideVent, + hex_side_in = hex_side, + cell_wall_in = cell_wall, + rim_in = rim_width, + baseZ_in = baseZ, + bondOX = bondOverlapX, + bondOY = bondOverlapY +) { + union() { + // 1) Brackets from your entry.scad + __entry_brackets(wall_t=wall_t, width=width, depth=depth, unit=unit, vent=vent); + + // 2) Tray centered between x=[0,width] and y=[0,depth], with small overlap under rails + translate([-bondOX, -bondOY, baseZ_in]) + __honeycomb_plate(width + 2*bondOX, depth + 2*bondOY, base_h, hex_side_in, cell_wall_in, rim_in); + } +} + +// Preview +angleBrackets_with_honeycomb_tray(); diff --git a/rack-mount/catalog/honeycomb-tray/honeycomb_frame.png b/rack-mount/catalog/honeycomb-tray/honeycomb_frame.png new file mode 100644 index 0000000..5e4295b Binary files /dev/null and b/rack-mount/catalog/honeycomb-tray/honeycomb_frame.png differ