Hacker News

Favorites Setup
OpenSCAD the Programmers Solid 3D CAD Modeller (openscad.org)
2026-10-06 Tue | 153 points by b-man | original
[−]pdntspa · 2026-10-10 Sat 17:45 UTC · link
The nightly builds for this are so much better. When are they going to merge the nightlies into a new mainline release? The last one showing 2021 isn't the best look...
[−]voakbasda · 2026-10-10 Sat 21:18 UTC · link
This problem has made me search for other solutions. I need tools that ship.
[−]WillAdams · 2026-10-10 Sat 22:05 UTC · link
When all the blockers are resolved:

https://github.com/openscad/openscad/issues/3640

[−]TGower · 2026-10-10 Sat 17:48 UTC · link
It would be interesting to see a head to head comparison of frontier LLMs building models with OpenSCAD, Blender scripting, and Fusion MCP. My intuition would be that blender winds up the best for the immediate result due to training data prevalence and RL tuning, but the concise nature of OpenSCAD could help.

I'll have to add this to my backlog of experiments to try when I have unused tokens near a reset...

[−]kevin_thibedeau · 2026-10-10 Sat 17:58 UTC · link
Blender gives you a mesh that isn't parameterized. Not particularly useful for making dimensional changes outside of eyeballing everything. An LLM isn't going to reliably hit your dimension targets so tweaks will be necessary.
[−]TGower · 2026-10-10 Sat 18:04 UTC · link
Yeah, that's what I meant by "immediate result", if you need to edit the generated model by hand it will be hard to beat having the model and timeline available in Fusion after using Fusion MCP.

If you just need to tweak the dimensions in the script, or are satisfied with describing the changes to the LLM and having it modify the script, there isn't much difference in practice between a generated OpenSCAD script and a Blender python script.

[−]exitb · 2026-10-10 Sat 19:17 UTC · link
I created an (unpublished) MCP for a CAD that didn’t have one before and LLMs are just fine at it. It looks like they can apply their higher level training across interfaces.
[−]looofooo0 · 2026-10-10 Sat 17:52 UTC · link
Yes, also have a look at build123d which has a vscode plugin.
[−]kelchm · 2026-10-10 Sat 18:15 UTC · link
I second this -- I much prefer build123d to OpenSCAD.
[−]joewalnes · 2026-10-10 Sat 17:55 UTC · link
Wrote a tutorial:

https://github.com/joewalnes/toybrick

LLMs are excellent at building OpenSCAD models. The tutorial (written in the before-times) will help understanding of the key concepts of OpenSCAD: primitives, transformations, and constructive solid geometry.

[−]jacquesm · 2026-10-10 Sat 18:00 UTC · link
The one you want is the experimental build, it is way faster to the point that 'preview mode' should be disabled. I use OpenSCAD a lot, it ties right into my workflow and plays nice with versioning and re-using modules from one project to another. Over time I've built up a nice library of parts that I can quickly customize for whatever it is that I'm building. Latest project: pick-and-place machine modification for Prusa MK3 3D printers (an interesting challenge, to put it mildly), now working on some robotics stuff.

The most important thing about OpenSCAD for programmers to remember is that it looks as if you are programming but really you are describing geometry and objects so things like variables and such do not quite work in the way you would expect from a programmers point of view.

[−]RobotToaster · 2026-10-10 Sat 18:47 UTC · link
> The most important thing about OpenSCAD for programmers to remember is that it looks as if you are programming but really you are describing geometry and objects so things like variables and such do not quite work in the way you would expect from a programmers point of view.

To put it another way, it's a purely functional language in a very strict way that takes some getting used to.

[−]Ccecil · 2026-10-10 Sat 19:46 UTC · link
Look into OpenPNP. Most of the PnP work is already done (vision, motion, feeders, etc). Just a matter of making the Prusa frame react to the commands.
[−]jacquesm · 2026-10-10 Sat 20:28 UTC · link
That's what I'm running.
[−]Ccecil · 2026-10-10 Sat 20:44 UTC · link
Nice. I have been following the project since the beginning (I work with the Smoothieware project which was used primarily in the beginning).

Some of the things developed in the project I used to modify my commercial PnP to use the Siemens feeders (Bilsef's controller board). [1]

So a project that came from our project is being used to mod my machine to make more boards for the original project :) Circle of opensource.

If you have any posts related to your mods that you can share I would like to read them to see more about what people are doing.

[1] https://www.robosprout.com/a-story-of-right-to-repair-hackin...

[−]jacquesm · 2026-10-10 Sat 20:59 UTC · link
I made the machine to help me assemble a bunch of boards for my electronics minded child, essentially a gridfinity based set of building blocks for electronics circuits. It works very well and he's totally happy with it. It also got him into building stuff with the Micro-Bit. My eyesight sucks and working with SMD parts is really tricky for me so I figure better to let one of my many Prusa's be the sacrificial lamb. Worked like a charm but it is not a build that I would recommend to others, there are just too many places where the 3D printer setup is fighting what would be good for pick-and-place. The best - and probably most reusable - bit to come out of it was a 3D printed nozzle that will pick up anything from 0402 to very large parts without a nozzle change.
[−]robbles · 2026-10-10 Sat 21:12 UTC · link
> things like variables and such do not quite work in the way you would expect from a programmers point of view.

I'm a novice at OpenSCAD still despite doing a bunch of small projects with it recently. Can you give an example of this happening? Most of the confusing stuff so far has been geometry breaking my brain and not some kind of scope issue.

[−]jacquesm · 2026-10-10 Sat 21:42 UTC · link
Well, you could be forgiven to think that if you wrote i=5; some code and then i=12; that 'some code' is executing with i set to 5. Instead all code is run with i=12 because there is only one value for a variable per scope.

