top | item 24041496

(no title)

tfinniga | 5 years ago

I think a big part of why this happens is that a lot of the fundamental math of CAD doesn't have good answers - everything is heuristics and approximations to within a tolerance.

You can get a simple NURBS kernel up and running in maybe 2 dev-years. But getting good heuristics created for all of the common edge cases is what takes the huge number of dev-decades, and what you pay for with one of the commercial kernels. You won't even know what the common edge-cases are until you start getting user reports of things failing, so you'll need to be doing this development with a large community of users.

There is no closed-form formula to tell how long a NURBS curve is. Offsets of NURBS curves are not NURBS curves. Likewise, intersecting NURBS surfaces produces intersection curves that are not possible to represent as NURBS curves.

So something as simple as a fillet is impossible to exactly produce in like 3 ways. Booleans then add the joy of topology to the mix. It's all heuristics and approximations and dirty hacks.

discuss

order

mianos|5 years ago

While this is true of programs like Rhino, it's not as true for fusion360. There are no NURBS in fusion360. I would guess that the fusion360 kernel is very focussed on deterministic solutions, specially being constraint based, where the errors in heuristics would multiply across the history. Interestingly, in situations where the math has more guesswork, as I think lofts and such are, fusion can be really quite bad. Rhino is amazingly good (and it's many many years old). Fusion360 is just a baby but it's pretty good for what it does. Once you use constraints based CAD it's hard to go back.

tfinniga|5 years ago

While Fusion 360 does have many non-NURBS procedural surfaces, they definitely also have NURBS. Otherwise you wouldn't be able to import an IGES or step file.

Using a solids kernel with procedural surfaces can help many cases, as you keep the modeling tree around and can recompute portions at higher tolerance as needed. However that's just another cumbersome workaround to the fundamental problem that the math doesn't have clean solutions.