← Back to context

Comment by YuechenLi

3 hours ago

FreeCAD and Dune3D are both OpenCascade based, so they are limited by OpenCascade's architecture (For example, OpenCascade uses per-entity tolerances, which means it is more bad geometry import tolerant, but if every face and edge has its own tolerance value in the kernel representation, then it creates a great amount of hidden tolerance drift.)

SolveSpace is still fairly limited on what it can do in terms of features such as fillet/chamfers, so it's not really suitable for pro work right now

For projects like SolidCraft, the SMLib kernel they are currently porting to Rust from Nvidia is currently about a decade behind OpenCascade, nevermind Parasolid/ACIS as they are still converting all geometry to NURBS instead of preserving analytical geometry, which means that their initial development is easier but it creates a near infinite amount of edge cases once they start going heavy into booleans and fillet/chamfers.

Can't comment on the fillet/chamfers but for boolean operations I didn't find it to be a decade behind at all https://github.com/IfcOpenShell/IfcOpenShell/pull/9958

  • Hmmm. Have you tested the hard case, surface/surface intersections between cylinders yet?

    For your application in IFC, the architecture difference between OpenCascade and SMLib doesn't matter as much, but a geometric modeling kernel for mechanical CAD has much stricter requirements in terms of geometric correctness, which is the reason that Rhino, despite being BRep and widely used in architecture, isn't used very much in mechanical CAD at all.

    • I agree, and I haven't tested more. Fully agree on the differences with true mcad and most implementations for IFC viewing aren't even BRep based, but mesh / polyhedral.