This can lead to extremely annoying bugs because your brain is wired to read and understand this stuff sequentially rather than all at once. I've stared at some page of OpenSCAD code for a long time before realizing that it was yet another one of those footguns.

[−]CamperBob2 · 2026-10-10 Sat 22:29 UTC · link
So it's not the C of CAD, it's the Verilog of CAD. Got it.
[−]jacquesm · 2026-10-11 Sun 00:53 UTC · link
That's a good analogy. The annoying part is that it looks like C, but it really isn't.
[−]TacticalCoder · 2026-10-10 Sat 18:11 UTC · link
OpenSCAD is amazing for those who know nothing about 3D but know about programming.

I bought a 3D printer (which is basically simpler and more reliable than a 2D inkjet printer by now: it's send the file, put the filament, and 3D print and it just works) recently and already fixed shitload of stuff around the house with 3D printed parts.

I even did "print in place" pieces where you add a pause a a certain layer, insert "stuff" (like say a 3D metal angle) into your print, then finish your print. Effectively creating parts that are both plastic and metal.

Now the language itself in OpenSCAD is kinda really bad: you can define variables inside of other functions and then use them everywhere. You can redefine already defined variables and you'll get zero warning. The language itself is really pretty WTF.

But you get modelling for free as a programmer. And LLMs are okay'ish at it for simple stuff.

I'd recommend people to use the BOSL2 library for OpenSCAD:

https://github.com/BelfrySCAD/BOSL2/wiki

It's really not hard.

If you love programming and like to DIY stuff around the house, buying a 3D printer and learning some OpenSCAD is a no-brainer.

OpenSCAD ain't the only option: many people like Fusion (for example). But as I'm a dev, OpenSCAD just feels natural to me.

[−]kens · 2026-10-10 Sat 18:18 UTC · link
As a programmer, I second this. Systems like Blender are inscrutable to me, but in OpenSCAD I just write some loops. I get what I want and it's easy to tweak.
[−]erjiang · 2026-10-10 Sat 18:11 UTC · link
Be aware that the way OpenSCAD works (CSG) makes a lot of things difficult compared to "normal" CAD programs. A lot of common operations, such as arbitrary fillets on various edges, are simply hard to express or do.

The more powerful option is something built on the open-source Open Cascade geometry kernel: FreeCAD, cadquery, or build123d. This also gives you interop with the broader CAD ecosystem by enabling you to import and export STEP files. (Your favorite LLM can advise you on or drive these options as well.)

[−]Palomides · 2026-10-10 Sat 18:18 UTC · link
to be a bit tautological, openscad is nice but only for the things openscad is nice for. I prefer freecad for almost everything except highly parametric shapes. Plus you can do openscad inside of freecad.
[−]WillAdams · 2026-10-10 Sat 18:37 UTC · link
The great thing about OpenSCAD is that it makes modeling using cubes, spheres, cylinders, and placing or stretching them mathematically easy.

The awful thing about OpenSCAD is that one's capabilities in it are bounded by one's fluency in using math to place or stretch cubes, spheres, and cylinders.

[−]RobotToaster · 2026-10-10 Sat 18:43 UTC · link
On the bright side it refreshed my knowledge of trigonometry...
[−]WillAdams · 2026-10-10 Sat 21:58 UTC · link
[−]dofm · 2026-10-10 Sat 22:06 UTC · link
There’s a new Physics book in this series:

https://www.makershed.com/products/make-physics?variant=5041...

[−]WillAdams · 2026-10-10 Sat 22:21 UTC · link
The pre-order has June 2026, but apparently it's running behind?!?
[−]dofm · 2026-10-10 Sat 22:40 UTC · link
I am not sure I know what is going on there. It’s listed as in stock in print and on Kindle in the UK Amazon store though.
[−]WillAdams · 2026-10-11 Sun 02:12 UTC · link
Thanks!

I went ahead and placed an order.

Hopefully it will arrive in a reasonable timeframe.

[−]jacquesm · 2026-10-10 Sat 19:03 UTC · link
I suck at math but I can do pretty neat stuff with OpenSCAD that would take me 10x longer with 'the usual suspects' in CADland. It took me a while to get the hang of it though, I think the bigger issue with using OpenSCAD is a shift of perspective. From the outside it looks like solid modeling with primitives, but once you 'get it' the method changes completely, it is probably easier to explain with an example:

If you want to make a complex gear that has to mate with another gear you can do this in two ways: you can start with two discs intersecting at the right angle and then to chop out the teeth so the resulting object will be a gear and then you could subtract via a similar operation from the other disc to end up with two mating gears.

The - in my view much more effecient - alternative is to start off with just the supports as the discs and then to parametrically add the gear teeth onto the supports taking into account all of the clearances and the contact faces. This will get you much better gears because you are parametrically describing the surfaces that really matter and it will allow you to do nice things such as small fillets on everything to make the object far closer to what eventually will roll out of your manufacturing process (machining, 3D printing). It is a bit more work to define all of the parameters but the end result is much better and far less likely to have imperfections because you are generating what you want, not removing what you don't want. OpenSCAD can be used for sculpting, but that's not the best way of using it.

[−]imtringued · 2026-10-11 Sun 08:18 UTC · link
Not sure I buy this. CAD is both additive and subtractive simultaneously, so if you tell me it is purely about subtraction I don't think you are very experienced with CAD.
[−]iririririr · 2026-10-10 Sat 18:37 UTC · link
i did ton of projects in open scad in the past (8+yrs ago), even having access to freecad and solidworks. I was even sending patches to some 2d features on freecad.

but what made me use scad was reliability. i knew the time i put writting in vim would translate (heh) into a viable stl file i could send to manufacturing. while with both other options half the time was dealing with bugs and crashes and bad exports.

but how did i miss some convenience tools indeed. most could be solved with opensource methods (e.g. bevel, joiners with easing, threads)

[−]loloquwowndueo · 2026-10-10 Sat 22:50 UTC · link
Dude freecad 8y ago was indeed crashy and buggy but it’s far better these days.
[−]willis936 · 2026-10-11 Sun 00:34 UTC · link
Why is there a carve out for parametric shapes? Freecad is a parametric CAD tool. OpenSCAD is just a worse version that has limited macro capability compared to build123d and can only ever export solid bodies with flat faces. Seriously, why does anyone talk about a CAD tool that cannot export curved surfaces?
[−]imtringued · 2026-10-11 Sun 08:20 UTC · link
Because FreeCAD has a terrible UI and a community that can't handle criticism at all. So developers who see the awful UX and the awful community think it is a lost cause and then pick something else "Oh I know programming in text and OpenSCAD lets me programm my CAD!"

And then the worse is better trap gets them and they don't even bother looking for true programmatic CAD like build123d.

[−]the__alchemist · 2026-10-10 Sat 18:38 UTC · link
Concur. It's worth explaining this, as someone new to CAD would get the impression the various tools in CAD are on even ground, and may assume "I know programming, so OpenSCAD sounds like the right choice". I would love some day for programmatic and/or free/cheap CAD to be competitive, but we're not there. Solidworks, Fusion, Inventor etc still outclass FreeCAD, which outclasses OpenSCAD.
[−]MegaDeKay · 2026-10-10 Sat 18:45 UTC · link
I agree with your ordering of the various programs out there but FreeCAD 26.3 is now available as a release candidate with a wonderful collection of improvements. I'd think for many people, FreeCAD is now "good enough" for a lot of things. I'm building a virtual pinball cabinet and the whole thing is modeled in FreeCAD.

Mango Jelly's overview of some of the biggest new features: https://www.youtube.com/watch?v=WdTyFHY-5r4

[−]the__alchemist · 2026-10-10 Sat 18:51 UTC · link
Ty! I will give it a shot. I last did 2 years ago.
[−]happyPersonR · 2026-10-10 Sat 19:11 UTC · link
The mcp integration may be seen as both a blessing and a curse but tbh, it’s very interesting :) and hopefully as folks post and comment on more models that are generated with it, we can get a better training set.

