Hacker News new | ask | show | jobs
by wheelie_boy 1205 days ago
Yeah, on the big kernels the time just getting filleting working robustly can be measured in developer-careers.

The core problem isn't memory safety, it's due to difficulties with the mathematical foundation of NURBS surfaces. For example, the intersection of two NURBS surfaces can't be exactly represented by a NURBS curve.

4 comments

In solvespace such curves are represented by handles to the two intersecting surfaces and a series of points along the curve. This is an exact representation (you can compute as many additional points on the curve as needed) but it's not analytic by any means. Exact NURBS curves are used when possible too.
Exactly, I'm sure you're familiar with the kinds of difficulties and complications that creates. Rather than representing that curve analytically, you have to keep track of the procedural tree that generated it. Then things like offsetting that curve, checking that curve for intersections, etc. are more complicated.

And then you export. Rather than exporting the entire procedural tree (which would require shipping the entire kernel), you approximate the curves with NURBS trimming curves. When you import from another CAD tool you need to deal with edges that only intersect within a given tolerance, and sometimes that tolerance is awful (Catia, I'm looking at you). Operations on toleranced edges are a huge source of complications.

And so on and so on. It would all be so much easier if the NURBS math could be exact

What are the requirements of a CAD kernel?
See for example Ian Stroud ”Boundary Representation Modelling Techniques” for a light introduction. The OpenCascade project is a fairly complete example of a complete one. But there is no ”by the book” way to do it - it requires both design and engineering savvy.

The simple explanation is the capability to model 3D shapes in a way that you can output the data to the rest of the manufacturing process. Hence what manifacturing process you target at least partially dictates your constraints.

The output could be - engineering drawings, CNC machines, 3D printers. Or another 3D modeling application down the pipeline.

In a way ”CAD kernel” alone is a worthless as a spec since it’s too general, just like ”a vehicle” is a useless spec for engineering.

CAD kernel- for modeling what, by whom, and where.

Naturally questions of numerical robustness and exactness of presentation soon enter the picture. How large or precise features do you need to model, for example.

Better get cozy because the explanation is probably a few weeks worth of discussion.
I remember hearing some anecdote about Solidworks development where someone was brought back to meet the Fikket TEAM, a team of like 10 people who just worked on fillers fr 15 years. That being said, the fileting in solidworks is killer
And even then it got very rough the moment I tried to do higher types of continuity in Fusion360.

Maybe SolidWorks handles it better.