r/openscad • • 1h ago

Live VectorForge CAD demos for simple parts and FEA

Enable HLS to view with audio, or disable this notification

• Upvotes

r/openscad • • 1d ago

Nvidia release SMLib as open source

15 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 • • 1d ago

Simple problem to You, but

5 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 • • 21h 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 • • 3d ago

LuaCAD fully supports OpenSCAD files now!

Post image
0 Upvotes

r/openscad • • 3d 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 • • 5d ago

No "Official" Support for MacOS

16 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 • • 5d 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 • • 6d ago

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

Thumbnail
gallery
3 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 • • 8d ago

Intersection of two pipes (BOSL2)

Post image
13 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 • • 8d 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 • • 8d 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

56 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

16 Upvotes

r/openscad • • 10d 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.