Live data from Hacker News

CADmium: A local-first CAD program built for the browser

mattferraro.dev

61–70 of 243 posts

Re: CADmium: A local-first CAD program built for the browser

#61

Why in a browser if it's local-first? Solvespace has the benefit of being a single download/executable. It also has a constraint solver which has been used in a couple of projects: CADsketcher as you noted, and Dune 3D: https://github.com/dune3d/dune3d where the author noted: >I ended up directly using solvespace's solver instead of the suggested wrapper code since it didn't expose all of the features I needed. I als…

>> Manifold was not mentioned

Manifold is a triangle mesh library. CAD should use NURBS surfaces and only triangulate them for rendering. I had looked at replacing the solvespace triangle mesh code with Manfold, but it's a lot of work and what we really need is to fix the NURBS bugs so we don't need to lean on the mesh code so much.

BTW the solvespace constraint solver is also used in the Assembly 3 workbench of FreeCAD ;-) It's really getting around these days.

Re: CADmium: A local-first CAD program built for the browser

#62

Earlier quoted context omitted.

For fillets to work well they have to connect three important features of a parametric CAD package: 1. Surface tangency matching - perfectly matching the tangent of the connecting surface on either side of the corner. 2. Edge tangency following - you select an edge, and the fillet should be able to follow along all connected tangent edges. 3. Edge reference tracking - when you modify the model further up the feature…

For Solvespace I was looking at using curve offsetting to determine where the fillet touches the surface. This would not produce a "rolling ball" fillet in more complex cases, but should be fine for simpler extrusions. It turns out generating an offset curve is another somewhat hard problem in itself.

Yep, it would be difficult to maintain a consistent radius with that method.

My assumption (I've not looked) is that you could offset the surfaces from the two sides (say A and B), and then calculate the intersection of an offset of A with the original B. Then do the opposite for the other side. I think that will give you two edges that will produce a consistent radius.

Offsetting surfaced and calculating intersections aren't exactly easy problems to solve on their own. Fillets are hard!

(Solvespace is awesome BTW! If I had the time (or the expertise) it also makes a brilliant foundation for all this)

Re: CADmium: A local-first CAD program built for the browser

#63

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 can at least help on 4:

Github:

https://github.com/MattFerraro/CADmium

has the link:

https://mattferraro.github.io/CADmium/

Re: CADmium: A local-first CAD program built for the browser

#64

I'm very excited about what Matt is building, the world desperately needs a good open source parametric CAD package. One where the UI/UX is designed to be as "easy" to use a SolidWorks. The biggest reason this hasn't happened so far is the lack of a truly capable parametric kernel, Truck, the kernel that Matt is using looks like an incredible project and exactly whats needed. The only other kennel till now that been…

Maybe I'm not enough of an evangelist, but I just want a good, non-subscription local-first CAD package. I've recently moved over to Alibre Atom3D, which, while not open-source, costs $200. Once. Then (as long as your host OS doesn't change too much) you can access your designs forever. It runs on the ACIS kernel. "Browser first" and (from the readme) "Beyond that, I will try to monetize by offering a hosted version…

Feel the same way. Honestly I think there's more money to be had going open source than competing in a sea full of sharks. But hey, that's probably wishful thinking from my part.

Re: CADmium: A local-first CAD program built for the browser

#65

Earlier quoted context omitted.

For Solvespace I was looking at using curve offsetting to determine where the fillet touches the surface. This would not produce a "rolling ball" fillet in more complex cases, but should be fine for simpler extrusions. It turns out generating an offset curve is another somewhat hard problem in itself.

Yep, it would be difficult to maintain a consistent radius with that method. My assumption (I've not looked) is that you could offset the surfaces from the two sides (say A and B), and then calculate the intersection of an offset of A with the original B. Then do the opposite for the other side. I think that will give you two edges that will produce a consistent radius. Offsetting surfaced and calculating intersectio…

>> Offsetting surfaced and calculating intersections aren't exactly easy problems to solve on their own. Fillets are hard!

Yeah, offsetting surfaces is harder than curves ;-) This was my early stab at doing chamfers on extrusions: https://github.com/solvespace/solvespace/issues/453#issuecom...

I know how to do it better now, but ugh... not enough time.

Re: CADmium: A local-first CAD program built for the browser

#66
post #57

> 3D CAD apps are among the most complex UIs that exist. I agree. > If you want to make a good one and you only have a small team, the framework had better do a lot of heavy lifting! I am skeptical that general-purpose UI frameworks can be a good long-term solution for 3D CAD. At times, a nice UX will need to think about many of the following at once: - the parametric 3D model - its mesh approximation - its hidden-su…

The only real solution is imgui

Re: CADmium: A local-first CAD program built for the browser

#68
post #49

It's exciting to see a new entry into this space, especially one that is trying to create a new kernel. Unfortunately, it seems unlikely to be successful. The top kernels in the industry have been in development for decades by armies of CAGD PhDs and programmers, with funding from automotive and aerospace companies. Getting to table-stakes with the feature set will take a long time. I also question what user problems…

New CAD users would appreciate a good open source alternative. Moreover, the world is a diverse place, not everyone has the same kind of money or quantity.

I think CAD users would benefit greatly from good open source alternatives.

Re: CADmium: A local-first CAD program built for the browser

#69
post #66
post #57

> 3D CAD apps are among the most complex UIs that exist. I agree. > If you want to make a good one and you only have a small team, the framework had better do a lot of heavy lifting! I am skeptical that general-purpose UI frameworks can be a good long-term solution for 3D CAD. At times, a nice UX will need to think about many of the following at once: - the parametric 3D model - its mesh approximation - its hidden-su…

The only real solution is imgui

You meant egui. ;)

Re: CADmium: A local-first CAD program built for the browser

#70

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.…

> 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 ...

[1] https://github.com/thekakkun/rust_slvs

Post reply on HN