Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions rack-mount/catalog/honeycomb-tray/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

# Angle Bracket System


![demo](./animate.gif)

Please see [honeycomb.scad](./honeycomb.scad) for config and building. Make sure the correct rack profile is configured in [rackFrame.scad](../../config/rackFrame.scad).

This uses the [angle brackets](./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 |
|---------------------------------------------------------------|---------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------|
| <img src="../../media/bom/fhcs_medium.gif" height="60" width="72"> | 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. |
| <img src="../../media/bom/hex_nut.gif" height="60" width="72"> | M3 hex nut | 8 | ☝️ |
Binary file added rack-mount/catalog/honeycomb-tray/animate.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions rack-mount/catalog/honeycomb-tray/animate.scad
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
use <./entry.scad>

$vpt = [120,-30,63];
$vpr = [74,0,25];
$vpd = 550;
$vpf = 22.50;

animateAngleBrackets(at=$t);


module animateAngleBrackets(at=$t) {

x = 150;
y = 70;
dx = abs(lerp(a=-20, b=20, t=at));
dy = abs(lerp(a=-50, b=50, t=at));

u = abs(at - 0.5) > 0.25 ? 3 : 4;

angleBrackets(visualize=true, boxWidth=x+dx, boxDepth=y+dy, u=u);

}


36 changes: 36 additions & 0 deletions rack-mount/catalog/honeycomb-tray/entry.scad
Original file line number Diff line number Diff line change
@@ -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();
108 changes: 108 additions & 0 deletions rack-mount/catalog/honeycomb-tray/honeycomb.scad
Original file line number Diff line number Diff line change
@@ -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 <entry.scad>` resolves correctly.
use <entry.scad>;

// ---------------- 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 = 3.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();