3

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

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

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

谢谢,

罗南

4

2 回答 2

3

我有偏见( PythonOCC dev ),但我想说 OpenCasCade 最适合您的需求。它带有开箱即用的 Step 和 Iges 导入器(商业支持更多格式),您必须使用 Boost 和 CGAL 从文件中解析和重建几何图形。最后,这些软件包都没有处理 nurbs / CAD 几何(BRep,边界表示),而只是处理三角形(多边形汤)。因此,OCC 最适合恕我直言。

于 2013-06-03T14:35:14.073 回答
3

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

就质量而言,这三者中的 Opencascade 是最不优选的选择。例如,所有东西都定义在全局命名空间中,头文件上有多个宏定义,并且有臃肿的类。它对各种算法和结构有相当多的支持,但仅限于某个点;其余的你必须支付。这些在某种程度上是可以理解的,因为它是作为一个内部图书馆而不是供公众访问的,因此他们并不关心这些事情。社区很小,因此您必须大量搜索文档并尝试如何做事。通常,有不止一种工作方式,并且在代码中编写许多适配器以在不同算法之间进行接口是很常见的。

另一方面,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
于 2015-03-31T11:48:35.020 回答