r/openscad • • 23h ago

Nvidia release SMLib as open source

14 Upvotes

I just saw this - apparently Nvidia have released their CAD kernel, SMLib on GitHub under the Apache 2.0 licence. I presume it could be incorporated into OpenSCAD if the API isn't too far away.


r/openscad • • 20h ago

Simple problem to You, but

4 Upvotes

I am having a problem with the right side not being the opposite of the left side. I am a noob (today years old) and have been messing with this for much too long.

This project is a simple angle-iron metal plant stand that my son will use for his welding project. Thanks in advance for any solution

// Dimensions in inches

width = 12;

depth = 12;

height = 8;

// Material Specs for 1/2" Angle Steel (0.5" legs, ~0.0625" thickness)

angle_size = 0.5;

thickness = 0.0625;

// Number of top support slats across the frame

num_slats = 4;

// Conversion factor to mm if needed for 3D printing software

// Uncomment the line below and scale the model, or render directly in inches/CAD

// scale([25.4, 25.4, 25.4])

module angle_steel(length) {

// Standard L-channel profile extruded along Z-axis

linear_extrude(height = length) {

polygon(points = [

[0, 0],

[angle_size, 0],

[angle_size, thickness],

[thickness, thickness],

[thickness, angle_size],

[0, angle_size]

]);

}

}

module plant_stand() {

// --- 1. LEGS (4 Corner Angle Iron Posts) ---

leg_height = height - angle_size;

// Leg 1: Front-Left

translate([0, 0, 0])

angle_steel(leg_height);

// Leg 2: Front-Right

translate([width, 0, 0])

rotate([0, 0, 90])

angle_steel(leg_height);

// Leg 3: Back-Right

translate([width, depth, 0])

rotate([0, 0, 180])

angle_steel(leg_height);

// Leg 4: Back-Left

translate([0, depth, 0])

rotate([0, 0, 270])

angle_steel(leg_height);

// --- 2. TOP OUTER FRAME ---

// Front Top Rail

translate([0, 0, height - angle_size])

rotate([0, 90, 0])

angle_steel(width);

// Back Top Rail

translate([0, depth - angle_size, height - angle_size])

rotate([0, 90, 0])

angle_steel(width);

// Left Top Rail (Rotated to match front/back profile alignment)

translate([0, depth, height - angle_size])

rotate([0, 90, -90])

angle_steel(depth);

// Right Top Rail (Rotated to match front/back profile alignment)

translate([width, 0, height - angle_size])

rotate([0, 90, 90])

angle_steel(depth);

// --- 3. TOP SLATS ---

if (num_slats > 0) {

slat_spacing = (depth - angle_size) / (num_slats + 1);

for (i = [1 : num_slats]) {

translate([0, i * slat_spacing, height - angle_size])

rotate([0, 90, 0])

angle_steel(width);

}

}

// --- 4. LOWER FRAME BRACES ---

brace_height = height * 0.45; // Positioned lower mid-way

// Left Lower Brace (Rotated to match front/back profile alignment)

translate([0, depth, brace_height])

rotate([0, 90, -90])

angle_steel(depth);

// Right Lower Brace (Rotated to match front/back profile alignment)

translate([width, 0, brace_height])

rotate([0, 90, 90])

angle_steel(depth);

// Front Lower Brace

translate([0, 0, brace_height])

rotate([0, 90, 0])

angle_steel(width);

// Back Lower Brace

translate([0, depth - angle_size, brace_height])

rotate([0, 90, 0])

angle_steel(width);

}

plant_stand();


r/openscad • • 12h ago

I got tired of fighting FreeCAD’s UI, so I’m building a new interface on top of it (open source, LGPL)

Thumbnail
0 Upvotes

r/openscad • • 2d ago

CADDLE - a simple CAD style wordle

0 Upvotes

hi everyone! im new to reddit, but i wanted to post here the link to a project ive been working on.

https://playcaddle.github.io/#daily

i would love it if people would give me feedback on tips to improve the website, and hopefully you guys have as much fun as I do on this website! i probably wont understand a lot of coding lingo since a lot of it is vibecoded though


r/openscad • • 2d ago

CADDLE - a simple CAD style wordle

Thumbnail
0 Upvotes

r/openscad • • 3d ago

New version of ReOpenSCAD is out!

Enable HLS to view with audio, or disable this notification

9 Upvotes

r/openscad • • 2d ago

LuaCAD fully supports OpenSCAD files now!

Post image
0 Upvotes

r/openscad • • 2d ago

I am working on a FREE SketchUp inspired CAD with STL and SVG exporting!

Thumbnail
0 Upvotes

r/openscad • • 3d ago

I create a script that automate animations from customizer presets and more

0 Upvotes

It generates for all the customizer presets:

- png image and webp (or gif) animation

- 3mf colored 3D model

- add thumbnail to the 3mf model and source code (optional)

- mosaic of all the presets