I actually still use the freecad gui because it’s cheaper but I can totally see how someone new might just wanna use the MCP.

[−]jacquesm · 2026-10-10 Sat 18:56 UTC · link
That's because you are thinking in the way you would with conventional cad systems, you are doing your operations sequentially a bit like a sculptor would: take a blank and then remove bits piece by piece. The trick to working effectively with OpenSCAD is to generate what you want, not to iteratively chip away at something.
[−]jeffbarr · 2026-10-10 Sat 19:03 UTC · link
I have found that a combination of the two approaches works best for me. In some cases it is easiest and most practical to combine (union) shapes to get to what you want, and in others it easiest to subtract (difference or intersect).
[−]jacquesm · 2026-10-10 Sat 19:08 UTC · link
But then you won't be able to bevel complex shapes at all, which means that you won't be able to describe the object that you will end up with. "Good" CAD means that the representation in the computer is as close to the object you want to produce as you can make it. This makes it possible for downstream systems to accurately select nozzles and toolheads to get you what you want. If you produce an impossible object then your slicer or path computer will give you an approximation. That can be fine in some cases but usually your objects need to mate and if you mate two approximations you'll find quickly that that does not really work.
[−]Brian_K_White · 2026-10-11 Sun 00:19 UTC · link
There is no trick way to solve the fillet problem or about 100 other common necessary things in openscad.

Don't get me wrong, I love it myself and use it as much as possible simply because it's outstanding to be able to express a complete design in 1k of plain text which is readable, diffable, gittable.

You can get a lot done, and some things you can do even easier and simpler than anything else, and you can work-around some things, and you can get a good-enough almost-what-you-want other times, and it's practically ideal for certain classes of jobs as long as you're willing to live within the limits.

But "live within the limits" is not something a general purpose tool gets to say.

You can get some fillets easy sometimes if the geometry just happens to lend itself to some boolean op like making a rounded corner hollow box by hulling 8 spheres (which you can populate effortlessly with translate,copy,mirror) and then cutting another smaller copy. Voila, all kinds of interior and exterior fillets in like 10-15 short lines of plain text code. And the whole thing fully parameterized with dead simple variables sitting off by themselves with human descriptive names at the top of the file.

But that does not mean anything. That's a choice showcase example, and all the other infinite real life cases are somewhere between agonizing to code, to agonizing to code and agonizing for the computer (minkowski), to flat impossible.

I love openscad but this implication that it's just a matter of using it right is false.

[−]jacquesm · 2026-10-11 Sun 00:51 UTC · link
The fillet problem is not a problem. It is a problem if you try to apply fillets after you have created something complex. But if you generate it out of variations on the primitives that already have filets it gets much easier to keep control over the resulting shape. What OpenSCAD makes next to impossible is to first combine a bunch of primitives and then to do one more operation on the resultant shape. That's really fighting the tool. But if instead you define a layer just above your primitives that already have the edges the way you want them to be then you can combine them and the filets will stay where they were on the primitives. The problem that remains is to blend them if you need to, I've found a really simple trick for that: define spheres with the fillet radius and create hulls over sets of these. That allows you to fill in the gaps if there are any.
[−]Brian_K_White · 2026-10-11 Sun 00:58 UTC · link
Incorrect. I repeat what I already said since you didn't say anything new either.
[−]vjvjvjvjghv · 2026-10-11 Sun 02:06 UTC · link
That works to some degree but you will quickly run into trouble because you can't get things 100% right. I don't think anybody is using OpenSCAD for professional use where you have to collaborate and have to produce exact shapes.
[−]_ph_ · 2026-10-11 Sun 10:44 UTC · link
May be it is just the matter to compose a few good HOW-TOs. What I gave up on once was creating slabs with rounded edges. Basically imagine a slab which looks like an iPhone icon: you have in the plane of the slab rather a large corner radius, but for rounding the edges of the resulting slab, a much smaller one.

