As one of the Solvespace maintainers I have a few comments:
1) You don't want just 2D constraints, 3D is better. If you were writing in C++ I'd say just take our constraint solver (Like Dune3D did). Since you're loving Rust, I can point you to the work of Michael F Bryan who wrote one in Rust and blogged about it here:
https://adventures.michaelfbryan.com/posts/constraints-part-...
I think his code is over at gitlab. I haven't looked at it in a couple years. He wrote that after I nerd-sniped him ;-)
2) For geometry kernels... I've got 3 classes of bugs I want to squash in the Solvespace kernel and then it should do booleans pretty reliably, but I haven't had the time. Ours is just under 6k LOC so you could learn a lot from it. My email is the same ID at gmail if you want to ping on this topic. Its been a while since I looked at Truck and I thought it had stagnated a bit. This is a really hard problem, which is why there are so few options out there even in the commercial world. Even triangulating a trimmed NURBS shell is tricky.
3) History/feature tree is closely related to the "topological naming problem" that FreeCAD has. Solvespace handles this by creating each entity from a set of known things. If you try to recreate (regenerate in our lingo) it will just return a handle to the existing entity rather than creating a new one. In other words, every entity "came from something" and that relationship is remembered. Where we handle topological naming it works perfectly. But not everything in solvespace is covered by this. You need to bake this in from the start, it's not something you can easily bolt on afterward.
> As one of the Solvespace maintainers I have a few comments:
>
> 1) You don't want just 2D constraints, 3D is better. If you were writing in C++ I'd say just take our constraint solver (Like Dune3D did).
There is also a wrapper around SolveSpace's solver for Rust[1] but I dunno how hard that would be/is to compile for the webassembly target ...
Solvespace is freaking awesome. I tried so many different tools and it hits the sweet spot for reasonable learning curve (esp. for someone that is not a mech engineer), power, Linux, cost (free), and safe from disruption (no way I'm subjecting designs to all the risks of hosted offerings). Keep up the great work!
In effect, these are the same thing. If you try and deliver the software as a cloud service, you'll need to make the part that ties into your auth & observability stack, at the very least, open source.
Cloud companies are unlikely to be comfortable doing that.
A comment on HN doesn't Trump the GPL on code mostly written by someone else. Also, they claimed to be open source even though they made a stupid license choice.
1) You don't want just 2D constraints, 3D is better. If you were writing in C++ I'd say just take our constraint solver (Like Dune3D did). Since you're loving Rust, I can point you to the work of Michael F Bryan who wrote one in Rust and blogged about it here: https://adventures.michaelfbryan.com/posts/constraints-part-...
I think his code is over at gitlab. I haven't looked at it in a couple years. He wrote that after I nerd-sniped him ;-)
2) For geometry kernels... I've got 3 classes of bugs I want to squash in the Solvespace kernel and then it should do booleans pretty reliably, but I haven't had the time. Ours is just under 6k LOC so you could learn a lot from it. My email is the same ID at gmail if you want to ping on this topic. Its been a while since I looked at Truck and I thought it had stagnated a bit. This is a really hard problem, which is why there are so few options out there even in the commercial world. Even triangulating a trimmed NURBS shell is tricky.
3) History/feature tree is closely related to the "topological naming problem" that FreeCAD has. Solvespace handles this by creating each entity from a set of known things. If you try to recreate (regenerate in our lingo) it will just return a handle to the existing entity rather than creating a new one. In other words, every entity "came from something" and that relationship is remembered. Where we handle topological naming it works perfectly. But not everything in solvespace is covered by this. You need to bake this in from the start, it's not something you can easily bolt on afterward.
4) where is the link to try out CADmium?