Skip to content

Enhance multi-device support with presets and angled gussets#22

Open
rwb5510 wants to merge 2 commits intospuder:mainfrom
rwb5510:multi-device+keystones+presets
Open

Enhance multi-device support with presets and angled gussets#22
rwb5510 wants to merge 2 commits intospuder:mainfrom
rwb5510:multi-device+keystones+presets

Conversation

@rwb5510
Copy link
Copy Markdown

@rwb5510 rwb5510 commented Apr 23, 2026

Summary

Combines the dual-sleeve fork with the keystone jack PR and adds two new features on top: angled support gussets for heavy devices, and a device preset table so the most common rack-mounted gear can be selected by name.

Going from the original single-opening generator to this version:

Original This PR
Openings per faceplate 1 1–4 (section_count)
Keystone jacks no per-section, side-selectable
Support gussets for heavy loads no per-section, auto-clamped
Device sizing manual (W/H/D) preset dropdown or Custom
Front-panel cutout collision checks rail column + wire holes

What changed

Multi-section layout (extends #20 by @cjolivier01)

  • section_count parameter (1–4). The original dual-sleeve branch hard-coded two sections; this generalizes to N with a unified iteration model.
  • Each section has its own width / height / depth / x_offset / y_offset plus independent feature flags.
  • Rack holes, air holes, zip-tie features, and wire holes all iterate per section; disabled sections are skipped entirely.
  • Shared rack-hole extrusion depth uses max(section_depth) so the slots still punch through the deepest sleeve.

Keystone jack cutouts (extends #21)

  • Per-section sectionN_keystone toggle, count (1–6), and side-of-opening selector (left/right of that specific opening).
  • Standard 14.94 × 16.51 mm cutouts with a configurable tolerance and jack-to-jack spacing.
  • Cutout depth is front_thickness + 2·tolerance — punches only the faceplate, not the sleeve.
  • Automatic clearance from two obstacles:
    • Front wire holes (when front_wire_holes is enabled): keystones are pushed outward by wire_diameter × 0.7 so the circles don't clip the jack bezel.
    • Rack-rail slot columns: any jack that would land within slot_len/2 + support_rail_margin of the rails is skipped with an echo warning instead of cutting into the mounting slot.

Angled support gussets (new)

  • Per-section sectionN_support toggle. When enabled, renders triangular prisms on both outer walls of the sleeve, attaching chassis side to faceplate.
  • Gusset is outside the sleeve cavity so it never blocks device insertion.
  • Two global sizing params: support_width_requested (how far along the faceplate) and support_depth_requested (how far back along the sleeve).
  • The width is clamped per side, per section to the nearest obstacle: either an adjacent section's chassis wall or the rack-rail column, minus support_rail_margin. If the available gutter drops below support_min_width, that side is skipped with an echo warning.
  • Rationale: a ~1.2 kg Mac Mini or ~1.3 kg OptiPlex Micro cantilevered on a 3 mm PLA faceplate puts sustained bending load on the sleeve-to-faceplate joint. PLA creeps under sustained load at room temperature; a gusset dramatically raises the joint's moment of inertia and reduces long-term deformation.

Device presets (new)

  • sectionN_device dropdown with ~25 preloaded sizes (Firewalla, UniFi, Intel/Dell/HP/Lenovo micro PCs, Mac Mini, Synology DS-series, etc).
  • Preset dimensions sourced from the MakerWorld 10-inch Mini Rack Generator project page: https://makerworld.com/en/models/1765102-10-inch-mini-rack-generator
  • Selecting a preset overrides the section's custom width/height/depth. Choosing Custom uses the manual values, preserving the original workflow.
  • An echo warning fires on preview if a chosen preset is taller than rack_height (e.g. picking a Mac Mini in a 1U config).

Parameter file organization

  • Grouped with OpenSCAD customizer section headers (/* [Section 1] */ etc.) so the customizer groups parameters by section and feature.

Credits

Testing notes

  • Render 1U single-section with preset = UniFi Security Gateway, verify matches original design.
  • Render 1U two-section with both Firewalla Purple SE, keystones set to center layout (§1 right, §2 left).
  • Render 2U single-section with M4 Mac Mini preset and support = true.
  • Toggle front_wire_holes with keystones enabled on both sides; check no bezel-to-wire-hole overlap in preview.
  • Four-section layout with offsets chosen to leave < 3 mm gutter on one side; confirm support gets skipped (check console for warning).
  • Verify customizer dropdown populates with all presets on OpenSCAD 2021.01+.

rwb5510 added 2 commits April 22, 2026 23:08
…led supports

Add multi-section support, keystone jacks, device presets, and angled gussets

Merge and extend the original single-switch mount with three new capabilities:
multi-section faceplates (up to 4 openings), per-section keystone jack cutouts,
and optional angled support gussets for heavy devices. Also adds a device
preset table so common gear can be selected by name instead of entering
dimensions by hand.

- Generalize the dual-sleeve branch (PR spuder#20, @cjolivier01) to N sections with
  a section_count parameter and per-section enable flags
- Merge the keystone jack feature from PR spuder#21, extended to be per-section
  with side selection and automatic clearance around front wire holes and
  rack-rail slot columns
- Add angled triangular gussets that tie each sleeve to the faceplate, with
  per-side width auto-clamped to available gutter space
- Add a device preset dropdown per section with ~25 preloaded sizes sourced
  from the MakerWorld 10-inch Mini Rack Generator project page; Custom
  preserves the original manual-dimension workflow
- Emit echo warnings when a preset exceeds rack_height, when keystones
  collide with rail columns, or when a gusset is clamped below the minimum
  renderable width

Co-authored-by: cjolivier01 <https://github.com/cjolivier01>
Preset dimensions: https://makerworld.com/en/models/1765102-10-inch-mini-rack-generator
Add usage guide for 10-inch rack mount generator with detailed instructions and parameters.
@rwb5510 rwb5510 mentioned this pull request Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants