Looks pretty nice! I could see this being really nice for making customizable models, if it could import and alter step files, and had something like the customizer UI in FreeCAD.
Tbh I suspect step files would require more code than the entire project so far. It's really not designed to track objects in terms of objects, faces and edges.
The goal here was to avoid a lot of complexity from the bigger CAD tools like FreeCAD.
Ah, I don't know much about the actual algorithms involved in 3D work.
There seems to be a few libraries out there for converting a mesh to an approximate SDF though, so I assume the Rust lib for that could be compiled to WASM, but that might be an issue if simplicity is the priority.
Sure you could pull it in as a pure object, that wouldn't be too hard; as you say, grab a JS lib... though pure SDF isn't really enough, fncad needs interval SDF which might require some work.
But the problem is, you couldn't do anything with the model. You couldn't change the edge chamfering etc. It'd just be an insert.
I (Sonnet 3.7 really) made a text-based CAD editor. It's like OpenSCAD but the backing abstraction is Signed Distance Fields, so that it can represent, for instance, smooth CSG.
The mesher is very simple; just "subdivide an octree using interval arithmetic, put a mesh around it, then fit it to the surface using the SDF gradient." The intended usecase is for 3D printing, where slight errors don't matter and you can just throw triangles at the problem.
Performance is okay, but not great. I blame JS. ;)
This project is AI coded, but it's not vibe-coded: I designed the core abstractions deliberately, so all design problems are my own. The website, however, is near entirely Sonnet's work.
Looks pretty nice! I could see this being really nice for making customizable models, if it could import and alter step files, and had something like the customizer UI in FreeCAD.
Tbh I suspect step files would require more code than the entire project so far. It's really not designed to track objects in terms of objects, faces and edges.
The goal here was to avoid a lot of complexity from the bigger CAD tools like FreeCAD.
Ah, I don't know much about the actual algorithms involved in 3D work.
There seems to be a few libraries out there for converting a mesh to an approximate SDF though, so I assume the Rust lib for that could be compiled to WASM, but that might be an issue if simplicity is the priority.
Sure you could pull it in as a pure object, that wouldn't be too hard; as you say, grab a JS lib... though pure SDF isn't really enough, fncad needs interval SDF which might require some work.
But the problem is, you couldn't do anything with the model. You couldn't change the edge chamfering etc. It'd just be an insert.
I (Sonnet 3.7 really) made a text-based CAD editor. It's like OpenSCAD but the backing abstraction is Signed Distance Fields, so that it can represent, for instance, smooth CSG.
The mesher is very simple; just "subdivide an octree using interval arithmetic, put a mesh around it, then fit it to the surface using the SDF gradient." The intended usecase is for 3D printing, where slight errors don't matter and you can just throw triangles at the problem.
Performance is okay, but not great. I blame JS. ;)
This project is AI coded, but it's not vibe-coded: I designed the core abstractions deliberately, so all design problems are my own. The website, however, is near entirely Sonnet's work.
Source is on Github: https://github.com/fnCAD/fnCAD