我应该使用哪个CAD /几何库:CGAL Open CASCADE或Boost :: Geometry还有什么?

时间:2013-06-01 22:31:35

标签: geometry cad cgal boost-geometry opencascade

对于可定制的激光切割抽屉项目,我希望能够以编程方式在任意两个相交的垂直“2D”对象(带宽度)之间建立连接。为此,我需要:

  • 以某种标准格式加载和保存2D对象。
  • 拉伸2D对象,并对2D对象进行标准操作(特别是减去对象。)
  • 与2个物体相交,并能够确定交叉的“线”。

您建议使用哪个库/工具?你能估计掌握它完成上述任务有多困难吗?

谢谢,

罗南

2 个答案:

答案 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