2013-06-01 6 views
1

커스터마이징 가능한 레이저 커팅 서랍 프로젝트의 경우 프로그래밍 방식으로 교차하는 두 개의 수직 "2D"객체 (너비 포함) 사이의 연결을 만들 수 있기를 원합니다. 이를 위해서는 다음을 수행해야합니다 :어떤 CAD/Geometry 라이브러리를 사용해야합니까? CGAL Open CASCADE 또는 Boost :: Geometry something else?

  • 몇 가지 표준 형식으로 2D 객체를로드하고 저장하십시오.
  • 2 차원 물체를 밀어 내고 2D 물체에 대한 표준 조작 (특히 물체 빼기)을 실시하십시오.
  • 은 2 개의 물체를 교차하며 교차점의 "선"을 결정할 수 있습니다.

어떤 라이브러리/도구를 제안 하시겠습니까? 위 작업을 수행하는 것이 얼마나 어려울 지 예측할 수 있습니까?

감사합니다,

Ronen에

답변

1

내가 (PythonOCC dev에) 바이어스 해요,하지만 난 OpenCasCade 가장 요구에 맞게 것이다라고 말하고 싶지만. Boost와 CGAL을 사용하여 파일에서 지오메트리를 구문 분석하고 재구성해야하는 곳에서 바로 Inge의 Step and Iges importers가 있습니다 (더 많은 포맷이 상업적으로 지원됩니다). 마지막으로, nurbs/CAD Geometry (BRep, 경계 표현)가 아니라 삼각형 (다각형 스프)을 다루는 패키지는 없습니다. 따라서 OCC는 IMHO의 범위를 가장 잘 나타냅니다.

1

나는 OPENCASCADE 및 CGAL에 경험이 있습니다. Boost Geometry는 매우 제한적이고 단순하며 토폴로지 구조, 솔리드, 브레이크 등을 지원하지 않습니다. 목적은 나머지와 완전히 다릅니다. 물론 그 품질은 다른 두 제품보다 높습니다.

3 가지 중 오픈 카스케이드는 품질면에서 가장 좋지 않은 선택입니다. 예를 들어, 모든 것이 전역 이름 공간에 정의되어 있고, 헤더 파일에 여러 개의 매크로 정의가 있으며 부풀린 클래스가 있습니다. 다양한 알고리즘과 구조를 지원하지만 어느 정도까지 지원합니다. 나머지는 지불해야합니다. 이것들은 공공 액세스가 아닌 사내 도서관으로 개발 되었기 때문에 이해할 수 있습니다. 따라서 그들은 그런 것에 관심이 없었습니다. 커뮤니티는 매우 작기 때문에 문서를 많이 검색하고 작업 방법을 실험해야합니다. 일반적으로 작동하는 방법은 여러 가지가 있으며 코드에 여러 알고리즘을 작성하여 서로 다른 알고리즘 사이의 인터페이스로 사용하는 것이 일반적입니다.

반면에 CGAL은 당신이 상상할 수있는 거의 모든 것을 지원합니다. 매우 현대적이며 대부분의 사용 사례에 대한 훌륭한 문서와 예제와 함께 전용 커뮤니티가 있습니다. 문제의 트레이드 오프에 따라 다른 클래스와 알고리즘이 있습니다. 다른 UI (WIN/QT)에 대한 지원이 있으며 STL/BOOST 컨테이너 구조와 잘 인터페이스합니다. 적절한 STL 호환 이터레이터 클래스조차 갖지 않는 오픈 카스케이드와 비교하면 상당한 차이가 있습니다.

따라서 CGAL로 작업 할 것을 적극 권장합니다.

OPENCASCADE와 함께 작업해야하며 CGAL을 동시에 사용하려는 경우 Handle 매크로가 정의되지 않은 것과 같은 헤더 파일을 포함해야합니다.

#include <TopoDS_Shape.h> 
#undef Handle 
#include <CGAL/Alpha_shape_3.h> 
#define Handle(ClassName)  Handle_##ClassName