13 ms·
I always love to see these projects attempting to create an Open-source parametric CAD tool, but I think they will never get the the level of functionality and
by samwillis 4y ago
I always love to see these projects attempting to create an Open-source parametric CAD tool, but I think they will never get the the level of functionality and stability required. The fundamental issue for all of them is the lack of a robust open source "parametric CAD kernel", these the the central core that understands BREP and implements the geometric operations.
The most widely used kernel is OpenCascade, the kernel used by FreeCad. However it is outdated, unstable and limited in significant ways with no realistic future prospects. It is unfortunately the limiting factor of FreeCads functionality and prevents any serious use of it.
The most widely used commercial kernel is Parasolid, used in many packages including SolidWorks, OnSpace, and NX.
What I would love to see is Siemens adopting a model similar to some of the game engines (Unreal and Unity) where it's free up until a revenue limit. Opening up Parasolid for "free" open source and small commercial operations would be both brilliant for society but also for Siemens, it would only result in a growth in the use of Parasolid and increased revenue.
- nine_k 4y agoTo have access to something commercial for free may be nice. The ideals of free software though call to produce free and open code because it remains free, open, and available. Siemens, were it to graciously offer some free tier access, would be also in a position to limit or withdraw such access at any moment. (This even applies to the paid licenses.) However limited OpenCascade is, it's here, and it's usable, up to a point. I hope that a successor to it will emerge, if there's a need.
- traverseda 4y ago>these the the central core that understands BREP and implements the geometric operations. I've seen people quote a good modern CAD kernal as a 100 man year project. It's probably not going to happen, maybe there's some avenue for government funding? Alternatively Signed-Distance-Functions are pretty nice. They're not BREP, but they're a lot easier to implement, and it might be possible to shove them into a BREP-shaped hole. Here's a signed-distance-function based CAD kernal written in a few thousand lines of python+numpy, that seems to be about as fast as openscad. Maybe faster. https://github.com/fogleman/sdf https://github.com/fogleman/sdf
- bruckie 4y ago> I've seen people quote a good modern CAD kernal as a 100 man year project. Where Fabrice Bellard when you need him? :)
- Arcanum-XIII 4y agoFunny, seems Russia did that in 2011. Now, which country, beside China would go that far ?
- gene-h 4y agoHow do you perform functions on faces, edges, points and other topological entities with SDFs? Such operations a necessary for parametric CAD.
- traverseda 4y agoAt the moment you don't. What I'm suggesting is that you could build up a conventional BREP-based datastructure, and than use SDF to "render" it. This gives you a very clear separation between your data structure and your meshing algorithm, and as I understand it a big chunk of those "100 man years" would be in dealing with the meshing algorithm and edge cases in it. I suspect that having a generic meshing algorithm that will always mesh your datastructure with no edge cases would significantly reduce the time needed to implement a CAD kernel. You just need an algorithm that can tell you if a given point is inside or outside of your BREP. All you really need for that is a surface that points at a given direction, and the ability to tell whether a point is under the surface or not. Define your surfaces as BREP, render them using SDF, only have to write one meshing algorithm. That being said I disagree with your definition for parametric CAD. Mostly the name, I get that you're talking about BREP based CAD. That is one way to do parametric CAD, but CSG can also work, especially if you can do more advanced operations like a filleted difference or union, or blends between two shapes, or other advanced CSG operations. I don't think that CSG-based CAD is inherently worse as long as you've got the ability to do things like fillet/chamfer CSG operations. You probably don't need to do a fillet along an edge if you can do a fillet where you subtract one object from another, something that SDFs can do easily: https://github.com/fogleman/sdf#smooth_difference https://github.com/fogleman/sdf#smooth_difference
- atonalfreerider 4y agoI think you mean Onshape, not OnSpace Onshape is an amazing tool. Can't recommend it enough
- s1mon 4y agoNick Kallen has been working on an BREP based CAD tool with the sort of ease of modeling that things like Blender has. Originally it was based on C3D, but he switched halfway through to Parasolid.[0] It’s amazing the amount of features he has built considering it’s a one person project. It’s worth going through his progress report videos.[1] [0] https://youtu.be/WvwiH1DOK1M https://youtu.be/WvwiH1DOK1M [1] https://youtube.com/@nickkallen1 https://youtube.com/@nickkallen1
- Svenstaro 4y agoI think some interesting developments are made in that sector in the form of https://github.com/hannobraun/Fornjot https://github.com/hannobraun/Fornjot and https://github.com/ricosjp/truck https://github.com/ricosjp/truck. Let's see whether one of those will actually get anywhere near a usable level. Fornjot in particular is shaping up really well.
- arlcode 4y agoInteresting projects, Thanks for the links. As you say it's to early to judge but I like that the Fornjot author publishes regular updates on his progress.
- VyseofArcadia 4y ago> Opening up Parasolid for "free" open source and small commercial operations I've used Parasolid in a previous job. OpenCascade may be unstable and limited, but Parasolid can be too depending on your use case. Its not a silver bullet.
- wizzledonker 4y agoA agree with this 100%, I have used OpenCascade and Parasolid in the past. With the recent OCCT development trajectory, I'd hesitate to recommend one over the other on the geometry kernel alone. Also people often forget OpenCascade includes an entire visualisation module that FreeCAD doesn't even make use of...
- eternityforest 4y agoIs there anything that can be done with GPUs being so fast to trade computer time for developer time? Like, would a point cloud or some other approximation be easier to work with?
- traverseda 4y agoYes! You've pretty much hit the nail on the head with your point cloud description, that's what the signed-distance-functions I was talking about basically are. You build a mathematical function that says whether a given point is inside or outside of your object and then you sample it a bunch of times and build a mesh based on that. Works quite well on modern CPUs, works very well on modern GPUs. The library I linked to uses numpy and numpy is fast on CPU, but a newer tool like jax would let you run pretty similar code on the GPU even faster. All this machine learning stuff actually makes python a very good choice for complicated numerical stuff like CAD. When I say "works quite well on GPUs" I mean "runs in real-time on a shader in a web browser" https://www.shadertoy.com/playlist/43cXRl https://www.shadertoy.com/playlist/43cXRl . Note that none of those objects are meshes, it's a shader rendering the objects directly based on a signed-distance-function, every single frame. You still need to turn your SDF/point-cloud into a mesh, but that means you only need to implement one algorithm, something like marching cubes is good enough and dual contouring is a bit more complicated but also more precise.
- cjbgkagh 4y agoWhen I tried marching cubes and dual contouring against SDFs I ended up with a ton of performance issues that I was unable to resolve in the time I had allotted for experimenting. To get the resolution I needed I ended up with way too many triangles which used a lot of memory. I could later simplify the meshes but given the high number of initial triangles that process was quite slow. What I would like to explore (and hope that someone else does before me) would be a SDF optimized meshing algorithm that would make use of the extra distance and normal information.
- slavik81 4y ago
- canadianfella 4y ago[dead]
- douglee650 4y agoThe purpose is "CAD-like" -- that is, parametric surface modeling operations on polygonal geometry. Blender has its purposes, but I think surface or solid CAD must be pretty far down the roadmap. But there are often times where BREP or NURBS type workflows would be quite useful, and also some modeling operations such as "extend geometry from object A based on object B's coordinates and normals" can be very useful. If you need operations like variable radius fillets on tapered multiple intersections with G3 continuity—this is probably not for that. But selecting the midpoint edge of some other object and offsetting a plane by some radius? This makes that sooooo much easier.
- app4soft 4y ago> The purpose is "CAD-like" -- that is, parametric surface modeling operations on polygonal geometry. > Blender has its purposes, but I think surface or solid CAD must be pretty far down the roadmap. As a workaround, here is a free "Export IGES" addon for Blender, which could convert polygonal model into solid/surface CAD file format. [0] https://www.digital-sculptors.com/cms/index.php/software/blender-plugins/63-export-iges.html https://www.digital-sculptors.com/cms/index.php/software/ble... [1] https://blenderartists.org/t/blender-add-on-export-to-iges/1324178 https://blenderartists.org/t/blender-add-on-export-to-iges/1...
- IshKebab 4y agoSolveSpace's kernel seems rock solid to me. It just doesn't support fillets or bevels. :/ I guess fillets are probably one of the most complex things for a CAD tool to support.
- phkahler 4y ago>> SolveSpace's kernel seems rock solid to me. It just doesn't support fillets or bevels. Sorry, I work on Solvespace and can confirm it has some serious NURBS bugs. There are several open issues on github relating to NURBS boolean failures. The problems seem to fall into 4 or 5 categories, and we can probably fix some of the common ones. It's going to take time and some deep dives into the code though.
- IshKebab 4y agoAh that's a shame. Maybe I've just been lucky then.
- app4soft 4y ago> SolveSpace's kernel seems rock solid to me. It just doesn't support fillets or bevels. :/ (For not too complex shapes) Its possible to create Fillets/Chamfers in SolvSpace by "by hands".[0,1,2,3,4,5] [0] https://fosstodon.org/@app4soft/109740222184364152 https://fosstodon.org/@app4soft/109740222184364152 [1] https://github.com/Symbian9/SolveSpace-Daily-Engineering/issues/1 https://github.com/Symbian9/SolveSpace-Daily-Engineering/iss... [2] https://twitter.com/app4soft/status/1423871556397244421 https://twitter.com/app4soft/status/1423871556397244421 [3] https://fosstodon.org/@app4soft/109812747058078617 https://fosstodon.org/@app4soft/109812747058078617 [4] https://fosstodon.org/@app4soft/109740732713730578 https://fosstodon.org/@app4soft/109740732713730578 [5] https://fosstodon.org/@app4soft/109834024415938501 https://fosstodon.org/@app4soft/109834024415938501
- vba616 4y ago>no realistic future prospects Why? I've gotten far enough with FreeCAD despite its annoyances that I would be tempted to look into solving the problems with the kernel, and here you are discouraging people like me from getting involved by saying it's hopeless. The culture of constantly losing interest and starting over in many areas of software is one of the things I dislike the most. But I don't fight the tide.
- imtringued 4y agoI don't even think that the biggest problems have anything to do with the geometry kernel. The entire UI in general could be overhauled without touching the kernel and it would make the difference between highly usable and productive CAD program with some limitations vs incomprehensible mess.
- ezst 4y agoNot OP, but that sounds unnecessarily harsh. FreeCAD is much more approachable now than it was few years ago. It's definitely far from perfect, but it's getting substantially better and we should collectively encourage that. I also realized during that time that my distro was doing a poor job at packaging it to make it work as designed (and I can't fault the packagers for that, it's a highly specialized/niche application after all). The flatpak version seem much more cohesive. If one thing, I'm amazed by how much one can accomplish with FreeCAD given a little patience and perseverance: it brings parametric CAD, drawing projections FEM… to the masses, which, when I was learning that stuff as part of my curriculum, was completely out of reach of most universities, let alone the hobbyist scene. It's an under-appreciated, fundamental, piece of software if you ask me.
- vba616 4y agoFreeCAD, for me, has been extremely frustrating, but it has convinced me, coming from OpenSCAD and not a regular CAD background, that a constraint solver and features like fillets or the curves workbench are really things I was missing and didn't know it. FEA is tantalizing, but I haven't been able to accomplish much yet.
- Syntonicles 4y agoI spent the past 2 years working in AutoCAD and was surprised to find that it really hasn't changed much in the past 20+ years, other than some simple UI changes. I ported over 100,000+ lines of Lisp from the mid 90s and it worked almost without modification though I did rewrite it for other reasons. That project has come to an end prematurely. Is there a real future in CAD programming? I feel like I've wasted a good chunk of my life on a dead language in a dead product. Is any of this knowledge portable?
- simonbarker87 4y agoI might have some consulting work for you check my profile and ping me an email
- WillAdams 4y agoThe Fornjot folks are working on a new kernel: https://fornjot.app/ https://fornjot.app/
- virtualritz 4y agoThere are two Rust projects working on parametric kernels I'm aware of. The first one, Truck[1] seems to have a company behind it, Ricos Ltd, that look like they to know what they're doing[2]. The tweet shows their product using functionality from Truck (the frontend is not OSS AFAIK). Fornjot is an ambitious project IMHO. Their kernel is in a separate crate[3]. As for OSS code that could be a good base to either use (or port to something like Rust) for someone to write their own kernel is Ayam [4], the oldest OSS 3D NURBS modeler that is still being developed. [1] https://github.com/ricosjp/truck https://github.com/ricosjp/truck [2] https://twitter.com/RICOS_ltd/status/1550390552482693120 https://twitter.com/RICOS_ltd/status/1550390552482693120 [3] https://crates.io/crates/fj-kernel https://crates.io/crates/fj-kernel [4] https://ayam.sourceforge.net/ https://ayam.sourceforge.net/
- rjsw 4y agoSiemens is trying to make the Parasolid file format into an ISO standard. I have input into how my country votes on this. I suggested that I might support this if Parasolid was made open source, dual licence it as commercial and AGPL, got nowhere with the project leader who is being paid by Siemens.