Writing now about it, I think I could do it with a torus, where the radius of its cross section is the small radius, the torus radius is the large one, take two of them, add two cylinders to only keep one quarter edge and then take a quarter of the resulting bevelled disk.

[−]dgroshev · 2026-10-11 Sun 11:25 UTC · link
Those tricks won't help when the design calls for G2 (or higher) fillets or surfaces.
[−]atoav · 2026-10-11 Sun 10:02 UTC · link
I used both OpenSCAD and cadquery, and I find the latter be effectively the same but with a cleaner more expressive syntax and some helper functions that people would commonly expect to be there.

If I have to build points up by hand, why not skip OpenSCAD and directly write python scripts that create your OBJ files? The point of OpenSCAD et.al. is to programmatically create geometry. Making exactly that easier is a feature in my eyes. And that means you provide/support multiple modeling paradigms that can expressively combined.

[−]YuechenLi · 2026-10-10 Sat 18:59 UTC · link
To be fair, arbitrary fillets/blends on edges is a hard problem in general for Parasolid/ACIS because you are trying to mutate arbitrary topology, essentially guessing vertices/edges/faces and trying to stitch the back together.
[−]WJW · 2026-10-10 Sat 20:23 UTC · link
This is true, but in things like OnShape I can do it with two clicks whereas in OpenSCAD it's always at least 20 minutes of thinking and trying out.

OpenSCAD is super cool and my go-to for simple things, but for anything more involved than a cube or cylinder with some cutouts I tend to revert to "normal" CAD programs.

[−]moebrowne · 2026-10-10 Sat 21:21 UTC · link
[−]georgemcbay · 2026-10-10 Sat 21:52 UTC · link
> A lot of common operations, such as arbitrary fillets on various edges, are simply hard to express or do.

As a long-time OpenSCAD user, I don't disagree with you but would also point out that LLMs can now make it very easy to do a lot of this sort of thing while still using OpenSCAD.

I actually find Gemini/agy to be the best of the ones I've tried when it comes to working with OpenSCAD code. And I don't recommend trying to use LLMs to one-shot geometry of anything complicated, but they are great for things like "take this OpenSCAD code and generate a fillet along these edges, abstract the fillet into its own module and make it parametric so I can easily modify the radius".

Granted, selecting a few faces or edges in a GUI CAD program and clicking a button is even easier than that, but only once you've spent a lot of time learning how to use the CAD GUI (which, IMO, are nearly universally very unintuitive until you've spent a lot of time working with them).

[−]oscillonoscope · 2026-10-11 Sun 06:01 UTC · link
I started playing with this not long ago. Using pythonSCAD is way easier for LLMs and it can generate functional tests for it. Claude was able to one shot a relatively complex assembly of multiple custom parts where it made nonsense in pure openSCAD
[−]rgoulter · 2026-10-11 Sun 04:24 UTC · link
This matches my experience.

One use case I was interested in: coming up with a (simple) box with cavity in it, and having this CNC'd. (For a simple custom keyboard shell).

Although OpenScad can express the geometry of the geometry without difficulty, it was burdensome to export the .step file that the CNC manufacturer wanted. To my understanding, CSG's model is just fundamentally different than what .step wanted. And re-using the geometry for a technical drawing to communicate e.g. threading wasn't something OpenScad could handle smoothly.

I haven't quite ported this to build123d. But, from a cursory look asking an LLM to do port my code, I was given the impression that it could manage the task. (Certainly build123d was better suited to technical drawings).

[−]starky · 2026-10-11 Sun 06:46 UTC · link
This is my problem with any system that doesn't create parametric geometry. You are limiting your precision and eliminating the ability to easily modify geometry later. STEP is the defacto format for this as any 3D CAD or CAM system can open it (Parasolid is also great, especially if the person you are sharing it with is using SolidWorks).

I absolutely despise STL as a format and think it doesn't have any place it should be used.I have a hard time taking OpenSCAD seriously due to this.

[−]bambax · 2026-10-11 Sun 05:40 UTC · link
Like others mention in comments below, it's better to first design the shape how it should be in the end, fillets included, than doing them afterwards.

Also, in many cases, extruding an SVG works wonders. Just design the flat projection in something like Inkscape, interactively, and then import and extrude. You can do this for many shapes, then combine or subtract, etc.

But the other thing is, I have found that in many cases I don't need fillets at all; when printing small parts on a consumer-grade 3D printer, the relatively low precision of the printer is enough to round the edges.

[−]immmmmm · 2026-10-11 Sun 10:23 UTC · link
I have been moving from fusion 360/eagle to FreeCAD+Kicad for mixed electronic/mechanical designs and never looked back. Since 1.0 assemblies work better in FC than 360, less crashes at least for my limited cases. Also an order of magnitude faster to boot. Didn’t have any issue with open cascade kernel, even with weird filets etc. Kicad is a joy to use compared to eagle, and library is even better.

Never tried OpenSCAD, maybe I’m old fashioned but graphic workflow works better for me.

