
OCCT
오픈소스 C++ 3D 모델링 및 시뮬레이션 플랫폼
오픈소스 C++ 라이브러리를 통해 파라메트릭 3D 모델을 구축하고, 물리를 시뮬레이션하며, CAD 데이터를 시각화합니다.
OCCT란 무엇인가요?
Open CASCADE Technology (OCCT)는 3D CAD, CAM 및 CAE 애플리케이션을 위한 강력한 오픈소스 C++ 소프트웨어 개발 플랫폼입니다. 기하학적 모델링, 메쉬 생성, 데이터 교환(STEP, IGES, STL), 시각화 및 시뮬레이션을 위한 포괄적인 라이브러리를 제공합니다. 고정밀 엔지니어링 및 제조 워크플로우를 위해 설계된 OCCT는 개발자가 산업 표준 기능을 갖춘 견고한 파라메트릭 모델링 도구, CAD 뷰어 및 시뮬레이션 애플리케이션을 구축할 수 있도록 합니다.
이 라이브러리는 불리언 연산, 필렛, 챔퍼, 스윕과 같은 고급 솔리드 모델링 작업을 지원하며, 서피스 모델링, NURBS 기하학 및 파라메트릭 피처 모델링도 포함합니다. OCCT의 모듈식 아키텍처는 토폴로지, 기하학, 시각화, 데이터 교환 및 애플리케이션 프레임워크를 위한 전용 툴킷을 포함하여 복잡한 엔지니어링 소프트웨어 개발에 이상적입니다. 활발한 커뮤니티 지원과 정기적인 릴리스를 통해 OCCT는 전 세계 수많은 상업 및 연구용 3D 애플리케이션의 기반이 됩니다.
OCCT 시작하기
OCCT는 오픈 소스 C++ 라이브러리로 배포되며 소스 빌드 또는 사전 컴파일 바이너리를 통해 설치할 수 있습니다. 시작하기 가장 쉬운 방법은 [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT) 저장소에서 최신 릴리스를 다운로드하는 것입니다. Linux 사용자의 경우 많은 배포판이 패키지 관리자를 통해 OCCT 패키지를 제공합니다(예: Ubuntu에서 `apt install libocct-dev`). Windows 개발자는 사전 빌드된 바이너리를 사용하거나 CMake와 Visual Studio를 사용해 소스에서 컴파일할 수 있습니다. 공식 문서에는 지원되는 모든 플랫폼에 대한 단계별 빌드 가이드가 포함되어 있습니다.
패키지 관리자 (Ubuntu/Debian)를 통해 OCCT 설치
sudo apt update
sudo apt install libocct-dev libocct-data-exchange-dev libocct-visualization-dev불리언 연산 및 솔리드 모델링
OCCT는 3D 솔리드에 대한 강력한 불리언 연산(합집합, 교집합, 차집합)을 제공하여 기본 프리미티브로부터 복잡한 형태를 생성할 수 있게 합니다. 그 토폴로지 커널은 필렛, 챔퍼, 구멍 및 리브와 같은 고정밀 고급 기능을 지원합니다. 개발자는 C++ API를 사용하여 파라메트릭 기능을 만들고 이를 CAD 워크플로에 통합할 수 있습니다. 이 라이브러리는 토폴로지 데이터 구조를 효율적으로 처리하며 B-Rep 및 구성 솔리드 기하(CSG) 모델링 접근 방식을 모두 지원합니다. 이는 정밀한 기하학 계산과 피처 기반 모델링이 필요한 엔지니어링 애플리케이션 개발에 OCCT가 이상적임을 의미합니다.
C++를 통해 두 솔리드에 대한 불리언 합집합 수행
TopoDS_Shape box1 = BRepPrimAPI_MakeBox(10, 10, 10);
TopoDS_Shape box2 = BRepPrimAPI_MakeBox(20, 5, 5);
BRepAlgoAPI_Fuse fuseOp(box1, box2);
if (fuseOp.IsDone()) {
TopoDS_Shape result = fuseOp.Shape();
// Save or visualize result
}데이터 교환 (STEP 및 IGES)
OCCT는 STEP (AP203/AP214) 및 IGES와 같은 ISO 표준 형식을 지원하는 포괄적인 데이터 교환 모듈을 포함합니다. 이러한 모듈은 기하학, 토폴로지, 메타데이터 및 제품 구조를 보존하면서 CAD 모델을 가져오고 내보낼 수 있게 합니다. STEP 리더/라이터는 자동차 및 기계 설계 데이터를 위한 완전한 AP214 호환성을 지원합니다. 개발자는 가져온 모델을 프로그래밍 방식으로 처리하고, 면/엣지를 추출하며, 기하학을 수정하고, 다양한 형식으로 다시 내보낼 수 있습니다. 이러한 상호 운용성은 다양한 소프트웨어 생태계 간의 CAD 협업에 필수적이며 기존 설계 워크플로에 원활한 통합을 보장합니다.
C++를 사용하여 STEP 파일을 가져오고 STL로 내보내기
Handle(STEPCAFControl_Reader) reader = new STEPCAFControl_Reader();
IFSelect_ReturnStatus status = reader->ReadFile("model.step");
if (status == IFSelect_RetDone) {
Handle(TDocStd_Document) doc;
reader->Transfer(doc);
// Export to STL
STEPCAFControl_Writer writer;
writer.Write("output.stl");
}3D 시각화 및 렌더링
OCCT의 시각화 툴킷은 하드웨어 가속 OpenGL, 레이 트레이싱 및 고급 조명을 지원하는 강력한 3D 렌더링 기능을 제공합니다. 개발자는 선택, 하이라이팅 및 네비게이션 도구가 포함된 인터랙티브 CAD 뷰어를 구축할 수 있습니다. 이 툴킷에는 3D 뷰 관리, 씬 그래프 처리 및 맞춤형 렌더링 파이프라인을 위한 클래스가 포함되어 있습니다. 안티앨리어싱, 투명도 및 와이어프레임/숨은선 표시 모드와 같은 기능은 전문가 수준의 시각화를 보장합니다. 이를 통해 OCCT는 엔지니어링 시각화 도구, 가상 현실 애플리케이션 및 실시간 성능을 갖춘 시뮬레이션 결과 브라우저 개발에 적합합니다.
OCCT로 인터랙티브 3D 뷰어 만들기
Handle(V3d_Viewer) aViewer = new V3d_Viewer();
Handle(AIS_InteractiveContext) aContext = new AIS_InteractiveContext(aViewer);
Handle(AIS_Shape) anActor = new AIS_Shape(aShape);
aContext->Display(anActor, Standard_True);
// Enable rotation, zoom, pan
aViewer->InitActiveView();
aViewer->ActiveView()->SetDegenerateModeOn();메시 생성 및 분석
OCCT는 B-Rep 모델을 시뮬레이션 및 시각화를 위한 삼각형 메시로 변환하는 메시 생성 도구를 포함합니다. Mesh 모듈은 에지 및 면 테셀레이션 정확도 제어를 통한 적응형 메싱을 지원합니다. 개발자는 CAE 분석을 위한 유한 요소 메쉬를 생성하고, 메쉬 품질 지표를 계산하며, 정제 및 스무딩과 같은 메쉬 작업을 수행할 수 있습니다. 이 라이브러리는 또한 메쉬 데이터 교환(STL, OBJ) 도구와 외부 FEM 솔버와의 통합을 제공합니다. 이러한 기능은 CAD 설계와 시뮬레이션 워크플로를 연결하여 엔지니어링 분석 애플리케이션의 엔드투엔드 개발을 가능하게 합니다.
C++를 사용하여 B-Rep 형상에서 메시 생성
BRepMesh_IncrementalMesh aMesh(aShape, 0.01);
// Access mesh data
TopExp_Explorer anExp(aShape, TopAbs_FACE);
for (; anExp.More(); anExp.Next()) {
TopoDS_Face aFace = TopoDS::Face(anExp.Current());
Handle(Poly_Triangulation) aTriangulation =
BRep_Tool::Triangulation(aFace, aLoc);
if (!aTriangulation.IsNull()) {
// Process triangulation nodes and triangles
}
}