2013-06-01 480 views
1

对于可自定义的激光切割抽屉项目,我希望能够以编程方式在任意两个相交的垂直“2D”对象(宽度)之间创建连接。为此,我需要:应该使用哪种CAD /几何图形库:CGAL Open CASCADE还是Boost :: Geometry其他?

  • 以某种标准格式加载和保存2D对象。
  • 挤出2D对象,并对2D对象进行标准操作(特别是减除对象)。
  • 相交2对象,并能够确定交点的“线”。

你会为此建议哪种库/工具?你能估计掌握它完成上述任务有多困难吗?

感谢,

罗南

回答

1

我有偏见(PythonOCC DEV),但我要说OpenCasCade将最适合您的需求。它来自于开箱即用的Step和Iges导入程序(更多格式在商业上得到支持),您必须使用Boost和CGAL解析和重建文件中的几何。最后,这些软件包都不涉及nurbs/CAD几何(BRep,边界表示),而只涉及三角形(多边形汤)。所以,OCC适合最好的恕我直言。

1

我有OPENCASCADE和CGAL的经验。 Boost Geometry非常有限/简单,并且不提供对拓扑结构,实体,brep等的支持。其目的与其余部分完全不同。当然,它的质量比其他两个都高。

就质量而言,Opencascade是最不可取的选择。例如,一切都在全局名称空间中定义,头文件中有多个宏定义,并且具有臃肿的类。它对于各种算法和构造有相当的支持,但只能达到某种程度;其余的你必须付钱。这些都是可以理解的,因为它是作为一个内部的图书馆而不是公众开放的,因此他们不关心这样的事情。这个社区很小,因此你将不得不经过文档大量搜索并试验如何做事。通常,有多种工作方式,通常在代码中编写多个适配器以在不同算法之间进行交互。另一方面,CGAL恰恰相反,几乎支持任何你可以想象的事物,它非常现代化,并且有专门的社区以及大多数用例的很好的文档和例子。根据手头问题的权衡,有不同的类和算法。支持不同的用户界面(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 
相关问题