Comments
51 total · 51 loaded
Interestingly, ttouch created browser-based CAD tool CADmium a few years ago based on Truck. Then, a few months ago, they created another one (CADara) based on OpenCASCADE: https://news.ycombinator.com/item?id=48070083.
Truck seems cool, but creating a b-rep kernel is a phenomenal amount of work. Given that, I'm curious how quickly SolidCraft will mature.
Well, I did it, took 6 months, and I think I'm ahead of Truck on that front since as far as I can tell Truck can still only do single edge fillets with Newton's method as their new fillet algorithm, whereas my kernel can do planar fillet chains fairly reliably.
I wish someone would wrap a frontend around it too considering I'm bad at designing UIs, and the architecture is too weird to put a conventional 3D CAD UI on it that I'm honestly hoping someone would throw their LLM at that task.
https://github.com/yuechen-li-dev/Aetheris/
Also, sorry about the excessive self-promotion, but I think most people would be shouting from the mountaintop if they built a BREP geometry kernel from scratch solo too.
I’m curious, what does this part mean?
“ Dangerous operations which may generate degenerate/sliver/zero-dimension geometries are instead blocked from materializing to 3D at a compiler level.”
How is that achieved, or rather what does that mean? What defines a sliver?
Aetheris took a very obvious approach that not many have seemed to tried before: It throws an error when an operation that may create ambiguous intersections and refuses to materialize bad geometry in the first place, which is not really possible to do with traditional NURBS based kernels, whereas Aetheris can because it is analytical first.
The current design is meant to be import tolerant but export strict, it imported most STEP file I throw at it fine after a bunch of fixes, but I don't really have a big enough sample corpus know for sure how much real world STEP file it can handle.
Sorry for asking for definitions - since Aethris is such a different architecture, I want to make sure we’re using the same language.
When you say “models they generate” do you mean the the nurbs representation, or the tessellated geometry for rendering?
On a related topic how does Aetheris perform when defining a screw thread? Or a nut thread?
On screw thread, if you mean by "how do you make a screw thread in Aetheris", you can check out the actual code for a threaded bolt I built for a showcase here with the JSON like DSL called Firmament:
https://github.com/yuechen-li-dev/Aetheris/blob/master/fixtu...
So, the high-level surface language of defining a screw thread is basically a struct/record that looks like:
Thread MainThread {
Surface: face(Bolt.Shank)
MajorDiameter: 8mm
Pitch: 1.25mm
Length: 47.5mm
StartOffset: 1.5mm
}
Which is why I said that it's really hard to think of an editor UI for Aetheris that's not just a text editor or a ComfyUI like graph visual programming or something.If you mean compile speed wise, not great right now, it wasn't that much of an issue when running on RyuJIT natively since it's still acceptable, but currently WASM cold compile speed for a moderately sized assembly is around 4-5 minutes so there is a lot more work to be done before I'm ready to put it on a cloud server.
I'm not critiquing the language choice, it's just that I basically have a thing that is big on dynamic linking and I would rather farm out the geometry kernel to someone else and at this rate I'm kind of forced to port yours over so it works for me and I think that would be a bad outcome for both of us.
Also your .firmament files are good because I'm working on something like that too.
But you didn't, Claude did. Your commits display it.
Would you tell Terrance Tao that they didn't produce [this conversation](https://chatgpt.com/share/6a5fdc7a-d6f8-83e8-bbea-8deb42cfed...), the model did?
If I keep asking clarifying questions to Albert Einstein, that doesn't make me the inventor of relativistic physics, no matter how much I know about the subject.
I'm not contradicting OP's expertise on the subject: they seem to at the very least know what they're talking about. But saying "I" did this when all you did is prompt the funny slot machine and approximately none of the code is reviewed (6 commits per day, each being 50+ files on average is not something you have reviewed or understood.) is lying to others and to yourself.
I'm telling you, I simply couldn't do it. Unless the prompt is "copy every single feature in AutoDesk Fusion 360" and sit back, and even then, I wouldn't even know where to start with testing it, knowing whether it works properly, and whether the various tools are useful, performant, etc.
Let's not assume that the code is the most important part, it's important, but domain knowledge is still very important.
Most of the documents have something like this at the bottom:
"Primarily written by AI based on human design discussions."
And I don't feel ashamed to let the AI do the writing because the output is reasonably good because I let it generate a TOC then I rework the TOC by hand, then for each TOC chapter I just have a discussion giving it the information and then I let it generate the text. I didn't even directly tell it what to write about. Instead there is a loose discussion that contains all the needed information to convey.
So it is really silly to then slap your own name on the final end product and claim you did all of it, even if it took weeks of prompting to finish the document.
https://github.com/bherbruck/solidcore
If the experiment does work out and the library NVIDIA open-sourced proves to be mathematically robust enough for standalone CAD use, it would leapfrog OpenCASCADE kernel for open-source CAD (solved math that was previously propriety, graceful failures without crashes, multiple CPU threads, running smoothly on web browsers).
Personally, I've been planning out work to create a build123d-like python scripting environment which wraps the Truck kernel, in the hopes that one day Truck will be mature enough (so many problems with fillets!) to surpass OpenCASCADE.
As much as I hate Design By Committee, a CAD kernel is a massive undertaking and it would be nice to not have 20 different projects all working on cool features that are not compatible with others because every project took its own path. It might be worth finding others actively working in this space and see if there could be a shared vision that we could all work towards together. Things like fillets, solutions to the topological naming problem, etc., are gonna take a lot of smart minds working together to really solve.
I'd gladly shell out a bunch of tokens to help create that vision, but I'd have to say I'm not exactly the person to architect that vision myself.
But I am here for LLMs, if they really can be used to solve maths, to solve CAD maths, which is, as you say, the really difficult stuff.
I am still not going to use an early-stage CAD package, but this actually would be a meaningful contribution to society. The rest is a bit AI NIH.
Given much can be automated in 2026, these (promoted goodies) may come as the missing link in innumerable automation chains, and particularly where commercial agents aim for when they sell costly licensing.
It also indirectly fights piracy and the risks which come with pirated copies (sidelined with funny stuff).
In all honesty - COM+ is a very smart thing, sadly not everyone understood it, and most new software packages are cloud-native before all else and dont' have it. Using the integrated (internal) scripting layers is not always so easy. But what does even 'easy' mean in 2026 automated coding. It was hard 5 years ago and 9 years ago when I last did such automations, nowadays this all has a very different perspective.
And let me remind you - there are dozens of "background removal" websites, and many of them are profitable. So you can imagine the level of comprehension for technology the general population has (at this moment, perhaps will advance rapidly also).
IMHO they should have had AI convert OCCT kernel to rust, or just wrap it and use as-is.
BTW we are on the verge of solvespace 3.3 with those AI fixes. After that I'm adding the named parameters that have been prototypes 12 times already. There are also a couple forks out there with MCP server added, but I want to focus on missing features.
* OpenSCAD -- cool idea, good for a few types of highly procedural parts, but most of the time I'd rather a parametric sketch-based interface over pure code.
* FreeCAD -- the most features of any open source CAD, but poor UI, tendency to crash, and the advanced features like loft kind of fall flat compared to commercial equivalents. You think you'll be able to model a part, but it becomes extremely frustrating if you actually need the advanced tools.
* SolveSpace -- pretty stable and reliable. Fast, compact, great sketching interface, good discoverable UI. You can predict what types of parts you can model with it and what types you can't. Doesn't try to do everything but is good at what it does.
You can tell which one is my favorite! N features done to a good level of polish and with somebody making sure it all "makes sense together" beats 10xN features all 80% done and haphazardly mashed together in different menus/workbenches, for any tools I want to rely on.
I am noodling around with a slopcoded CAD tool of my own these days, just out of curiosity to see how far Opus5.5/GPT6 can get doing it in F# and to experiment with some workflow concepts that match the way I like to design parts. But like you said, progress is slow. For stuff I actually want to get done, SolveSpace remains my go-to, and I greatly admire its coherent design.
However, OpenCascade being C++ instead of Rust is the least of its problems, the main issue is OCCT's boolean/blend engines aren't really as robust as the commercial kernels, and handling arbitrary 3D boolean edge cases one by one correctly is one of the main difficulties of a geometry kernel.
Very interested in SolveSpace's progress on this really.
Its good progress but still too easy to have a failed boolean. Previously you had to know how to work around bugs to cut a fillet off an edge. Now thats pretty easy and robust, but as soon as you do two of them that intersect there may be a problem. Like you said, the list of corner cases never end. I suspect a bit more Claude use might fix that one too.
I played around with Freecad mcp, and then also with having an agent generate some openscad before.
For the Freecad mcp I didn't like it at all. The agent didn't work in a way that would let me easily modify things. I hadn't given it instructions, but it didn't really create sketches and then extrude them (after checking they're all fully parameterized.)
For openscad the problem was just that while the model could do it, the lack of "visual reasoning" (for want of a better word) really held it back. There was a nice workflow there though by giving it a little "generate_image" of part tool and it could make a nice iterative loop.
Overall for both approaches it was slower than if I'd done it myself (and I'm not particularly good at 3d modelling). Now, that's not that surprising given that I was trying something new, but without being able to edit things generated by the AI myself I wouldn't want to try it again.
Now, maybe this solution can work in the way I'd want to. I may give this a go next time I have something I want to make.
Interestingly enough I was trying to make a simple(ish) workbench project using that and LLM made both the "generate the project" program and "run thru the checks" program, where it encoded stuff I asked it to fix (like making sure the bench feet are sitting under the posts, or that there is no holes in the floor).
Ended up building it and on one side I was impressed that it mostly was fine, on other there were clear issues that wouldn't happen if someone actually experienced with it designed it, it just wasn't designed to be put together easily
IIRC, FreeCad has at least partially addressed the remaining problems with that recently.
Could you please confirm if 3D printing functionality is supported? This feature would be very useful for professionals. Thank you.
- exporting an STL so that a Slicer may be used to prepare the file for 3D printing --- https://github.com/bherbruck/solidcraft notes "Export to STEP...3MF...STL and OBJ
so that basic support is there, but the further levels of:
- slicing a 3D model
- sending a model/managing a 3D printer/farm
do not seem to be --- given that there are quite robust solutions for those, I feel that the Unix philosophy of chaining small tools makes sense here.