
OCCT
Plataforma de modelado y simulación 3D en C++ de código abierto
Crea modelos 3D paramétricos, simula física y visualiza datos CAD mediante una biblioteca C++ de código abierto.
¿Qué es OCCT?
Open CASCADE Technology (OCCT) es una potente plataforma de desarrollo de software de código abierto en C++ para aplicaciones 3D de CAD, CAM y CAE. Proporciona bibliotecas completas para modelado geométrico, generación de mallas, intercambio de datos (STEP, IGES, STL), visualización y simulación. Diseñada para flujos de trabajo de ingeniería y fabricación de alta precisión, OCCT permite a los desarrolladores crear herramientas robustas de modelado paramétrico, visores CAD y aplicaciones de simulación con capacidades estándar de la industria.
La biblioteca admite operaciones avanzadas de modelado sólido como operaciones booleanas, redondeos, chaflanes y barridos, junto con modelado de superficies, geometría NURBS y modelado paramétrico de características. La arquitectura modular de OCCT incluye kits de herramientas dedicados para topología, geometría, visualización, intercambio de datos y marco de aplicación, lo que la hace ideal para el desarrollo de software de ingeniería complejo. Con el apoyo activo de la comunidad y lanzamientos regulares, OCCT sirve como base para numerosas aplicaciones 3D comerciales y de investigación en todo el mundo.
Comenzando con OCCT
OCCT se distribuye como bibliotecas de C++ de código abierto y puede instalarse mediante compilación desde el código fuente o binarios precompilados. La forma más fácil de comenzar es descargando la última versión del repositorio [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT). Para los usuarios de Linux, muchas distribuciones proporcionan paquetes de OCCT a través de sus gestores de paquetes (por ejemplo, `apt install libocct-dev` en Ubuntu). Los desarrolladores de Windows pueden usar binarios preconstruidos o compilar desde el código fuente usando CMake y Visual Studio. La documentación oficial incluye guías de compilación paso a paso para todas las plataformas compatibles.
Instalar OCCT mediante el gestor de paquetes (Ubuntu/Debian)
sudo apt update
sudo apt install libocct-dev libocct-data-exchange-dev libocct-visualization-devOperaciones booleanas y modelado sólido
OCCT ofrece operaciones booleanas robustas (unión, intersección, sustracción) para sólidos 3D, lo que permite la creación de formas complejas a partir de primitivas básicas. Su núcleo de topología admite características avanzadas como filetes, chaflanes, agujeros y nervios con alta precisión. Los desarrolladores pueden crear características paramétricas usando APIs de C++ e integrarlas en flujos de trabajo CAD. La biblioteca maneja estructuras de datos topológicas de manera eficiente, soportando tanto modelado B-Rep como geometría sólida constructiva (CSG). Esto hace que OCCT sea ideal para desarrollar aplicaciones de ingeniería que requieren cálculos geométricos precisos y modelado basado en características.
Realizar unión booleana de dos sólidos mediante 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
}Intercambio de datos (STEP e IGES)
OCCT incluye módulos de intercambio de datos completos que soportan formatos estándar ISO como STEP (AP203/AP214) e IGES. Estos módulos permiten importar y exportar modelos CAD mientras preservan la geometría, topología, metadatos y la estructura del producto. El lector/escritor STEP admite el cumplimiento total de AP214 para datos de diseño automotriz y mecánico. Los desarrolladores pueden procesar programáticamente los modelos importados, extraer caras/aristas, modificar la geometría y volver a exportar en diferentes formatos. Esta interoperabilidad es crucial para la colaboración CAD entre diferentes ecosistemas de software y garantiza una integración fluida en los flujos de trabajo de diseño existentes.
Importar archivo STEP y exportar como STL mediante C++
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");
}Visualización 3D y renderizado
El kit de visualización de OCCT ofrece potentes capacidades de renderizado 3D con soporte para OpenGL acelerado por hardware, trazado de rayos y iluminación avanzada. Los desarrolladores pueden crear visores CAD interactivos con herramientas de selección, resaltado y navegación. El kit incluye clases para la gestión de vistas 3D, manejo de grafos de escena y pipelines de renderizado personalizados. Características como antialiasing, transparencia y modos de visualización de alambre/línea oculta garantizan una visualización de calidad profesional. Esto hace que OCCT sea adecuado para desarrollar herramientas de visualización de ingeniería, aplicaciones de realidad virtual y navegadores de resultados de simulación con rendimiento en tiempo real.
Crear visor 3D interactivo con OCCT
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();Generación de malla y análisis
OCCT incluye herramientas de generación de mallas que convierten modelos B-Rep en mallas trianguladas para simulación y visualización. El módulo Mesh admite mallado adaptativo con control sobre la precisión de la teselación de aristas y caras. Los desarrolladores pueden generar mallas de elementos finitos para análisis CAE, calcular métricas de calidad de malla y realizar operaciones de malla como refinamiento y suavizado. La biblioteca también proporciona herramientas para el intercambio de datos de malla (STL, OBJ) e integración con solucionadores FEM externos. Esta capacidad conecta el diseño CAD y los flujos de trabajo de simulación, permitiendo el desarrollo de extremo a extremo de aplicaciones de análisis de ingeniería.
Generar malla a partir de una forma B-Rep mediante C++
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
}
}