[−]matthova · 2026-10-10 Sat 18:16 UTC · link
I love OpenSCAD. Have been a power user for years. It's so great asking LLMs to make 3d models in openscad.

I made a rust-implementation of openscad called openrscad (https://openrscad.com). It still has some rough edges, but runs quite fast both on desktop and in the browser

[−]cm2187 · 2026-10-10 Sat 20:34 UTC · link
Seconded. OpenSCAD is a bit tedious to use from scratch but claude is pretty decent at generating the code. It can't render the script though so it tends to make silly mistakes
[−]cm2187 · 2026-10-10 Sat 23:36 UTC · link
Actually it looks like that changed recently, it seems to be able to render now
[−]don-bright · 2026-10-10 Sat 21:07 UTC · link
Does it have rust versions of the full stack of libraries like Agnis Johnson's Clipper, etc? How compatible is the kernel with CGAL Rational?
[−]seesthruya · 2026-10-11 Sun 08:39 UTC · link
Just curious, what "modern geometry kernel" are you building this on?
[−]seesthruya · 2026-10-11 Sun 08:42 UTC · link
Ahh, looks like 'manifold'. So, still triangles?
[−]RobotToaster · 2026-10-10 Sat 18:30 UTC · link
Note that the current release version is very old, I strongly recommend downloading the nightly version and turning on the manifold geometry solver in settings as it's much faster.
[−]dvh · 2026-10-10 Sat 18:34 UTC · link
I use openscad for all my kicad 3d models via scad->off->obj->(manually edit in mm3d to add colors)->wrl->kicad

It's not as bad as it looks, it's all automatic except adding colors which takes about 2 minutes.

[−]kennywinker · 2026-10-10 Sat 18:35 UTC · link
If you want openscad without the abomination that is the openscad language - check out jscad
[−]WillAdams · 2026-10-10 Sat 18:39 UTC · link
One of my favourite tools.

As noted, use the Nightly builds from: https://openscad.org/downloads.html#snapshots

When working with kids, it's well worth keeping: https://www.blockscad3d.com/editor/ in mind, or for folks who like to draw connections: https://github.com/derkork/openscad-graph-editor

Eventually, someone will note that its programming model limits variables and so forth --- for folks who want a more traditional language choice there are a number of options, notably for Python:

https://pythonscad.org/

[−]asmodeuslucifer · 2026-10-10 Sat 18:45 UTC · link
I barely know openscad (used Fusion 360 before autodesk enshitified it) but gemini is very good at creating code I can paste into openscad.
[−]YuechenLi · 2026-10-10 Sat 18:47 UTC · link
Oh, since this came up, for people who like code CAD and want to try something more powerful than OpenSCAD:

https://github.com/yuechen-li-dev/Aetheris/

Not an OpenCascade wrapper, it's based off my own experimental BREP geometry kernel. So, fillets/chamfers work, booleans works fairly robustly, surfacing, sheet metal, etc all works decently, it exports STEP AP242 by default.

Haven't had time to get the AIs to write a more up to date documentation and polish the language server. Not the easiest thing to use right now, so, using it through Codex/Claude Code or CLI is probably the easiest way to get started.

Still working on the webUI currently, in case someone want to DIY the UI. Note that the WASM compilation path is still unoptimized and way slower than the RyuJIT C# compilation though.

https://github.com/yuechen-li-dev/helioscad

[−]SOLAR_FIELDS · 2026-10-10 Sat 18:58 UTC · link
Not even two years ago writing your own BREP kernel was considered to be out of reach for even the most determined dedicated hardcore engineering teams that weren't extremely well funded. Now, it seems tractable and may finally get us out of the dependence on proprietary kernels that has plagued this industry for decades.
[−]YuechenLi · 2026-10-10 Sat 19:18 UTC · link
Yeah, I know. I started this project earlier this year because of my own frustration with the software ecosystem and that the major CAD vendors is charging thousands of dollar to add STEP 242 support and because of proprietary lock-in and locking everything behind cloud, and was trying to see if I can accomplish this with AI.

I'm not going to pretend this is easy: I actually quit multiple times for this project because I ran into the same walls that everyone else ran to: arbitrary 3D boolean operations is HARD,(Surprisingly, I actually didn't have that much trouble with fillets/chamfers because I kept them pretty bounded) and the approach I've finally taken to solve it is pretty insane. Essentially, the final architecture is more like "LLVM for 3D objects" compiler stack than it is traditional BREP kernel. Would love to talk about the technical deep dives if people want to hear it.

Also, feel free to write UI wrappers around it, because I'm pretty bad at UI design myself.

[−]rao-v · 2026-10-10 Sat 19:35 UTC · link
Given modern capabilities how hard would it be to make a really high quality stl to STEP converter that works well on CAD models that have been converted to STL?

It doesn’t need to be perfect on edge cases just translate back “reasonable” models.

Should be something that is fairly easy to eval etc.

[−]YuechenLi · 2026-10-10 Sat 19:48 UTC · link
Near impossible to do it robustly without AI, since a mesh is a blob of triangles and vertices, it doesn't really know if something is a "face" or an "edge", and mesh STL -> BREP STEP is akin to decompilation from binary than it is a simple translation. So, the most robust approach is to get a human/LLM to reconstruct the STEP file from the STL/OBJ/glTF file with a BREP kernel.

I wish there was an easier way, but I've spent weeks during the course of the project working on and failing to solve a similar problem (SDF to BREP) and concluded finally that there just isn't an easier way to do this fully automated without AI.

You can ask your LLM to try it with one of the OCCT wrappers or with my thing, I think Aetheris is slightly better because we added more STEP diagnostic tools like ray query depth detection and SVG sectional view during the course of development.