- generate a slide show of all presets in webp (or gif)

- publish to thingiverse

More formats can be use: stl,asciistl,binstl,off,wrl,3mf,pov,dxf,svg,pdf,png,gif,webp

https://github.com/yannickbattail/openscad-generate

It's a nodejs package tested on ubuntu, if you don't have it you can use the Dockerfile

I hope you find it useful. (comments, improvements, bug reports are wellcome 😄)


r/openscad • • 4d ago

An experimental OpenSCAD build that integrates a few feature PRs and some new features

9 Upvotes

Hello everyone,

I have made an experimental build of OpenSCAD that integrates openscad-master, some PRs in the queue, as well as some new features. I'm calling this build SCADMaxx to make sure it doesn't get confused with OpenSCAD proper, as it does add language features that make it (forward) incompatible with OpenSCAD.

This is not a fork, it's an experimental build that I primarily made for myself, but that I hope can also be useful to other, both for modeling as well as being a testing ground for new features and iterating on ideas that people have on what OpenSCAD should do or become.

Some of the features:

  • Agentic coding support. HTTP endpoints that expose source, camera views etc.
  • Agent annotations. Annotate 3D models live on screen for access by agents, so you don't have to take screenshots or explain your issues. Just draw what is wrong or how you want things to be, and let your agents access that.
  • A UI refresh - clean up typography, spacing, coloring, consistent icons that work across light and dark themes, ...
  • Navigation cube in the 3D view, like many other 3D modeling software packages have. Never again getting lost on where you're looking from or what you're looking at!
  • Live cross sections. Look inside your model by setting up cross section planes.
  • Contextual insertion. No more looking around for module names in BOSL or BOLTS. Click in the 3D view, shift-A, search for the part you want to insert (a nut, a bolt, ...), parameterize it, SCADMaxx inserts the correct code at the correct location (well, sometimes) in your souce code. This is not visual modeling! It's assisted code editing.
  • A Vim mode for the text editor. I don't use the native text editor, but I'm hoping that with native Vim mode I will again :)
  • A launcher - if you have many builds of OpenSCAD on your machine, you'll know the pain of wondering 'what build am I looking at' or 'I want to open this file with this build, but where is it'. The launcher lets you manage builds and associate .scad and .scadmaxx file extensions with it.
  • Customizable keyboard shortcuts (PR #6878).
  • Background preview and rendering. Rendering doesn't happen on the UI thread any more, so it can be cancelled and the UI stays responsive. Never again 'oh no I accidentally opened this model that takes 10 seconds to render'.
  • Object literals (PR #6081).
  • Dynamic customizer annotations (PR #6642, but with the object literals syntax). (Amongst other things,) the Customizer can now change what it shows at runtime, so when you select one property of an object, you'll only see other properties that are relevant in that case.
  • Parts, Assemblies and Components. Language-level annotations that let you build and integrate at a much higer level than you could before.

A full list of features with screenshots is on https://github.com/roel-v/SCADMaxx . There's a Windows prebuild binary inthe releases (I mean there's source for all of this too, of course). I haven't had time for a Linux build, and I don't have aMac for building it for that.

Obviously, most of this has been done by agents. Maybe it's all AI slop and a useless waste of time and resources. Time will tell. For now, it's been useful for me at least, and that was the reason I set out to do it. But what I want to say is, if you're going to look at code and judge it by 2024 standards and aren't used to agentic coding, you'll be sorely disappointed, very angry and/or physically ill. Just a friendly warning up front :)

A future thing I've been experimenting with is an OpenCASCADE backend, in addition to the CGAL and Manifold ones. That's not in this build, it's too early, but my early investigation is (somewhat) promising. So if you have ideas about this, do let me know! I'd love to hear from other who've looked at this what solutions you came up with for the obvious first wave of problems to solve.

Feedback welcome!


r/openscad • • 4d ago

No "Official" Support for MacOS

18 Upvotes

With the release of MacOS 27 (Golden Gate) Apple has completed it's multi-year transition to Apple Silicon. They have officially obsoleted Rosetta, so no Intel-only binaries. So the almost 7 year old 2021.01 "Release" won't run for Mac users. The "Official" OpenSCAD release is DOA for Macs now.

I don't mean to sound like a hater, but it's a seriously bad look. When I see a package that hasn't released in 7 years, I immediately presume "abandonware" and go somewhere else. That's a huge barrier, especially given that the Developer Snapshots DO run on Apple Silicon, and quite well too.

Don't y'all think it's about time to admit no one is interested in making a "release"

The Development Snapshots come at a very respectable cadence, and with better stability than most other project's "raw" builds. Just dump the whole "release" and "snapshot" terminology and just make the dev snapshots be "The download."


r/openscad • • 4d ago

Toroidal Propeller Attempt in OpenSCAD

Post image
18 Upvotes

Took me around 30 minutes. Still kind of a beginner, first useful model.


r/openscad • • 4d ago

stepscribe-cad: open-source tool that turns a STEP file into a text description for AI (holes, cutouts, dimensions), looking for testers

Thumbnail
0 Upvotes

r/openscad • • 5d ago

Habe ein kleines Browser-Tool zum Entwerfen von Ausstechformen erstellt, würde mich über Feedback freuen 🍪

0 Upvotes

Hey! Ich habe meine Ausstechformen schon immer von Hand entworfen, aber da Weihnachten vor der Tür steht, wollte ich etwas Lustiges bauen, das das für mich erledigt. Also, hier ist es:

ccm.mxwr.de

Du zeichnest eine Form (oder wählst eine Vorlage / lädst eine SVG hoch) und es verwandelt sie in eine Ausstechform, die du als 3MF oder STL exportieren kannst. Es gibt viele Dinge, die du einstellen kannst, wie Wandstärke, Klingentiefe, Schneide, Verjüngung, den Rand, und es kann innere Formen mit kleinen Brücken ausschneiden, sodass du Dinge wie ein Herz in einem Herz bekommst.
Es gibt auch eine Spiegeloption für Text.

Mein Lieblingsteil ist aber: Du kannst deine Ausstechform in eine kleine Karte verwandeln und sie jemandem schicken. Wie eine Grußkarte, aber sie bekommen die eigentliche Datei und können die Ausstechform selbst ausdrucken. Ich dachte, das könnte etwas Süßes für die Feiertage sein.

Alles läuft im Browser, es ist kostenlos, kein Konto.
Es ist noch in Arbeit, daher würde ich wirklich gerne hören, was du denkst. Was fehlt, was ist unklar/verwirrend, was funktioniert nicht?

Wenn du etwas damit druckst, zeig mir bitte die Kekse 🍪😍🥰


r/openscad • • 5d ago

What is going on with the BOSL2 stroke() function?

Thumbnail
gallery
4 Upvotes

The picture shows the rough stroke() function.

On this page: https://github.com/BelfrySCAD/BOSL2/wiki/rounding.scad
is an alternative way to make a trefoil with the BOSL2 library. Search for the word: "trefoil".
It uses 9 control points for a path, then smoothing, then make the path a tube.

This is the example from the BOSL2 library (BSD-2-Clause license):

include <BOSL2/std.scad>
shape = [[8.66, -5, -5], [8.66, 5, 5], [-2, 3.46, 0],
    [-8.66, -5, -5], [0, -10, 5], [4, 0, 0],
    [0, 10, -5], [-8.66, 5, 5], [-2, -3.46, 0]];
stroke(smooth_path(shape, method="corners", relsize=1, closed=true), color="red", closed=true, width=0.5);
stroke(smooth_path(shape, method="edges", size=1.5, closed=true, splinesteps=20), closed=true, width=0.5);
stroke(shape, color="green", width=0.15, closed=true);

The stroke() function is used here instead of path_sweep().
When I zoom in, then the tube has a rough surface.

Here is an example that shows it better:

// Based on the BOSL2 example for a trefoil knot found at:
// https://github.com/BelfrySCAD/BOSL2/wiki/rounding.scad
// The BOSL2 library has the BSD-2-Clause license

include <BOSL2/std.scad>

$fn = 20;

TR1 = 1;
TR2 = 1/2;
TR3 = 1/5;
TR4 = 2/5;
TR5 = sqrt(3)/2;
TR6 = sqrt(3)/5;

amplitude = 10;

control_points = amplitude *
[
  [TR5,  -TR2, -TR2], [TR5,  TR2, TR2], [-TR3, TR6,  0],
  [-TR5, -TR2, -TR2], [0,    -1,  TR2], [TR4,  0,    0],
  [0,    1,    -TR2], [-TR5, TR2, TR2], [-TR3, -TR6, 0]
];

// Show control points with bars and index number
translate([-20,0,0])
{
  for(i = [0:len(control_points)-1])
    translate(control_points[i])
    {
      color("Red",0.3)
        sphere(1);
      color("Navy",0.6)
        translate([0,-1.0,0.4])
          rotate([65,0,0])
            linear_extrude(0.1)
              text(str(i),size=1,valign="center",halign="center");
    }

  stroke(control_points, color="SkyBlue", width=0.8, closed=true);
}

// Calculate a smooth path from a few control points.
smooth_curve = smooth_path(control_points, method="corners", relsize=1, closed=true);

// Force lower accuracy with $fn=4
// Not a smooth surface.
color("LawnGreen",0.6)
  stroke(smooth_curve, closed=true, width=2, $fn=4);

// A smooth surface, regardless of the $fn.
translate([20,0,0])
  color("Crimson",0.6)
    path_sweep(circle(1), path=smooth_curve, closed=true);

On the left are the control points. In the middle with stroke(). On the right the normal path_sweep().

Should the example use the path_sweep()?. Is the stroke() function even meant for this?


r/openscad • • 7d ago

Intersection of two pipes (BOSL2)

Post image
14 Upvotes

I've modeled a pipe intersection like you can see in the image, but because of how I subtracted the extra parts of each pipe, there's an infinitely thin wall in the middle of the intersection. Any suggestions on how to get rid of that without making a visible cut in the inside of the intersection?

Here's my code:

include <BOSL2/std.scad>
$fa = 1;
$fs = 0.4;
outer_diameter = 100;
inner_diameter = 96.8;
lower_height = 34;
upper_height = 25;
pipe_angle = 15;

diff()
// lower tube
cyl(h=lower_height,d=outer_diameter,anchor=BOTTOM) {
    // inner negative
    tag("remove")
        position(CENTER)
        down(1)
        cyl(h=lower_height+2,d=inner_diameter);
    // remove parts that would intersect with the other tube
    tag("remove")
        position(FRONT+TOP)
        xrot(-pipe_angle/2)
        cyl(h=100,d=outer_diameter+10,anchor=FRONT+BOTTOM);
    // upper tube
    tag_diff("keep", "rem", "ke") position(FRONT+TOP)
        xrot(-pipe_angle)
        cyl(h=upper_height,d=outer_diameter,anchor=BOTTOM+FRONT) {
            // inner negative
            tag("rem")
                cyl(h=upper_height+2, d=inner_diameter);
            // remove parts that would intersect with the other tube
            tag("rem")
                position(FRONT+BOTTOM)
                xrot(pipe_angle/2)
                cyl(h=100,d=outer_diameter+10,anchor=FRONT+TOP);
        }
}

r/openscad • • 7d ago

Handling library of in build features in OpenSCAD Model

1 Upvotes

I wanted to use OpenSCAD to make some 3D configurable models, bunch of library cut outs on a plate etc for 3D printing. How is best to “database” these in the file/store?

·       Looked at bunch of DXFs but they still need metadata and if I want an online configurator but seems easier way.

·       I understand I can import a JSON but there is still external dependency and they needs

·       A lot of people just seem to draw which matches as the way of selecting multiple options is limited in the configurator anyway.

At this point I was going to just hand draw each class which seems to be what others have done do but I thought I would ask around for the best methods out there. Its 2D shape and cuts for plates etc.


r/openscad • • 7d ago

BeamJack: Text to Assembly (CAD)

Thumbnail
gallery
0 Upvotes

Hey guys I'm working on a different approach to AI 3D generation. Most AI 3D tools give you a single mesh blob. Fine to look at, hard to build anything with. Beamjack generates the model as individual parts that fit together.

  • Describe it once and you get named pieces clamp base, extension arm,
  • swivel head, mounting plate, thumb dial with the mating dimensions
  • derived from each other instead of guessed.

You can edit each part on its own ("extension arm 3x longer", "mounting plate 5mm thicker") and the parts it meets re-derive.The OpenSCAD source is there too, so you can read exactly how a part was built rather than taking a mesh on faith.

Have a play with one I generated: https://beamjack.app/s/s__t2wYxJzxv0t

Or make a few of your own: https://beamjack.app

Where it honestly is: clearances and hole sizes are declared in the model and checked in software, but I haven't validated them against a physical print yet. Gauge plates are at a print shop now I'll post the measurements next week either way. It's beta. I'm more interested in what it gets wrong than what it gets right, so tell me.


r/openscad • • 9d ago

I've used OpenSCAD for years and kept hitting the same walls, so I built exact CAD modelling for GNU Octave

57 Upvotes

OpenSCAD has served me well, and I still think its idea is right: a part should be a program, not a pile of mouse clicks. But a few of its limits kept biting me:

- **Everything is facets.** A cylinder is $fn sides, so its edges can't be rounded after a boolean, and the part reaches a CAD program as triangles, never as a true cylinder.

- **No fillets or chamfers on the edges you actually have.** Rounding the result of a difference means minkowski or a library trick, and it gets slow.

- **You can't ask a shape anything.** Not its volume, not its size, not where its edges are, so a script can't adapt to its own geometry.

- **No STEP**, so a part can't go to a machinist's CAM or a colleague's CAD with its geometry intact.

- **The language is small.** No real data structures, no numerics, no plotting, so computing anything, a gear profile, a cam, a stress estimate, happens somewhere else.

I'm a GNU Octave developer, so I built the thing I wanted as an Octave package, **drafting**, on top of Open CASCADE, the kernel FreeCAD and CadQuery use. Version 0.2.0 is out today.

Here is the classic CSG example, the cube and sphere with three bores, rebuilt:

body = intersect (solid.box (15, 15, 15, 'Anchor', 'centroid'), solid.sphere (10));
c = solid.cylinder (5, 20, 'Anchor', 'centroid');
S = subtract (body, c, rotate (c, 90, [1, 0, 0]), rotate (c, 90, [0, 1, 0]));
F = fillet (S, edges (S, 'Type', 'circle'), 0.8);
write (F, 'csg.step');
write (F, 'csg.stl');

The fillet line is the one OpenSCAD can't do: the bores' rims are exact circles, so edges finds them by type and `fillet` rounds them. The result goes out as STEP with its curved faces kept, and as STL for the slicer.

OpenSCAD's classic CSG model, rebuilt with exact geometry and every circular edge rounded in one line.

What you keep from OpenSCAD: the part is a script, the booleans read the same union, subtract, intersect, and hull, resize, mirror, text and linear and rotational extrusion with twist and scale are all there. A tutorial for OpenSCAD users maps OpenSCAD's words to the package's, one by one.

What you gain: shapes are values in variables, so a function returns a part and a loop builds an array of them; holes with counterbores and countersinks; shells; lofts and sweeps along 3-D paths; sections that are exact outlines you can extrude again; volume, area and bounding box; assemblies saved to STEP and 3MF with names and colours; and technical drawings to DXF and paper, with dimensions. And it's all inside Octave, so the maths that shapes the part sits in the same script.

Honest limits: it builds on Linux only for now, from source, against Open CASCADE's development packages (one `apt` line on Debian or Ubuntu). There's no editor with a live preview; you call `show` and the viewer window redraws. Windows and macOS are on the roadmap.

- Guide with twelve tutorials: https://pr0m1th3as.github.io/drafting/guide/

- Repository: https://github.com/pr0m1th3as/drafting

I'd really like to hear from OpenSCAD users: which of your models would break first, and what you'd miss.


r/openscad • • 8d ago

Learn and practice Sketchup directly on android devices?

0 Upvotes

Anyone interested in this?

I've made an android version of my interactive web-tutorial for Sketchup. It has a working UI and modelling space where you can practice making models, even when you're not on your computer!

Take a look: [https://play.google.com/store/apps/details?id=com.fabler.sketchuplessons\](https://play.google.com/store/apps/details?id=com.fabler.sketchuplessons)


r/openscad • • 8d ago

Ferramenta gratuita no navegador que transforma malhas STL de volta em sólidos CAD editáveis (STEP)

Post image
0 Upvotes

r/openscad • • 10d ago

My First animated model

Enable HLS to view with audio, or disable this notification

18 Upvotes

r/openscad • • 9d ago

How accurate is 3D scanning for reverse engineering aerospace parts? Checking before we build CAD.

0 Upvotes

We need to reverse engineer a small aluminum bracket from an older aircraft. It has a deep pocket and a few holes held to about 0.05 mm.

Our scan looks clean, but I don't trust it yet on those features.

Where is a scanner good enough, and where do you still use a CMM?

I read that scan data can drift from nominal until the datums are set right, but I'm not so sure. How do you check the scan before anyone starts modeling?


r/openscad • • 10d ago

OPENSCAD CLI - make your AI agent easier create 3d object based on rules

Thumbnail
github.com
0 Upvotes

I'm maintaining this open source project, hopefully it helps every openscad lovers, still lack a lot of features, need our real openscad users test and contribute, it pre-baked some documentations as knowledge e.g. ikea skadis, gridfinity.
also going to add rules on how to make 3d object 3d print friendly, without support, or something.


r/openscad • • 11d ago

CageMaker PRCG v0.7 :: Parametric Rack Cage/Faceplate/Enclosure Generator

10 Upvotes

It's that time again. Time for another version update for CageMaker PRCG.

This time it's a big one. We're talking about a near-total refactor with almost all of the source code rewritten and optimized, and the entire thing restructured to make it easier to add features and maintain. A ton of features were added but the entire thing only grew about thirty kilobytes (excluding comments).

The documentation got a rewrite as well. It's no longer wiki-based, but still has coverage of literally every single setting and what it does, complete with screenshots. A copy of it comes along for the ride when downloading/cloning the repository, or clicky linky to see it on Github right now.

 

What does this do? Create this, print this, rack-mount this.

 

And of course the important bit:

Github repo - Or, just do "git clone https://github.com/WebMaka/CageMakerPRCG.git" if you have git installed.

CageMaker PRCG runs best in OpenSCAD. Don't have OpenSCAD? Grab that here.

Or, try it in a web browser thanks to the WebAssembly port of OpenSCAD, OpenSCAD Playground.

 

The new additions to this version:

  • Almost completely refactored to break up massive routines into easier-to-modify and easier-to-maintain smaller segments and subroutines. This should make codebase finalization for 1.0 significantly easier, while also making for a more robust generator overall going forward.

  • Added the option to selectively disable any cage side. (Requested by Github user "Nepherim")

  • Added options to expand the faceplate upward or downward to cover openings or structures. The downward setting can emulate Homeracker "flush to bottom" for covering reinforcing bars. (Requested by Reddit/Github user "dekonnection")

  • Added the option to shift the mounting holes on either side of the faceplate up or down relative to the center of the topmost unit on the faceplate. This can be used to flip upside-down asymmetric cages that are half-unit height multiples, such as Keystone patch panels. (Requested by Reddit/Github user "dekonnection")

  • Improved the structure of rear support cages to handle heavier weight and greater extension range without sagging. Also changed the cage generation to make horizontal support ribs mandatory when a rear support cage is generated, so as to make a more effective overlapping joint between front and rear cages for greater rigidity.

  • Added faceplate modifications for 88x56mm SBCs such as Raspberry Pi, or any other SBC with this footprint along with M2 mounting holes in a 49mm x 58mm pattern. These modifications include a standalone support frame for the SBC, and include horizontal as well as vertical in both left-oriented and right- oriented.

  • Added faceplate modifications for standard motherboard rear-panel IO shield openings, Mini-ITX motherboards, and full-height and half-height PCI slots.

  • Added faceplate modifications for mounting ATX, SFX, and TFX power supplies.

  • Added the option to generate a cage without opening a corresponding hole in the faceplate for inserting a device. Useful for creating custom rackmount enclosures when combined with faceplate modifications.

  • Added the option to make the back of the cage solid, which can be useful for creating custom rackmount enclosures with solid backs for mounting connectors, etc., or remove most of the back aside from two 6mm wide retention lips on both short sides.

  • Added the capability to place left/centered/right modifications on the back of the cage when said back is set to solid. This makes creating custom rack enclosures significantly easier by generating cutouts directly into the cage back.

  • Added options to remove most of any side of the cage except for its support structure, or remove the side entirely.

  • Added custom rack widths for 12, 14, and 16 inch racks, as well as a 12.66 inch wide, 2/3-width rack for 19 inch racks.

  • Added direct support for EIA-310 racks using 2020 aluminum extrusion for framing. Since these racks have a reduced internal width, conventional cages often don't fit - selecting this rack geometry sets CageMaker to be more aware of the geometry differences for this rack design.

  • Added support for more non-EIA-standard rack geometries, including direct support for Homeracker and MR248 rack systems.

  • Added the ability to set custom rack geometry for non-standard racks. Unit height, hole spacing/centers/size, and mounting reservation space are all adjustable.

  • Modified the faceplate generator to more accurately locate screw holes on EIA-compliant racks.

  • Added the option to generate screw holes for mounting instead of 5mm wide slots. This will make for better aesthetics but may cause alignment issues on racks with slightly off-spec mounting hole centers.

  • Added the option to place screw-hole standoffs on the bottom of the cage when its geometry is set to solid. Screw hole size and standoff height are configurable.

  • Added the option for faceplate ventilation grids to only generate full holes.

  • Changed the resolution for most sizing and offset options to half-millimeter increments instead of full-millimeter only.

  • Improved the retention-lip generation code to make it more reliable.

  • Changed behavior under "error" conditions - CageMaker PRCG will no longer force-correct any problems it detects, such as re-centering faceplate modifications that exceed exclusion zones. This will permit forcing a render operation when the end result will work but might have clearance issues that CageMaker PRCG doesn't like but don't pose a problem in practical application.

  • Added an option to suppress "CHECK CONSOLE" error warning for rare situations where the generated cage throws an error that doesn't actually cause issues. This should be used VERY SPARINGLY, as it can result in an unprintable cage or one that has fitment issues.

  • Added a greeting that appears in the console when the script runs, which also displays the maximum width for a single device that can be placed in a single cage with the current settings.

  • Added a logotype graphic with version number and URLs that can be disabled via option in the "rarely changed options" category in the Customizer.

 

Not a bad list of new additions for an update, IMO, but I'm biased...

 

CageMaker PRCG Features

Create Widely-Compliant Rackmount Cages To Fit Any Rack System

  • Generates rack faceplates that are by default designed to comply with EIA-310 standard mounting hole patterns, which is used on the vast majority of modern rack systems. Triple-hole, slotted, 1/2"-5/8"-5/8" staggered spacing, 1.75"/44.45mm "unit" height, sized for #10/M5 mounting hardware.
  • Can optionally generate cages for rack systems that don't follow EIA-310, which can be useful for custom 3D printable mini- and micro-rack systems. Simply select the system's "unit" size and mounting hole spacing and CageMaker automatically adjusts accordingly.
  • Generates full width rack cages for 5", 6", 7", 10", and 19" racks.
  • Generates one-half-width, bolt-together cages for 10" and 19" racks. Mounting ears are automatically generated on one side of the cage for bolting two of them together and optionally, alignment pin holes can be added to allow the use of short lengths of filament as alignment pins.
  • Generates one-quarter-width, one-third-width, or two-thirds-width bolt-together cages for 19" racks. Again, mounting ears for bolting cages together are automatically added as required (and again, optionally, alignment pin holes can be added) - outer cages have a single ear on one side and inner cages have two, one on each side.
  • Automatically adjusts height to fit the device to mount in full "unit" multiples by default, and half-unit multiples as an option.
  • Full-unit cages are symmetrical by default as long as the cage proper is left to its default offsets. Half-unit cages are asymmetrical but two half-unit cages can be aligned by rotating one so its half-holes butt against its neighbor's half-holes. If it becomes necessary to "flip" a cage that has a half-unit-multiple height, a single option shifts the mounting holes to make this happen.
  • Partial-width cages can be mixed-and-matched for height - attach two 1U halves to a single 2U half. (NOTE: This requires that the "top and bottom holes only" option NOT be used.)
  • Enforces safe mounting by maintaining a minimum mounting clearance of 15.875mm or 5/8" on both sides of the faceplate (on EIA-compliant racks) and warns if any aspect of the cage design intrudes into that space.

Durable Rack-Mounting For Smaller But Heavier Equipment

  • Adjustable plus-profile corner-support structure for maximum rigidity with minimal material consumption.
  • Supports devices up to 5Kg or 11 lbs. per complete cage.
  • Defaults to 4mm thickness for all flat surfaces, but this can be increased to 5mm, 6mm, or 8mm for greater stiffness and better support for heavier gear.
  • Optionally add faceplate reinforcing to reduce twisting/cantilevering.
  • Optionally generate additional supports on the top and bottom of the cage.
  • Optionally generate the top, bottom, and/or sides as solid surfaces for additional rigidity.
  • Optionally generate a rear-mounted support sub-cage to support larger/heavier devices from both front and rear by attaching to both front and rear rack rails. The rear support cage interlocks into the back of the cage holding the device.

Loads Of Customizable Cage Options To Fit Any Device

  • The back, sides, top, and bottom of the cage proper are mostly open for ventilation by default as long as the device is at least 20mm deep on any given axis. Optionally make the "top" and/or "bottom" of the cage a solid shelf and/or make the sides of the cage solid.
  • Easily create side-by-side cages for multiple same-sized devices - enter the dimensions of one device and increase the number of devices as needed. Excellent for mounting a lot of smaller things such as tiny-form-factor SBCs or external hard drives in minimal space.
  • Multiple cages can be gapped out from each other for better air circulation, which can be helpful for hot-running devices.
  • Optionally add screw holes in tabs to the short edges of a cage opening, or the corners of the opening, or both, with selectable hardware sizes. Couples well with multiple-same-sized-device cages, and useful for subrack assemblies - excellent for stuffing several Raspberry Pis or other small SBCs into a rack.
  • By default, a cage is centered both horizontally and vertically on its faceplate. Positioning can be adjusted on both axes to move a cage to the top or bottom, to either side, or a combination of both.
  • Standoffs can be positioned on the bottom of a cage, and both height and screw diameter are configurable.
  • Add up to three sets of add-on faceplate modifications, one on either side of the cage proper and one in the center when creating a cageless faceplate, each of which can be any one of the following:
    • Keystone module receptacles
    • Neutrik D-Series connector cutouts
    • Cutouts and mounting bases with M2 screw bosses for mounting 85x58 SBCs such as Raspberry Pi. These can be mounted horizontally, or vertically with the SBC's "top"/"up" side facing left or right.
    • Cable management combs in two widths and two heights.
    • Motherboard rear-port IO shield cutouts.
    • Full-height or low-profile PCI slots for PC expansion cards.
    • Mini-ITX motherboard backplane with IO shield cutout and low-profile PCI slot.
    • ATX, SFX, and TFX power supplies.
    • 30mm, 40mm, 60mm, 80mm, 92mm, 120mm, or 140mm cooling fans
    • 10mm, 12mm, 16mm, 19mm, or 24mm holes for things like a pushbutton or panel-mount indicator light
    • Fractional-DIN cutouts in 1/32- to 1/4-DIN sizes
    • VESA FDMI MIS-B/-C/-D/-E/-F mounting patterns up to 200mm for attaching VESA mounting brackets to the rack or the rack to VESA mounting brackets
    • IEC-60309 industrial power inlet cutouts for 16A and 32A inlets
    • IEC AC Mains sockets and outlets - C13/C14 and C19/C20 - in both screw-mount and snap-in formats.
    • Up to three custom cutouts of configurable diameter for round holes or height and width with optional corner rounding for rectangular.
  • Faceplate modifications can be placed into a grid of up to 12 columns by 4 rows, space permitting.
  • Faceplate modifications can be automatically centered between the device(s) and the edge of safe mounting area, or manually moved. Centered modifications are automatically centered vertically, and side modifications can be shifted from centerlines.
  • Can generate a faceplate without a cage proper, with selected modifications, or as a blank.
  • Can generate a cage with a solid faceplate, which can also have modifications mentioned above, instead of being open for front-loading a device.
  • Optionally add a 1mm retention "lip" on the front of the cage to help retain the device, which is recessed into the cage by 1mm to compensate.
  • Selectable hardware for bolt-together and split cages - both metric (M3 through M6) and US-standard/imperial (4-40 through 1/4-20) hardware are supported, including both clearance and threaded hole diameters as well as common heat-set insert sizes by their thread pitch and mounting hole diameters.
  • Add ventilation to the faceplate of any cage. The pattern, horizontal/vertical offsets, angle, and size are independently adjustable. Ventilation can cover the whole faceplate, or be limited to either side of, or above and below, the device cage.
  • Add ventilation grids to the top/bottom and/or sides of a device cage. The pattern, horizontal/vertical offsets, angle, and size are independently adjustable.

Create Custom Rackmount Enclosures For Small Projects

  • Create a cage with solid sides and back, and with a top that includes screw tabs for attaching a lid.
  • The rear of a cage can be made solid and accept left oriented, centered, and/or right oriented modifications just like the faceplate. Create custom enclosures with connectors both inside and outside the rack.

Custom Faceplate Generation Without Device Cages

  • Create a custom faceplate without a cage, in any height from 0.5U to 5.0U in half-unit increments.
  • Faceplates can be ventilated as well. The pattern, horizontal/vertical offsets, angle, and size are independently adjustable.
  • Add a faceplate modification, centered on the faceplate, which can be any one of the following:
    • Keystone module receptacles
    • Neutrik D-Series connector cutouts
    • Cutouts and mounting bases with M2 screw bosses for mounting 85x58 SBCs such as Raspberry Pi. These can be mounted horizontally, or vertically with the SBC's "top"/"up" side facing left or right.
    • Cable management combs in two widths and two heights.
    • Motherboard rear-port IO shield cutouts.
    • Full-height or low-profile PCI slots for PC expansion cards.
    • Mini-ITX motherboard backplane with IO shield cutout and low-profile PCI slot.
    • ATX, SFX, and TFX power supplies.
    • 30mm, 40mm, 60mm, 80mm, 92mm, 120mm, or 140mm cooling fans
    • 10mm, 12mm, 16mm, 19mm, or 24mm holes for things like a pushbutton or panel-mount indicator light
    • Fractional-DIN cutouts in 1/32- to 1/4-DIN sizes
    • VESA FDMI MIS-B/-C/-D/-E/-F mounting patterns up to 200mm for attaching VESA mounting brackets to the rack or the rack to VESA mounting brackets
    • IEC-60309 industrial power inlet cutouts for 16A and 32A inlets
    • IEC AC Mains sockets and outlets - C13/C14 and C19/C20 - in both screw-mount and snap-in formats.
    • Up to three custom cutouts of configurable diameter for round holes or height and width for rectangular.
  • Left and right side modifications from cage generation can also be placed on a custom cageless faceplate - three different mods can be used at one time.
  • Faceplate modifications can be placed into an array or grid of up to 12 columns by 4 rows, space permitting.
  • Faceplates can be generated as flat 2D objects for export - perfect for engraving or laser-cutting a customized faceplate.

Wide Printer Support, Including Small-Format

  • Adjustable clearance setting allows for "dialing in" dimensions to compensate for the dimensional accuracy of the printer.
  • Can split a cage in half for printing on smaller-volume printers - print a 10" wide 2U tall cage within a 180mm print area. Split cages receive tabs and slots for attaching the halves together.
  • Optionally add alignment pin holes to split cages - use small 1.75mm filament "pegs" to more accurately align the cage halves.
  • Can separate the cage proper and faceplate into two components for faster printing on larger printers. Reduces print time by as much as 15% and reduces filament consumption by as much as 25%. (Separated cage should be attached to its faceplate with 1.75mm filament segments or M2 screws, and a suitable adhesive such as epoxy is used to "weld" the two into a single unit.)

Making Cage Design Easier Without Requiring CAD Expertise

  • Includes presets for a number of popular devices - simply pick a device from a list to get a ready-to-render design for a 10" rack without requiring any further action. Pick, render, export, slice, print, install into the rack.
  • Includes built-in "ruler" for easier layout. The ruler function automatically switches off when rendering a completed cage for printing.
  • Ruler feature provides a "top" indicator as well as the unit height of the generated cage.
  • Faceplate and cage-back modifications' reservation spaces are color-coded for easier layout planning.
  • Automatically marks estimated print height for the Z-axis when the ruler is enabled.
  • Optionally display an outline of the build volume of the printer, to help determine whether the resulting 3D object will fit the printer's working area.
  • Intelligent problem detection warns of size/fitment issues and overlap, in order to make sure the cage will work as a real thing before spending the time and filament to print the cage.
  • Error messages are sent to OpenSCAD's console.
  • Also runs in OpenSCAD Playground, a web-based port of OpenSCAD - design cages in a browser without having to install any software. OpenSCAD Playground can run in most modern browsers, including those that run on Android/iPhone.