GenCAD
301 points - yesterday at 9:40 PM
SourceI spent a few hours trying to get this to work, and I couldn’t get it to produce usable results on anything except the training data, even with very simple drawings.
I noticed in the GitHub that they mention it is only around 60% reliable even on their own training data, but the image shown on the front page feels pretty misleading. I made 10 images that were very similar in complexity to the examples shown, and even after running it around 50 times on each image, not a single one worked correctly. In the rare cases where it produced something, the output was completely wrong.
This seems pretty misleading in its current state and definitely needs more work.
Neat, but I don't really see the utility. The time consuming part of CAD drawing comes from figuring out the correct dimensions of each feature, spacing, sizing, tolerances, etc., and constraining the drawing in a way so that it's easy to tweak later on- which this doesn't do at all. Maybe you could draw a 2d sketch of what you want then generate it, but you'd still have to do the hard part.
As is often the case in the GenAI space, this also appears to be a solution to a non-existent problem.
If you can just take a pencil and draw a piece of furniture, press a button and get a semi-decent CAD drawing to tweak, that'd be a huge tool for carpenters and such.
"to tweak" is probably quite far away even if "get a semi-decent CAD drawing" was remotely reliable which it isn't.
Strangely, it would work better if it generates CAD as code with clear labels. Then you can grab your caliper and make sure its all the right size.
CodeCompost
today at 5:56 AM
Missing IKEA screws.
timvdalen
today at 7:27 AM
IKEA will send you those for free if you order them on the site, including free shipping
nextlevelwizard
today at 5:14 AM
If down the line this model could create 3D model from 2D images that would be very neat way to pay less for war gaming models
satvikpendem
today at 7:05 AM
Gaussian splats and neural radiance fields already exist.
semi-extrinsic
today at 5:41 AM
You can already do this with apps like Kira. I believe it is especially good on the iPhone variants with LiDAR.
protocolture
today at 6:11 AM
Already done. Cults generally has stls of 40k models before release. Its just a matter of finding them.
cjtrowbridge
today at 12:25 AM
This has been easy with OpenSCAD for a long time. I have made lots of cool, complex models this way. I built a repo of the prompts I use to show the llm how to do this and it includes many of the models I've created this way...
https://github.com/cjtrowbridge/vibe-modeling
oasisaimlessly
today at 1:22 AM
OpenSCAD has almost zero crossover with B-rep modelling ('true' CAD, what this apparently is), though.
how hard it is ? with AI prevalent, how long ? any pointers to start from ?
bschwindHN
today at 3:08 AM
If you want something based on B-Rep, look at projects that use opencascade under the hood, as that is one of the only B-Rep CAD kernels available which is free and open source. Some examples would be CADQuery, CascadeStudio, or RepliCAD.
twelvechairs
today at 3:32 AM
OpenSCAD uses CSG which is generally better. Easy to convert CSG to BREP. Cant generally do the opposite
auxiliarymoose
today at 4:08 AM
It's easy to convert because CSG is a small subset of what BREP can do.
It's analogous to "all squares are rectangles, but not all rectangles are squares" (squares=CSG, rectangles=BREP)
CSG by itself isn't suitable for most CAD use-cases.
rowanG077
today at 4:15 AM
How can I convert openSCAD models to true STEP files? As in no meshes. I Literally have wanted that for years.
You need to use https://github.com/smurfix/buildscad which can convert OpenSCAD to Build123d, then you can export a STEP file. It has a few limitations, but for simple OpenSCAD files it can generate an equivalent representation in OpenCASCADE.
rowanG077
today at 6:46 AM
Yeah, that fails for even moderately complex models...
jvanderbot
today at 12:30 AM
Same. Working with an LLM and OpenSCAD has been totally painless.
richk449
today at 12:56 AM
I’ve been using cadquery and build123 with Claude code and I find it incredibly painful.
What is your workflow for llm integration to openscad?
I just ask it for what I’m looking for (doing very simple “spare part” level at home 3d printing, nothing fancy or elaborate) and it gives me a starting point. Then I sometimes just edit the scad code by hand, and some times I ask the AI to revise, sometimes a mix (many iterations).
For very simple geometries it works great, but it very quickly becomes apparent that there’s a bit of a disconnect between “LLM views image” and “LLM emits scad that looks like that image” when it comes to anything non-trivial.
Still gives me a starting point I can mess with, which is great since I have zero CAD training or experience.
(I’m not the commenter you replied to)
Tbh that sounds harder than just learning CAD, which is really not that difficult if you use a proper parametric editor - I would recommend SOLIDWORKS first. It's got the easiest UX so is ideal for learning. They actually have a vaguely reasonably priced subscription now, but IMO it's still way too much for occasional hobby use so I'd recommend just pirating it (which is easy).
Once you have learnt a bit then the only FOSS options that are worth a damn are a) SolveSpace which is quite good and light, has a slightly quirky UI (but not in a bad way) but unfortunately has some critical missing features at the moment - notably bevels/chamfers. Although I did see someone made a sloppy PR to add them so we'll see where that goes.
Or b) FreeCAD which is actually good now and fairly close to SOLIDWORKS (at least for the basic stuff you're likely to use) and has a reasonably good UX. Some rough edges still but overall it's very usable. Good enough that I reach for it instead of pirating SOLIDWORKS these days.
The basic workflow is pretty simple:
1. Make some planes, referenced from existing geometry.
2. Make sketches on the planes.
3. Extrude/revolve them (either adding or subtracting from the existing geometry).
4. Repeat until you have the right shape.
5. Add a load of chamfers to make it pretty.
From my experience people who heavily rely on LLMs are allergic to learning anything new (with the exception of learning new and improved ways to generate slop). They just 'want to get stuff done', even if it means staying in a local maximum forever.
Tell it to use the existing libraries.
https://openscad.org/libraries.html, in particular BOSL2
I've one shotted a light saber hilt with threaded parts and it worked flawlessly.
Not OP but I just ask Claude Code to make me an openscad file. If I need changes I ask for them in plain english. If you are specific, it's not the quickest loop but it works. I usually ask it to parameterize the model enough so that I can quickly print small prototypes in my 3d printer. Once I am happy with the mini version I print the full-size model.
alexgoodhart
today at 1:56 AM
What is the inference overhead on this
I wanted to see how well it performed on real pictures of parts or hand-drawn drawings, but when I tried setting up the docker image, immediately ran into all kinds of dependencies not being installed. The examples make me suspect it doesn't work well beyond images that were generated from CAD in the first place.
xiaoyu2006
today at 3:51 AM
> docker image, immediately ran into all kinds of dependencies not being installed
Ironically the former is engineered to avoid the latter.
sjjsjsvdd
today at 5:35 AM
[dead]
If only there was some kind of container that allowed you to bundle all your dependencies together with your software.
dnnddidiej
today at 5:14 AM
That thing is called Nix
Parent said "bundle"
dnnddidiej
today at 8:48 AM
Nix to give you reproducable builds. Docker to bundle.
Docker files alone is usually full of aptgets and curlshs. Which might be why the docker image wont build.
To the author if they happen to see this. Please kill the auto playing video. If someone is listening to something else on their phone this always takes over and interrupts.
whatsupdog
today at 3:51 AM
TIL: people are still browsing the internet without an ad blocker.
cassianoleal
today at 6:08 AM
Doesn’t even have to go that far. TIL people are still browsing the internet without disabling auto-play on their browsers.
Should be disabled by default tbh.
Readers may also enjoy my open source Rust BRep CAD kernel https://github.com/ecto/vcad or the hosted version at https://vcad.io.
I also wrote a bit about what goes into CAD apps! https://campedersen.com/tessellation
vincent-uden
today at 7:37 AM
Seeing as I'm attempting to build my own CAD program in Rust I checked out the hosted website. I'm not really sure what is supposed to be working and what isn't.
I can't help but to be skeptical of one person writing ~115k LOC in 4 months which is just the Rust crates, nevermind the frontend (which is another 100k LOC!!!).
I'm curious why you decided to go with "eager" tessellation. Creating a circle immediately results in a bunch of lines which resemble a circle but would fail under tangency constraints quickly. Is this a current limitation or part of the strategy for the kernel?
As someone also working on CAD in their spare time, also tried the hosted app. I get the feeling that this is made by someone who has never opened a (professional) CAD app at all. It feels like a mix between a tool like blender and CSG-style CAD, but even all of that doesn't seem to work. Maybe this is the proof that vibe coding does not work, at least not for this kind of application.
In my own project I use LLMs very sparingly and hesitantly, but made the observation that they are not very useful on the hard parts of CAD. I expect this is because of a lack of training material. Most professional CAD applications are proprietary and books on the topic are usually sparse on implementation details. The non-BRep CAD applications such as OpenSCAD and family are probably overrepresented in the training data.
This might also explain why people's experiences with LLMs are very varied. If you stay in the happy path of CRUD web development and stuff all is nice and well, but if you start to veer off this path you get more and more challenged.
(forgot to mention, it's wired up to Claude so you can vibe CAD, like OP but with a few more steps - I'd like to train a similar model soon! I also wrote about my first stab at this https://campedersen.com/cad0)
I'm stumped by things like this. The drawing & modelling are not the difficult bit - the CAM programming is.
That seems difficult enough that I have not found an open source program to load a 3D model and allow me to set the toolpaths in a UI, never mind have an LLM generate them from the model.
Maybe I missed something, if you have the image rendering in the first place, you already (likely) have the CAD. It is a nice demo, but what is the utility?
soupspaces
today at 4:47 AM
[dead]
The examples they show are so basic.
mamami
yesterday at 11:57 PM
Ideally it would tie in with an llm, no? Like you would want to be able to say something like "create a design of car suspension subject to x,y,z contrains"
The input is images, and the output is CAD models, so it appears you could use a multi-modal LLM to natural language -> image -> CAD
physicsguy
today at 7:27 AM
This is over a year old now, why post now? There have been other advancements in this area.
john_minsk
today at 7:28 AM
Could you please share?
knollimar
yesterday at 10:50 PM
It says "can convert cad latents into a sequence of parametric CAD commands"
Which CAD program? I'm confused
Am I reading this right?
>Most importantly, GenCAD does not merely generate a 3D solid but also the entire CAD program.
dbcurtis
today at 12:04 AM
> Which CAD program? I'm confused
Clue here:
> Our proposed GenCAD architecture...
So, at this point, it seems like this will work with all CAD programs, since they have yet to encounter any systems that they can't work with. More seriously, my guess would be whatever one is available for free in their lab. Kind of standard operating procedure for academic projects -- do a proof of concept, make a video that avoids known bugs, get a grade, push source to git, graduate. Good ideas come out of that... production code... eh... maybe.
More likely someone ends up in the situation that my kid did, previous graduate student's git repo is stale by 2 versions of C++, and 4 versions of ROS, and neither of the two unit tests still work after porting.
It's DeepCAD* output, it looks like, which is a JSON payload that is the sketch / extrude / whatever steps, which is itself based on Onshape output.
Looks like you can go JSON -> step files, but not really in such a way that you can modify any of the operations.
* https://github.com/mightyhorst/DeepCAD
lagrange77
yesterday at 11:00 PM
> Which CAD program?
Doesn't matter. CAD models/objects are represented by a sequence of operations on a primitive or sketch. Unlike meshes, that describe the manifested resulting shape of objects in 3D programs like Blender.
So it's about the fact, that their model outputs that hierarchy of operations. The history of development, not just the result.
SchemaLoad
yesterday at 11:37 PM
How does it not matter? Every CAD program is not going to have exactly the same interface and commands. I doubt for example this will for example generate and OpenSCAD text file.
plumeria
yesterday at 11:45 PM
It could be used as pseudo-code for LLMs to produce specific CAD commands?
It will still be application dependent.
Code to compute fillets and blends gets incredibly complex when multiple surfaces are involved. And when surfaces are barely intersecting, or almost coincident, all bets are off what the command will do - very much depends on the geometry kernel and the tolerances it uses whether it decides the surfaces even intersect. And if it decides they don't intersect, all downstream commands will fail. Handling tolerances is one of the hardest aspects of CAD. (It's no coincidence that most open source CAD applications always demo with the same relatively basic types of models - they just can't do truly complex CAD.)
So a simple set of operations - cube, sphere, intersect - sure that will work anywhere and will be portable across applications and makes a nice simple demo. But once you start doing any serious CAD modeling the result is kernel dependent. That's why portable CAD formats like STEP do not preserve the commands used to generate the results. And why native CAD application formats do preserve the command history but are not portable across applications.
SchemaLoad
yesterday at 11:58 PM
It could be anything which is why the question was asked what it actually outputs. I had a skim through the page and code but couldn't see what the output was.
itishappy
today at 12:51 AM
Nothing stops you from storing a history of mesh operations. This is exactly what modifiers (including geometry nodes) do in Blender today.
isaisabella
today at 3:15 AM
The demo seems pretty cool, but also pretty simple. When it comes to complicate models, I afriad it would be hard to generate the accurate 3D model.
simpleintheory
today at 12:09 AM
Is this Google-affiliated? The heading font is Product/Google Sans which IIRC only Alphabet is allowed to use and the entire webpage seems to be Google-style but neither of the two named researchers seem to be employed by Google?
How are the input images generated?
andrew_kwak
today at 3:29 AM
Checked out GenCAD. It seems pretty useful for simple circuit designs. Wondering if it supports import/export with other CAD formats?
the idea is good, but the examples still feel like a distance to handle real constraints and dimensions
ironhaven
today at 12:19 AM
A another take on this problem is zoo.dev . They wrote a brand new from scratch cad engine that is driven a custom openscad style language called kcl.
Then then have a trained llm that has can generate kcl to either create new parts or act as a llm assistant for changes to existing parts.
It’s neat that llms can do 3-D but I wonder how much of the problem is integration.
nik282000
today at 3:13 AM
Website renders so poorly on my phone that I cant read half the text. Fits the bill for a slop project.
"In 1975, Dr. Joseph Sharp proved that correct modulation of microwave energy can result in wireless and receiverless transmission of audible speech."
abstract257
today at 5:44 AM
[dead]