1. Producten
  2.   CAD
  3.   C++
  4.   OCCT

OCCT

 
 

Open Source C++ 3D Modellering- en Simulatieplatform

Bouw parametrische 3D-modellen, simuleer fysica & visualiseer CAD-gegevens via Open Source C++ bibliotheek.

Wat is OCCT?

Open CASCADE Technology (OCCT) is een krachtig open-source C++ softwareontwikkelingsplatform voor 3D CAD-, CAM- en CAE-toepassingen. Het biedt uitgebreide bibliotheken voor geometrisch modelleren, meshgeneratie, gegevensuitwisseling (STEP, IGES, STL), visualisatie en simulatie. Ontworpen voor high‑precision engineering en productie‑workflows, stelt OCCT ontwikkelaars in staat robuuste parametrische modelleringsgereedschappen, CAD-viewers en simulatie‑applicaties te bouwen met industriestandaard functionaliteiten.

De bibliotheek ondersteunt geavanceerde solide-modelleringsbewerkingen zoals Booleaanse bewerkingen, afrondingen, afschuiningen en sweeps, samen met oppervlaktemodellering, NURBS‑geometrie en parametrische functie‑modellering. De modulaire architectuur van OCCT omvat speciale toolkits voor topologie, geometrie, visualisatie, gegevensuitwisseling en toepassingsframework, waardoor het ideaal is voor complexe engineering‑softwareontwikkeling. Met actieve community‑ondersteuning en regelmatige releases vormt OCCT de basis voor talrijke commerciële en onderzoeks‑grade 3D‑applicaties wereldwijd.

Previous Next

Aan de slag met OCCT

OCCT wordt verspreid als open‑source C++‑bibliotheken en kan worden geïnstalleerd via een bron‑build of vooraf gecompileerde binaries. De gemakkelijkste manier om te beginnen is door de nieuwste release te downloaden van de [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT) repository. Voor Linux‑gebruikers bieden veel distributies OCCT‑pakketten via hun pakketbeheerders (bijv. `apt install libocct-dev` op Ubuntu). Windows‑ontwikkelaars kunnen vooraf gebouwde binaries gebruiken of compileren vanuit de bron met CMake en Visual Studio. De officiële documentatie bevat stapsgewijze bouwgidsen voor alle ondersteunde platforms.

Installeer OCCT via pakketbeheer (Ubuntu/Debian)

sudo apt update
sudo apt install libocct-dev libocct-data-exchange-dev libocct-visualization-dev

Booleaanse bewerkingen & solide modellering

OCCT biedt robuuste Booleaanse bewerkingen (unite, intersectie, aftrekking) voor 3D-solids, waardoor complexe vormcreatie mogelijk is vanuit basisprimitieven. De topologiekernel ondersteunt geavanceerde functies zoals afrondingen, afschuiningen, gaten en ribben met hoge precisie. Ontwikkelaars kunnen parametrische functies maken met C++-API's en deze integreren in CAD-werkstromen. De bibliotheek verwerkt topologische datastructuren efficiënt en ondersteunt zowel B-Rep- als constructieve solide geometrie (CSG) modelleringsbenaderingen. Dit maakt OCCT ideaal voor het ontwikkelen van technische toepassingen die precieze geometrische berekeningen en op functies gebaseerde modellering vereisen.

Voer Booleaanse unie uit op twee solide via 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
}

Gegevensuitwisseling (STEP & IGES)

OCCT bevat uitgebreide modules voor gegevensuitwisseling die ISO-standaardformaten zoals STEP (AP203/AP214) en IGES ondersteunen. Deze modules maken het importeren en exporteren van CAD-modellen mogelijk, terwijl geometrie, topologie, metadata en productstructuur behouden blijven. De STEP-lezer/schrijver ondersteunt volledige AP214-conformiteit voor automotive- en mechanische ontwerpsgegevens. Ontwikkelaars kunnen geïmporteerde modellen programmatisch verwerken, vlakken/randen extraheren, geometrie wijzigen en opnieuw exporteren in verschillende formaten. Deze interoperabiliteit is cruciaal voor CAD-samenwerking tussen verschillende software-ecosystemen en zorgt voor een naadloze integratie in bestaande ontwerpworkflows.

Importeer STEP-bestand en exporteer als STL via 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");
}

3D-visualisatie & rendering

De visualisatietoolkit van OCCT biedt krachtige 3D-renderingsmogelijkheden met ondersteuning voor hardwareversnelde OpenGL, ray tracing en geavanceerde verlichting. Ontwikkelaars kunnen interactieve CAD-viewers bouwen met selectie, markering en navigatietools. De toolkit bevat klassen voor 3D-beeldbeheer, scenegraph-afhandeling en aangepaste renderpijplijnen. Functies zoals anti-aliasing, transparantie en draadmodel/verborgen-lijn weergavemodi zorgen voor visualisatie van professionele kwaliteit. Dit maakt OCCT geschikt voor het ontwikkelen van engineering-visualisatietools, virtual reality-toepassingen en simulatie-resultaatbrowsers met realtime prestaties.

Maak een interactieve 3D-viewer met 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();

Meshgeneratie & analyse

OCCT omvat mesh‑generatietools die B‑Rep‑modellen omzetten in getrianguleerde meshes voor simulatie en visualisatie. De Mesh‑module ondersteunt adaptieve meshing met controle over de nauwkeurigheid van rand‑ en vlak‑tessellatie. Ontwikkelaars kunnen eindige‑element‑meshes genereren voor CAE‑analyse, mesh‑kwaliteitsmetingen berekenen en mesh‑bewerkingen uitvoeren zoals verfijning en gladstrijken. De bibliotheek biedt ook tools voor mesh‑gegevensuitwisseling (STL, OBJ) en integratie met externe FEM‑solvers. Deze mogelijkheid verbindt CAD‑ontwerp en simulatie‑werkstromen, waardoor end‑to‑end ontwikkeling van engineering‑analyse‑applicaties mogelijk wordt.

Genereer een mesh van B-Rep-vorm via 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
    }
}
 Dutch