Interesting. Any chance you could explain why fillets are hard(er)?
Interesting. Any chance you could explain why fillets are hard(er)?
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 tree the kernel needs to keep track of that edge, even if the surfaces that make it drastically change or are split.
All three are hard problems on their own, once you connect them all it becomes a great indicator of the capabilities and stability of a parametric kernel.
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)
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.
The impression I’ve gotten while learning FreeCAD is that making a CAD ‘just work’ is incredibly difficult and the commercial packages probably have a lot of very messy workarounds and heuristics in place to work like they do.
FreeCAD’s (well, OpenCascade’s) issues with fillets and chamfers appear to be most acute with a subset of your third point: sometimes adding one involves the new feature fully consuming another edge. This is unsolved in OCC and it’s why sometimes even infinitesimally changing the depth of the fillet or chamfer is enough to stop an edge being destroyed.