[−]15155 · 2026-10-10 Sat 21:30 UTC · link
[−]YuechenLi · 2026-10-10 Sat 22:29 UTC · link
STEP is a weird standard and one of the reasons it's weird is because it allows you to store tessellated mesh in the file with no BREP. Wrapping an STL mesh inside a STEP container is trivial, but reconstructing a BREP from the mesh is daunting.

Here're are some SIGGRAPH 2026 papers attempting BREP recovery, if you are interested. None of their automated approaches seem to work reliably, and they can only recover generic NURBS instead of analytical geometries like circles/cones/torii, etc.

https://github.com/AutodeskAILab/DualBrep https://github.com/yilinliu77/Brepler https://rilpraa0110.github.io/Img2CADSeq/

[−]15155 · 2026-10-10 Sat 22:30 UTC · link
Yeah - this is BREP-recovery using RANSAC shapes, not tesselated-mesh-in-STEP.
[−]MITSardine · 2026-10-11 Sun 10:59 UTC · link
You can find NURBs fitting in decades old textbooks (such as "The NURBs book"), but you have to be aware that this is an approximation problem as the only exact fitting is the one where the output is the input.

Also prone to robustness and quality issues. You're better off outputing a BREP directly.

[−]amelius · 2026-10-10 Sat 22:52 UTC · link
What is wrong with OpenCascade? Why not use that?
[−]YuechenLi · 2026-10-11 Sun 04:36 UTC · link
OpenCascade is an almost 30 year old C++ codebase that's known for being notoriously difficult to integrate.

The bigger issue is that OpenCascade is error tolerant to a fault, which allows it to import a lot more legacy geometries, but it also means that it silently exports a lot more bad geometries much more often than commercial kernels

So, there's a reason why commercial solutions don't really use OpenCascade over ACIS/Parasolid for authoring.

[−]jeffbarr · 2026-10-10 Sat 18:55 UTC · link
I have been using OpenSCAD to create cool geometric designs for 3D printing on fabric, with great results. The functional model is likely unfamiliar to most developers, but I have found that I can be efficient and productive with it.

Check out my repos of OpenSCAD objects at https://github.com/jeffbarr/OpenSCADObjects and Truchet Tilings at https://github.com/jeffbarr/TruchetTilings .

My code kind of looks like the C that I wrote in the 1980s, with lots of braces and careful indenting -- not sure if that is a bug or a feature.

As another commenter noted, use the latest nightly build for best results.

[−]brcmthrowaway · 2026-10-10 Sat 23:29 UTC · link
Why not switch to CadQuery or build123d?
[−]aeonik · 2026-10-10 Sat 19:04 UTC · link
BOSL2 library combined with LLMs really make me fly with my creations.
[−]moebrowne · 2026-10-10 Sat 21:24 UTC · link
[−]bee_rider · 2026-10-10 Sat 19:09 UTC · link
How does OpenSCAD type stuff play with simulation, in general. (If at all?)

I’m thinking of something like finite element analysis… but, I guess since the shapes in OpenSCAD are defined through this constructive geometry system, can things be better/more mathematically defined general purpose “discretize the PDEs over my mesh” type solutions?

[−]dranudin · 2026-10-10 Sat 20:12 UTC · link
Normal finite elemts does not care. The mesh ist just put on your 3d body that can be an stl or a step or whatever. The FEM only knows the nodes and nothing else. The mesh geometry is completely separate from the CAD file.

Now there is a method called Isogeometric Analysis (IGA) that was meant to improve this. It uses NURBS functions (just like CAD) for the shape functions of traditional FEM. The idea was that now, if you have NURBS describing the CAD geometry you can skip meshing and just directly calculate on the real geometry. But it did not catch on. The reason being basically, as far as I remember, was that most CAD geometries of interest are not pure NURBS. But they are operations of NURBS (think cube minus some other cube - trimmed surfaces). And IGA has problems with that.

This is a problem that openSCAD will probably also not be able to overcome. Maybe at times it might be easier to create NURBS geometries without trimmed surfaces. But most probably that cannot be done in most cases of real world significance.

[−]bee_rider · 2026-10-10 Sat 20:45 UTC · link
Ah, that makes sense. I think Isogeometric Analysis was the idea I was circling (the though process being “of course you can always export to a mesh, but the OpenSCAD model seems to encode more designer intent so why not use that for simulations directly”). I’ll have to read up on what was tried and why it didn’t catch on. Thanks!
[−]rjsw · 2026-10-11 Sun 00:29 UTC · link
The next edition of STEP AP242 will contain support for IGA.
[−]tylermarques · 2026-10-10 Sat 19:16 UTC · link
I've been using Opus 5.5 to write openscad models for me for the past week, with great success. I wanted to expand the project Open Source Watch Winder [0] to have 8 watches, with gears instead of pulleys, and in little back and forth I have a version I've started printing. [1]

[0] https://github.com/mwood77/osww [1] https://imgur.com/a/bWent0K

[−]maouida · 2026-10-10 Sat 19:52 UTC · link
Shamelss plug:

I have built FluidCAD[1] to overcome the issues of CAD by code, less mental effort to design by providing visual guidance. Slowly it became more of a hybrid CAD experience (mouse or code driven), almost all features now can be done by mouse and the code is generated for you. It'll pick the right selection filters for you.

https://github.com/Fluid-CAD/FluidCAD

https://fluidcad.io/

[−]mafm · 2026-10-11 Sun 03:08 UTC · link
That looks like a really nice approach.

Build123d could really benefit from being able to add features interactively (including explicit constraints) and options like freecad and Onshape could really benefit from explicitly representing the model as code.

Build123d seems to require a lot of coding to calculate constraints and positions that could be more easily expressed using something like the solvespace constraint engine and some construction lines.

