5 ms·
This is a really good example of the issue with OS CAD. Fundamentally the issue comes down to a complete lack of capable 3D Parametric CAD Kernels [0]. These a
by samwillis 4y ago
This is a really good example of the issue with OS CAD.
Fundamentally the issue comes down to a complete lack of capable 3D Parametric CAD Kernels [0]. These are the Linux kernel to a Linux distribution. They are the central core that implements the fundamental geometric structures and operations.
The article comments on the difficulty with filleting (putting a radius on an edge), this is a fundamental operation any cad user would be doing many time a day.
FreeCAD is built on top of the OpenCascade [1] geometric kernel, it has a legacy back to the 80s like most kernels, and is by far the most capable open source kernel. However, it lacks stable support for may geometric operations, including filleting.
The only way we will see industrial level quality open source parametric CAD is with either a new modern kernel (I don't believe OpenCascade can be brought up to level), or if one of the other closed source kernels goes open source. A new kernel will be many 100s years of person work to produce.
OnSpace (mentioned in the article) uses the Parasolid Kernel [2], the same kernel used by SolidWorks and many other packages. If you want to build a commercial cad package it by far the best option.
0: https://en.m.wikipedia.org/wiki/Geometric_modeling_kernel https://en.m.wikipedia.org/wiki/Geometric_modeling_kernel
1: https://en.m.wikipedia.org/wiki/Open_Cascade_Technology https://en.m.wikipedia.org/wiki/Open_Cascade_Technology
2: https://en.m.wikipedia.org/wiki/Parasolid https://en.m.wikipedia.org/wiki/Parasolid
- samwillis 4y agoJust to add to this, fillets may seem trivial but they are a good example of the difficulties in parametric cad. Fillets are added to edges, edges can be formed both by a single feature (say an extruded 2d shape) or through the interaction of two or more other features (think of two extrusions 90deg to each other interacting and forming an edge). They can also link together or become unlinked via changes. Referencing these edges, and keeping track of that reference through changes to the parameters is fundamental to parametric cad. It's one of the areas that OpenCascade struggles with.
- regularfry 4y agoJudging by where it fails, the filleting itself in OpenCascade has no problems keeping track of edges, where it seems to have difficulty is 1) saddle points, and 2) where the fillet size makes it intersect with a feature it's not responsible for. A fillet breaking when a parameter update changes the topology is just a specific example of the topological naming problem. I don't think that's specific to OpenCascade. In fact, just thinking it through, I wouldn't be at all surprised if 2) above is the same thing: the fillet itself changes the object topology enough that the basis edges for the fillet get lost. If so that's a Freecad thing rather than an OpenCascade thing. Maybe someone who's worked in that area can comment, it might be one of those things that gets better in 0.21.
- catherd 4y agoFWIW, fillets give Solidworks trouble too. Never build child geometry on top of fillet parents if you can avoid it because it's likely to blow up on later rebuilds.
- iancmceachern 4y agoTrue, but this isn't having so much to do with the fillet itself, but with the child geometry referencing outputs of the fillet command like edges and surfaces of the fillet. It you go back later and then change the fillet radius, delete it and add another in its place, etc. Those references get messed up.
- rjsw 4y agoSiemens is currently trying to make the XT exchange file format into an international standard, perhaps they could overcome the objections to this by making Parasolid open source.
- phkahler 4y agoParasolid is really good and that's probably because it's a licensed product used in many commercial programs, so it's well supported. Maybe going GPL plus commercial could work, but it might just kill it.
- rjsw 4y agoThey tried to standardize a previous version and were voted down, the reasons for negative votes have not changed, one of them is that the proposed specification isn't enough to implement a clean-room copy. I will follow up on the open-source idea when we start discussing the next vote.
- Ruthalas 4y agoPlease do. That seems viable, and potentially very beneficial!
- moepstar 4y agoX_T as in "Parasolid"? Interesting, whats in it for them doing that? Also, considering JT which, as far as i know, is already an ISO standard?
- rjsw 4y agoThe current ISO standard for JT just has an older version of XT as an informative annex, there is a proposal out for voting to make a newer version a normative (required) part of the standard. Maybe it is intended as a marketing feature "Our exchange file is an ISO standard but the CATIA one is not".
- RobotToaster 4y agoThere's also the BRL-CAD kernel [1], no idea if that would work any better. 1: https://brlcad.org/ https://brlcad.org/
- cartoonfoxes 4y agoBRL-CAD is CSG instead of B-rep geometry. Different use-case.
- ruslan 4y agobrlcad.org says it's both CSG and B-REP. Although BRL-CAD is powerful, it is still a collection of tools, not a solid application, which makes it pretty hard to use and to comprehend for a regular CAD user (designer). From their website: BRL-CAD is a suite of more than 400 tools and utilities. The suite of applications are intentionally designed to perform a succinct task so that they can be chained together, scripted, and expanded upon in order to provide powerful flexibility. I think someone has to develop a decent GUI for this package to make an alternative to FreeCAD.
- RobotToaster 4y agoIt seems like a really powerful application, but it's main interface looks like it was written in the 80s, because it was. It's a real shame.
- krisoft 4y ago> The only way we will see industrial level quality open source parametric CAD is with either a new modern kernel Is there even open literature (books, papers, anything) for someone to understand what a modern kernel would look like? I don’t doubt it would be a formidable challenge to develop one, but is the shape-of-it/api and interface of it well understood, or is this knowledge siloed away in a few companies?
- upofadown 4y agoFreeCAD actually does filleting, apparently. Two different tools. I think the article was claiming that filleting was broken somehow in FreeCAD, not that it didn't exist. It would of been more interesting if they mentioned what problems they had.
- Karliss 4y agoJust tried to do that exercise in FreeCad (0.20.1) and observed following issues with fillets. Initially for one of the inner corners I had selected 2/3 edges for filleting. This caused fillet to bug out and some of vertices be position in completely wrong position far from where they should be resulting in visibly broken self intersection geometry in the are of that corner. Once I selected all 3 edges as asked in the drawing for exercise fillet was fine. But I don't see why it should have failed if the intention was to create model with 2/3 corner edges filleted. In other parts of model corners with such fillets worked fine. Second problem was once I changed the angles and dimensions from phase 1 to phase 2. (I slightly cheated by not handling the bottom part properly but that's more of my failure read the drawing). After changing angle and dimensions fillets broke, and I had to reselect which edges are supposed to have them. (The topological naming problem). Which is slightly weird because the topology of model shouldn't have changed from those dimensions changes, but maybe there was a slight change in how boss intersects with bend, thus changing topology. In which case having to redo fillets is annoying, but slightly more understandable. Third issue was that in the second phase it failed to solve fillets when radius was greater than 1.1mm (drawing asks for 2mm). Not sure why would it fail. I would understand if I asked something crazy like 10mm which would result in some degenerate geometry. But with 2mm it should still be sufficiently far from where it causes weird intersections. Again my best guess is the area with inner corner at the base of boss. There is short edge where outer cylinder of boss connects to bent corner instead of flat part.
- DanTheManPR 4y agoIt's more powerful and full-featured than usually given credit for. But there are a lot of common things that are very annoying and janky to do. Filleting is one of the first things that will be an unpleasant surprise to new users, as it's a deceptively difficult problem, and one that commerical packages put of effort into making easy for users.
- unholiness 4y agoOnshape is a decent middle ground here. The BREP kernel (parasolid) is obviously closed source, but the standard features built on it (extrude, loft, etc.) are open-source and written in their own bog-standard c-family language of FeatureScript[0]. You can write your own custom features pretty easily, and the feature inputs and outputs are actual BREP. It's easy to mix and match manual modeling with standard features and automated modeling with custom features. [1] https://cad.onshape.com/FsDoc/ https://cad.onshape.com/FsDoc/
- kvnnews 4y ago>However, it lacks stable support for may geometric operations, including filleting. This is false. See https://dev.opencascade.org/doc/overview/html/occt_user_guides__modeling_algos.html#occt_modalg_6 https://dev.opencascade.org/doc/overview/html/occt_user_guid...