对于可定制的激光切割抽屉项目,我希望能够以编程方式在任意两个相交的垂直“2D”对象(带宽度)之间建立连接。为此,我需要:
您建议使用哪个库/工具?你能估计掌握它完成上述任务有多困难吗?
谢谢,
罗南
答案 0 :(得分:1)
我有偏见(PythonOCC开发),但我认为OpenCasCade最适合您的需求。它具有开箱即用的Step和Iges导入器(商业上支持更多格式),您必须使用Boost和CGAL从文件中解析和重建几何体。最后,这些包都不涉及nurbs / CAD几何(BRep,边界表示),而只涉及三角形(多边形汤)。因此,OCC符合最佳恕我直言的范围。
答案 1 :(得分:1)
我有OPENCASCADE和CGAL的经验。 Boost几何是非常有限/简单的,并不提供拓扑结构,固体,brep等的支持。目的与其他的完全不同。当然,它的质量高于其他两个。
三者中的公开赛是质量方面最不可取的选择。例如,所有内容都在全局命名空间中定义,头文件上有多个宏定义,并且具有膨胀类。它对各种算法和结构有很多支持,但只有一些点;其余的你需要付钱。这些在某种程度上是可以理解的,因为它是作为内部图书馆开发的,不是为了公共访问,因此他们并不关心这些事情。社区规模很小,因此您必须经常搜索文档并尝试如何做事。通常,有多种工作方式,在代码中编写许多适配器以在不同算法之间进行接口是很常见的。
另一方面,CGAL恰恰相反,它支持几乎任何你能想象的东西,它非常现代,并且有专门的社区以及大多数用例的非常好的文档和示例。根据手头问题的权衡,有不同的类和算法。支持不同的UI(WIN / QT),它与STL / BOOST容器结构很好地连接。与没有正确的STL兼容迭代器类的opencascade相比,这是一个显着的差异。
因此,我强烈建议与CGAL合作。
如果您被迫使用OPENCASCADE并且想要同时使用CGAL,您可能必须包含头文件,以便Handle宏未被修复,例如
#include <TopoDS_Shape.h>
#undef Handle
#include <CGAL/Alpha_shape_3.h>
#define Handle(ClassName) Handle_##ClassName