[−]seesthruya · 2026-10-11 Sun 08:36 UTC · link
I love what I see so far with FluidCAD! I'm a Fusion user that keeps bouncing off FreeCAD, and I have dabbled with build123d. Very interested to see where this project goes as it seems to be great combination of gui-driven and code-driven cad.
[−]stateoff · 2026-10-10 Sat 20:16 UTC · link
I tried OpenSCAD but it ends up being too abstract and hard to maintain for me and like others it does not solve fillets/procedural selection well.

So here is my shameless plug "sograph": https://imgur.com/a/u1n2Grg

I should consider a Show HN instead, but it is too early to release yet.

[−]WillAdams · 2026-10-10 Sat 22:18 UTC · link
A similar tool which directly makes OpenSCAD code is:

https://github.com/derkork/openscad-graph-editor

(though you'd want to import BOSL2 to do fillets and so forth)

[−]stateoff · 2026-10-11 Sun 00:22 UTC · link
Thank you for sharing. I wish I knew this earlier for my maker projects. But since my graph editor is general purpose my efforts are not wasted :)
[−]timonoko · 2026-10-10 Sat 21:17 UTC · link
For these eternal Fillet-Whiners: Antigravity made simple Blender-tool that rounds all edges in STL-file. Sharp edges never look good in print and avoiding them feels often like too much extra work.

https://github.com/timonoko/OpenSCAD-rounding-in-Blender

[−]wren6991 · 2026-10-10 Sat 21:23 UTC · link
If you look at this and you think "wow, I love the idea of CAD-as-code but I wish it was a more sane language" then have a look at CadQuery: https://cadquery.readthedocs.io/en/latest/quickstart.html#qu...

