4 ms·
I have looked at basically all available open-source CAD kernels, and verbnurbs is the absolute cleanest and most well written I have ever encountered. Verbnur
by kanzure 12y ago
I have looked at basically all available open-source CAD kernels, and verbnurbs is the absolute cleanest and most well written I have ever encountered.
Verbnurbs beats the pants off OpenCASCADE, OpenNURBS, CGAL, BRL-CAD and a hundred others, any day of the week. Most existing implementations are huge and written by large teams that don't completely understand the entire system, and as a result they all end up bloated, poorly written and poorly maintained. It doesn't help that OpenCASCADE (for example) does not distribute the majority of their tests, making it hard for open source contributors to refactor or delete their code. Verbnurbs has been able to maintain trajectory all the way up to curve-curve intersections, and I am sure surface-surface is going to work pretty well.
Here's what the competition looks like: http://diyhpl.us/wiki/cad/opencascade http://diyhpl.us/wiki/cad/opencascade
As for the others complaining about usability, I would guess that something like https://github.com/dcowden/cadquery https://github.com/dcowden/cadquery would be a suitable direction....
- desdiv 12y ago>It doesn't help that OpenCASCADE (for example) does not distribute the majority of their tests, making it hard for open source contributors to refactor or delete their code. So you're saying that this[1] isn't the whole test suite? I've been considering using OpenCASCADE, but if they don't open source their tests then that's a huge red flag. https://github.com/tpaviot/oce/tree/master/test https://github.com/tpaviot/oce/tree/master/test
- kanzure 12y agoWell... more like this stuff: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=tree;f=tests/bugs;h=91f464799202d78722c76dd032898d210e23ca1f;hb=HEAD http://git.dev.opencascade.org/gitweb/?p=occt.git;a=tree;f=t... And then all the other not included tests.... Btw, the OCE team has done some great work, especially considering what their task is and what they have to work with. If you must use OpenCASCADE, then use OCE.
- desdiv 12y agoSorry, I'm still not following you. OpenCASCADE is the upstream; OCE is the downstream. OpenCASCADE is LGPL 2.1 and OCE is LGPL 2.1, so that means OCE can pull every single line of code from OpenCASCADE. Are you saying OCE is not pulling certain tests downstream despite being free to do so? Or are you saying that some OpenCASCADE test are still close sourced? If so, then what would be the motivation behind keeping these tests close sourced?
- kanzure 12y ago> Or are you saying that some OpenCASCADE test are still close sourced? Yes, that's the one I mean. There's even lots of references on the public parts of their bug tracker to these tests. > what would be the motivation behind keeping these tests close sourced? There are so many that I can't even begin to speculate which ones might be the case here... maybe they lost them, maybe they have Top Secret commercial data (like BRL-CAD's other test suite, which contains military data), maybe they don't want anyone to do major refactors without putting in the effort to make new tests..... Like I said, lots of possible reasons. I haven't asked them.
- phkahler 12y ago>> I have looked at basically all available open-source CAD kernels, and verbnurbs is the absolute cleanest and most well written I have ever encountered. Let us know when it handles trimmed NURBS. Until then, no serious CAD really cares.
- kanzure 12y agoBRL-CAD has implemented trimmed curves and surfaces on top of OpenNURBS. Porting that to verbnurbs would not be impossibly difficult.
- brudgers 12y agoFreeCad is built on OpenCascade. It ain't AutoCad, but it reflects a lot of functionality. http://sourceforge.net/projects/free-cad/ http://sourceforge.net/projects/free-cad/
- kanzure 12y agoYeah... I've had trouble with the FreeCAD API: This works: Workplane("front").rect(1,1).circle(0.41).extrude(1) This doesn't: Workplane("front").rect(1,1).circle(0.49).extrude(1) Might have been a cadquery bug, but I doubt it. Hopefully not an OpenCASCADE bug!
- delhanty 12y agoKudos to Verbnurbs for what they have achieved. I would agree that OpenCASCADE is bloated - it has been since Matra Datavision failed to make a commercial product of the pre-open CASCADE that they ripped out of Euclid. There isn't much else out there in open source b-rep solid modeling kernels though, and at least they are LGPL 2.1 (instead of their own "LGPL like" but not actually GPL compatible) licensed these days. But for OpenNURBS you're getting commercial maturity - part of a successful product (Rhino) - and a very reasonable license (which is rare in the CAD industry) so there is a lot to like.
- kanzure 12y ago> But for OpenNURBS you're getting commercial maturity Commercial maturity like, no tests! :-) see http://files.na.mcneel.com/opennurbs/5.0/2011-11-22/opennurbs_20111122.zip http://files.na.mcneel.com/opennurbs/5.0/2011-11-22/opennurb... How would someone be expected to contribute to an open source project with zero testing, especially on something requiring so much correctness and validation? But yeah, all kidding aside and other than no tests, it's pretty good. BRL-CAD had to re-implement all the stuff Rhino ripped out, like surface-surface intersections :(. But at least we have that now.
- delhanty 12y agoWell is it open source in the sense that they are accepting patches? The way I read it was that you get the source and you like it or lump it. The bar for the meaning of "open" in CAD is pretty low though. Have you looked at Siemens JtOpen for example? (Which has a documented file format with various encumbering restrictions and is a closed source product.) Disclaimer: I know the product manager from JtOpen and he is old friend of mine from Parasolid days, so it's not personal. Edit: grammar