2013-06-01 470 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 
相關問題