(I recommend CQ-editor for an easy install: https://github.com/CadQuery/CQ-editor/releases/)

It's a similar idea to OpenSCAD, but embedded in Python and using a better geometry kernel. Want to fillet a box in OpenSCAD? Sure, either take the convex hull of 8 spheres, or the minkowski sum of a box and a sphere. Want to fillet a box in CadQuery? .edges().fillet()

Now I'm hearing some protests about Python, but consider this example OpenSCAD code:

    x = 1;
    echo(x);
    x = 2;
In most languages you would expect this to print "1". In OpenSCAD, the last assignment wins and it prints "2".
[−]retatop · 2026-10-10 Sat 22:01 UTC · link
I certainly have my complaints about openscad (mostly that the geometry isn't something you can operate on), but as far as I'm concerned a declarative language is perfect for describing an object. I don't want your example to do what you expect. I would have preferred if it didn't compile
[−]coryrc · 2026-10-11 Sun 04:13 UTC · link
What's worse is:

    x = 1;
    a = 2;
    echo(x);
    x = a;
Errors out with "line 1: a is not defined", because the override is implemented as is the tokens were present wherever the first declaration is. (If anybody looks up me, you'll see I've made a bunch of contributions and bitched about this particular thing which really fucks up a bunch of optimizations you'd want to do)
[−]ildari · 2026-10-10 Sat 22:18 UTC · link
My first time experience with cad as a code was through browser implementation https://reopenscad.com. My agent used it through mcp and designed pretty complex model with surprisingly concise code
[−]IgorPartola · 2026-10-10 Sat 23:05 UTC · link
I have a love/hate relationship with OpenSCAD. The idea of coding up shapes is neat and for some things that’s the path of least resistance. On the other hand nothing in OpenSCAD really makes clean code the happy path. Sometimes it is just easier to hardcode a known value or to design a part in a way that is difficult to modify later. Yes you have modules but what a module is is arbitrary. The idea that by default things are positioned globally and you can’t attach two parts to each other is rough. The fact that it generates surfaces and not solids means you can’t export 3D models into other software if you use hull().

Yet I tried alternatives and found them way too complex with their UI. I have a FreeCAD tutorial bookmarked so when I find a dozen hours to learn it I will. In the meantime when I need something simple and quick, OpenSCAD gets me there.

[−]ponyous · 2026-10-11 Sun 01:06 UTC · link
As someone who’s been building AI for CAD[0] with OpenSCAD. I’m very thankful to OpenSCAD maintainers it’s been a life saver. Terse syntax, a lot of plugins and great CSG kernel.

People keep saying I should use other kernels for fillets and stuff, but from my testing AI is just not as good with, for example build123d as it is with OpenSCAD.

[0]: grandpacad.com

[−]nayuki · 2026-10-11 Sun 01:38 UTC · link
I use OpenSCAD as my primary design tool for 3D modeling. I get things done, but it isn't easy, and it's hard to recommend it to other people. OpenSCAD really requires the user to mathematics, trigonometry, mental visualization, and programming beforehand as prerequisites - unlike mainstream CAD programs which are more point-and-click friendly. Performing fillets and chamfers on corners is quite tedious, and describing a screw thread as a polyhedron is a nightmare, but I overcame these challenges.

On the plus side, I like these things about OpenSCAD:

* The software is open source, so price or pirating are not barriers, you can use it as much as you want on any computer you want for as long as you want, and it can never be taken away from you.

* The program is small and easy to download, not some multi-gigabyte sprawling software package.

* I think you learn to declare variables for parameters very early on, and it feels natural to make every design parametric from the start.

* The textual nature of 3D models means that I can use Git version control, diff between versions, and leverage similar developer-oriented tools that I use for general programming. I suspect that CAD programs that use binary file formats will have to come with their own diff tool and version control system.

* By reading source code, it's possible to follow the thought process of how a 3D model is constructed, and carefully make modifications in the middle of a chain of operations that later operations depend on. In point-and-click CAD, it's not clear to me if it's possible to change things in the middle of a chain.

* The Manifold renderer is so much faster than the old CGAL, resulting in reasonable human-interactive cycle times.

* I ended up writing my own library to cover a bunch of common shapes / use-cases. It does take some effort the first time, but then I keep reusing the results.

[−]Joel_Mckay · 2026-10-11 Sun 11:04 UTC · link
FreeCAD also supports OpenSCAD, and can actually export step files.

This guy publishes simple tutorials on how to deal with the unintuitive FreeCAD parametric design workflow:

https://www.youtube.com/@4axisprinting/videos

If you have a long-term project... storing the exact FreeCAD version installer in the artifacts folder for precise compatibility is wise. =3

[−]jmpman · 2026-10-11 Sun 01:50 UTC · link
I never learned Solidworks or any other "proper" CAD packages and have always hacked my way to success with OpenSCAD. Fundamentally there are tons of shortcomings, but where it's recently become a joy is with AI. I can have Claude design something in OpenSCAD, and then I'll copy and paste it over to OpenAI, asking for it to review. A few back and forth cycles and the resulting output is surprisingly solid. If there's something I don't like, I'll just make a few edits, and send it back to the AI to parameterize (and critique). Once I have a good first draft on OpenSCAD, I'd like the AIs to then convert it to a true CAD package to productionalize... haven't achieved that yet.
[−]vjvjvjvjghv · 2026-10-11 Sun 02:04 UTC · link
I like the idea but I really dislike the OpenSCAD language. There is such a thing as being too functional. I don't really want to have to rethink even the simplest algorithms to work with OpenSCAD because of its weird scoping rules. Add to that the lack of a debugger. On the other hand, it's super cool to be able to source control a CAD model.
[−]socializer · 2026-10-11 Sun 03:23 UTC · link
There's a long history of programmers trying to reduce 3D design to programming. I still remember POV-Ray, which was a big thing in the 1990s. But in the end, it's just a very inconvenient way to iterate on shapes by editing code. Kinda like drawing a comic strip by writing SVG by hand. Effortless interactivity rules.

Many CAD programs incorporate parametric modeling, scripting languages, or Scratch-like "block programming" tools for when you actually need flexibility for a specific assembly. But that's where it belongs: an add-on for an interactive modeler. You don't need to write code draw a helix, but if you need a variable number of scaled copies, there's a parametric tool for that.

I guess these tools may be useful to LLMs because it's cheaper for them to generate a program than to perform computer-use tasks in a UI. But I wouldn't recommend humans to start with OpenSCAD.

[−]evnp · 2026-10-11 Sun 04:35 UTC · link
To each their own. Writing models in vim with the full power of git managing history, variations, experiments just feels so much better than spending my time in someone else's (often bloated) proprietary GUI.

I use https://replicad.xyz by the way, in Typescript. No affiliation, just a happily productive user of a fantastic MIT-licensed project. I don't use LLMs at all, for better or worse.

Ps. Replicad does make you write code to draw a helix, but it's just sketchHelix(pitch, height, radius)

[−]Mazer23 · 2026-10-11 Sun 03:54 UTC · link
I spent quite a bit of time using openscad which Claude code to try to build a capstan (rope driven) joint for robotics. It worked well but had some issues with agentic stuff and speed. In the end I ended up taking a detour and building my own agentic cad modeling harness based on some of the same open source libraries that openscad uses. Now I’m trying to turn that into its own standalone product. You can check it out at http://partforge.ai
[−]edg5000 · 2026-10-11 Sun 04:19 UTC · link
I found Astra to be surprisingly good at writing Python that generates FreeCAD documents. Arguably this says more about Astra than the ergonomy of writing FreeCAD XML, but because of Python the resulting code is very clean, because it puts anything verbose into functions. What could also work is direct OCCT from Python, haven't tried that.
[−]dboreham · 2026-10-11 Sun 04:36 UTC · link
I've been using Claude Code to design buildings for me by generating OpenSCAD files. Claude told me about the tool when in the beginning I asked if there was a way to do "3D as code" in view of my total failure to learn how to use 3D CAD applications.
[−]MattRix · 2026-10-11 Sun 04:43 UTC · link
OpenSCAD is great and really not that hard to learn. I recently designed a 3D-printed version of my new mobile game to celebrate its launch: https://bsky.app/profile/owengoss.com/post/3mwr2mn5gw227
[−]arjie · 2026-10-11 Sun 04:48 UTC · link
In practice, I have found better results with `build123d` than with OpenSCAD if one is using current agents with current models. It's a cool tool, yes, but something about the workflow makes it hard for present day agents to work with. Perhaps some kind of custom harness would do the trick, but `build123d` works with Opus 5.5 in more cases than OpenSCAD.
[−]IshKebab · 2026-10-11 Sun 07:59 UTC · link
Now that FreeCAD is actually kind of decent there's really zero reason to flagellate yourself with OpenSCAD. Stop suggesting it to people.
[−]gorgoiler · 2026-10-11 Sun 09:25 UTC · link
There is lots of discussion here about OpenSCAD vs the OpenCascade family. I recently modeled a simple plaque with cadquery and was surprised how long the rendering took. A full 30+ seconds for a lathed part with text extrusion and a radial pattern of cutouts.

For me, modeling is just as much about figuring out the shape and features of an object as it is producing a STEP. I would love to model an object in a GUI then re-edit the file with code and re-render with a library, not the least reason being that GUI tools render multiple orders of magnitude faster.

[−]SoKamil · 2026-10-11 Sun 10:19 UTC · link
Recently, whole Adobe suite was recreated with AI[1]. Is there such an initiative in CAD world?

[1]https://github.com/storytold/photocraft