Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The problem with FreeCAD and every other free/open source MCAD project of note is the Open Cascade kernel they are built on. While Open Cascade is fairly mature, it has dealbreaker issues in a few key areas: fillets cannot consume connected faces and may fail for a number of other reasons, cylindrical and spherical faces require seams which often cause issues with boolean operations, and shapes like helixes are also often troublesome.


On a scale from "big chunk of work" to "complete rewrite", how much work would it take to fix those issues in Open Cascade?


It would probably fall somewhere between "substantial architectural overhaul" and "partial rewrite" because it’d require redesigning the topological representation to eliminate seam edges.

Some of these issues are long standing and really hard to solve. Someone could probably defend an entire PhD thesis on “redesigning the topological representation to eliminate seam edges” without making much practical progress


How do the other kernels e.g. Parasolid work without seam edges? Without a seam the 2D parametric boundary is not closed.


It’s not about seams in 2d but 3d curved surfaces.

OpenCascade’s kernel forces you to deal with periodicity in topology (the shape structure), while Parasolid handles it in geometry (the math). A cylinder is mathematically continuous because there's no actual "seam" where it starts and ends. But in OpenCascade there’s a seam from 0 to 2π and this seam edge becomes a real topological entity that every algorithm has to deal with.

In Parasolid the cylinder is periodic so when you query a point at U=2.1π, the kernel just knows that's equivalent to U=0.1π. The periodicity is a property of the surface math, not the shape structure. It’s not using polygons/edges/vertexes but a system of equations to calculate the surfaces.

This is why boolean ops fail so often in FreeCAD: it’s asking the kernel to intersect with an artificial edge that shouldn't exist. The seam creates edge cases in intersection calculations, makes filleting near seams a nightmare, and complicates things. Parasolid's implicit handling requires smarter surface evaluation code upfront, but then everything else just works.


Is there any canonical literature on this? I've been interested in what's inside the brep kernels recently.


Boundary Representation Modelling Techniques by Stroud is probably the most popular one. It's expensive but Anna has it in her archive.


Thanks!


> fillets cannot consume connected faces and may fail for a number of other reasons

I can't recall a single CAD system which did this differently. Has modern solidworks figured this out?


Sandia seems to have some form of kernel, but only Federal-associated entities can get access to it.

It would be interesting to see if they would license that out further for some amount of money.


If you're referring to Cubit, they license the ACIS kernel under the hood.


They’re (possibly) referring to “Scalable Geometric Modeler” (SGM)

https://github.com/sandialabs/sgm

Originally open-source, but since taken back in-house. As I understand, which should not be construed as an accurate accounting, Sandia wants to flesh out the basics further before (potentially) open-sourcing it again.


I was referring to Cubit. Phooey on the fact that it's ACIS.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: