On CAD
1299651405.com
1299651405.com
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
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?
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.
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.
I will follow up on the open-source idea when we start discussing the next vote.
Interesting, whats in it for them doing that? Also, considering JT which, as far as i know, is already an ISO standard?
Maybe it is intended as a marketing feature "Our exchange file is an ISO standard but the CATIA one is not".
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.
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.
This is false. See https://dev.opencascade.org/doc/overview/html/occt_user_guid...
I second this feeling. OnShape was founded by the original creators of SolidWorks before it was bought by Dassault. It showed great promise in being efficient, powerful, user friendly, built in PLM (SCM for CAD basically) and surprisingly low cost. Compare hundreds a year for a fully loaded OnShape seat subscription to about 20k/yr/seat we paid for CATIA and some bells and whistles (PLM, FEA, etc).
The day OnShape was bought was PTC/Siemens is quite comparable to me, to the HN feeling when Adobe recently announced the purchase of Figma.
Over the course of 3 years there, I saw maybe 6 or so companies bought by PTC and nothing ever really done with them. Probably the most successful was FlexPLM which for some reason was built on Windchill to offer PLM type software for the apparel industry. It only survived because PTC ignored it.
PTC is a company full of too much bureaucracy and managers all trying to push features over completeness.
This really adds up when you design hundreds or thousands of parts and assemblies a year. The added cost of the software is negligible in comparison to the labor savings.
[0] https://www.youtube.com/watch?v=TzyI7xnGoPI [1] https://www.youtube.com/watch?v=Whw9RrZz6XI&t=2073s
Trying a program which you are unfamiliar with in a domain you are experienced in is very frustrating, your muscle memory is all wrong, the tools you would ordinarily use are missing, and you have no real feel for how the new tools would work.
I give the author a pass for taking an hour and half on the shape.
And a really nice community-driven plugin capability. From hex infill for 3D printing to mesh deformation, there’s probably a plug-in. And the assemblies and modeling are very nice.
For top-down parametric design I don’t think you can do better.
I’ve got no connection to onshape other than having used it for years, for probably hundreds of models. Love it.
I’ve been having issues with my cheap-ish peristaltic pumps and realized I’d either need to spend way too much or build/3d print something myself in order to resolve the issues.
The cloud aspect of fusion seriously kills my enthusiasm for it.
The Fusion 360 move to cloud appear to be purely aimed at justifying forcing a subscription model for Fusion stuff. Though the monthly price for hobbyist isn't half bad.
I also got very sad when I learned it was bought by PTC.
I have to say, my biggest hesitation about these kinds of software is knowing anything I create is inevitably trapped behind a subscription. $50/month to maintain access to my designs is really steep! I suppose I can output static models, but to use parametric features, I’ll always need to be subscribed.
I know Fusion 360 but it's amazing how fast Onshape can be.
It is relatively easy to get to a 90% solution but really handling complex evaluations for demanding users is a massive undertaking. Hard to see open source software getting there.
Typical CAD companies can only ever try to keep up with user demands and keep them from leaving to greener pastures, while squeezing customers for profit. Examples: Dassault Solidworks (stagnant), PTC ProE/Creo (dying), OnShape (bought by PTC, on the road to death), Autodesk AutoCAD (stagnant), Inventor (stagnant), Fusion (new, cloud-based, pay-to-use vending machine).
The only commercial exception to this is CAD software from Siemens, which is forty years old and continues to get better. Siemens is an infrastructure company [0], not a CAD software company. They use the software they develop to do the things their company does. Their CAD products -- NX (top-tier) and Solid Edge (mid-tier) -- are used by Siemens to design the hardware (motors, turbines, and so on) that make up their core business (trains, generators, etc.). Revenue from selling CAD software is just a side-effect.
Improvement and maintenance of NX & Solid Edge serves to improve the product for its users, who are also its owners. They are not motivated simply to find new ways to increase profitability by squeezing out recurring revenue from their CAD customers. This is why Siemens can license the Parasolid kernel to other CAD vendors -- because the others will will never catch up. For years, Siemens barely marketed Solid Edge at all -- they are that good.
(Apple is another example of a company that uses the tools and products they sell to develop the tools and products they sell; Steve Jobs may not have been a programmer, but dropping acid probably helped him to understand recursion.)
[0] https://en.wikipedia.org/wiki/Siemens#Products,_services_and...
A hosted version a recent build is available to try here. https://autodrop.cloud/jsketcher/
It is in early beta and is usable. No assembly support yet but it is planned for.
Nicely simplified handling though, kudos there, exposing well the subset of Parasolid functions being enough. Very good in its niche, in the domain of simple pretty things where forgetting hard matters is acceptable, democratising part (geometry) of the design for more people. The advances in making additive manufacturing available to the masses could elevate it further, true to its roots, by riding the right horses. (assuming it could connect to other tools in a similarly simplified manner that could do the remaing jobs for it in realizing a product)
https://nl1.outband.net/extra/angle_post_bracket.slvs
Solvespace has a lot of problems, I think I would have trouble using it in a professional setting, however, it is such a joy to use. it feels like the program has captured the pure essence of parametric modeling and put it in program form. lightweight and nimble, nothing extra, just plain fun to use. until your models start exploding, which happens often in solvespace.
I mainly did the above as a sort of kata, to stretch those metaphorical solvespace muscles
I dream of using something similar with better tools and language, and a feeling similar to writing HTML and CSS.
CadQuery is more abstract and manageable, allows to base your workflow on workplanes and start from big features, top-bottom. It's a nice approach for small models but assemblies are a real pain.
I think you could have a language where you programatically specify a shape, which is then compiled into e.g. an array of points and can then be used in the programm.
That said, I gave up on all this and have switched over to just modeling toolpaths:
https://github.com/WillAdams/gcodepreview
that way, I'm certain that whatever is modeled can actually be made, and I'm also certain that the modeling is not limited by arbitrary things. I've got an idea for a woodworking joint which I haven't been able to model so as to cut out in any other program, and I'm hoping this will let me finally manage it.
I've been using OpenSCAD Graph Editor (OSGE) as a front-end:
https://github.com/derkork/openscad-graph-editor
which has been working well, though I'm trying not to be distracted by:
https://github.com/kaveh808/kons-9
having recently been announced.
So I decided to redraw the model in SolveSpace fully parametric. It took me 18 minutes.
Here is the result: https://youtu.be/yUa3fnDbeWw
But honestly if you're doing a decent amount of CAD as a hobbyist the only sensible option is to pirate Solidworks.
You are incorrect about FreeCAD being unable to do fillets and chamfers, FreeCAD has no problem doing fillets and chamfers.
I wrote a comparison[0] of FreeCAD and SolveSpace earlier this year, with the following conclusion:
> SolveSpace is fun to use in a hard-to-describe way that FreeCAD is not. It is also much more stable (i.e. it doesn't segfault). It is also much more immature than FreeCAD, and much less feature-complete. Overall I think FreeCAD is a more productive CAD program, mainly just because it can do fillets and chamfers, and you encounter open faces much less frequently, but also because of the "long tail" of little things that can be done in fewer clicks in FreeCAD.
[0] https://incoherency.co.uk/blog/stories/freecad-vs-solvespace...
We had an earlier comment outlining the problems with fillets, and the author of the article had problems as well. Do you think those are real, or could they be worked around with more experience in FreeCAD?
> The biggest limitation is no fillets or bevels, but it sounds like FreeCAD can't do that either.
which is simply untrue: FreeCAD can do fillets and chamfers. It has a built-in tool for them. It almost always works flawlessly.
You're right that FreeCAD will occasionally segfault on a complicated chamfer, but generally this is foreshadowed by a gut feeling that the geometry is so complicated that you yourself actually don't know what a correct chamfer would even look like.
But OK, FWIW, I just attempted the same Model Mania 2001 challenge in FreeCAD, and I got this: https://img.incoherency.co.uk/4072 - it took me about 20 minutes.
I had to guess the thickness of the central web as it doesn't appear to be shown on the drawing: https://blogs.solidworks.com/tech/wp-content/uploads/sites/4...
I didn't run into any issues or crashes with the fillets, the only thing that is arguably an issue is that FreeCAD makes the fillet that intersects with the front edge differently to how other tools do it. The one at the corner of the bottom of the large arc, where it touches the base plate. Arguably this is a FreeCAD bug, but it's hardly the end of the world. To say that FreeCAD "can't do" fillets is just wrong.
I've never tried it but that's not what the article says.
Put simply, FreeCAD needs a modern geometry kernel and there is no such thing in the open source world.
Given that OnShape (a bunch of ex-Solidworks honchos) went and licensed Parasolid for their new company, that tells you that developing the geometry kernel was something that they were willing to pay money to avoid.
I'm much more productive in Fusion than FreeCAD at a similar (low) level of experience. Sadly that means it wins for me, as much as I hate the licensing model.
True in many regards, e.g. the UI is way better and the constraint solver is more intuitive.
But very incorrect in others, specifically:
- SolveSpace has, IIRC, no fillets
- SolveSpace does not have a proper API to it's geometric engine (what the CAD industry, for some unknown reason, calls a "kernel")I’m a hobyist and I pay for a Fusion 360 licence. Tell me how that is not “sensible”.
I pay for my tools, I pay for my materials, why would I not pay for software which makes my life easier and more pleasant?
To put it in perspective, MATLAB is a similar "if you have to ask" industrial piece of software and their hobby license is like £125 one-off. (Not including any toolkits but still.)
Most hobbyists are not going to blow £500/year on CAD software.
It's $99 a year, 10 bucks a month:
https://discover.solidworks.com/3dexperience-solidworks-make...
and the pain point of most of these tools is that they don't talk tools outside of the ecosystem very well.
It's nice to hear about OnShape. Will keep an eye.
Imagine a perfect cube. The edges will be very, very sharp, and this is bad for any number of obvious reasons. To fillet the edges is to round them off: now the cube is much easier to handle. These are "outside" fillets, and you could perhaps make them with a router bit. There are also "inside" fillets (say you "drilled" a perfectly cylindrical hole partway into the cube; an inside fillet would be along the circular bottom edge of the hole), which can't be made after the fact (to do so would involve adding material). The geometry only gets more complex from there: most things aren't cubes or cylinders! Fillets are at once extremely simple, extremely complicated, and extremely important.
They are siblings to chamfers, which are the same idea but instead of being round just involve breaking the edge. You could chamfer the edge on that hypothetical cube with a single touch from a sander or (big) file. Fillets require more care.
Make hard edges soft by replacing them with a surface whose cross-section by the plane normal to the hard edge is a circle tangent to the the two surfaces connected by the edge.
Somewhat easy when hard edges are simple straight lines connecting planes, but trickier when multiple hard edges meet at a vertex at arbitrary 3D angles or when the hard edge is a 3D curve.
https://knowledge.autodesk.com/support/autocad/learn-explore...
Note: it doesn’t need 3D capabilities, just ability to create 2D blueprints.
I tried sketchup and it is not great for 2D. For 3D I didn’t like it as much either, I felt like you have to use the mouse a lot more. I had a ton of trouble just subtracting a volume in sketchup (creating a window in an extruded floor plan)