
OCCT
Åpen kildekode C++ 3D-modellering og simuleringsplattform
Bygg parametriske 3D-modeller, simuler fysikk og visualiser CAD-data via åpen kildekode C++-bibliotek.
Hva er OCCT?
Open CASCADE Technology (OCCT) er en kraftig open‑source C++ programvareutviklingsplattform for 3D CAD-, CAM- og CAE‑applikasjoner. Den tilbyr omfattende biblioteker for geometrisk modellering, nettgenerering, datautveksling (STEP, IGES, STL), visualisering og simulering. Designet for høy‑presisjon ingeniør‑ og produksjonsarbeidsflyter, gjør OCCT det mulig for utviklere å bygge robuste parametriske modelleringsverktøy, CAD‑visere og simuleringsapplikasjoner med bransjestandardfunksjoner.
Biblioteket støtter avanserte solidmodelleringsoperasjoner som boolske operasjoner, avrundinger, avfasinger og sveip, sammen med overflatemodellering, NURBS-geometri og parametrisk funksjonsmodellering. OCCTs modulære arkitektur inkluderer dedikerte verktøykasser for topologi, geometri, visualisering, datautveksling og applikasjonsrammeverk, noe som gjør det ideelt for kompleks ingeniørprogramvareutvikling. Med aktivt fellesskapsstøtte og regelmessige utgivelser fungerer OCCT som grunnlaget for mange kommersielle og forsknings‑grade 3D‑applikasjoner over hele verden.
Kom i gang med OCCT
OCCT distribueres som åpne C++-biblioteker og kan installeres via kildebygging eller forhåndskompilerte binærfiler. Den enkleste måten å komme i gang på er å laste ned den nyeste versjonen fra [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT)‑depotet. For Linux‑brukere tilbyr mange distribusjoner OCCT‑pakker via sine pakkebehandlere (f.eks. `apt install libocct-dev` på Ubuntu). Windows‑utviklere kan bruke forhåndsbygde binærfiler eller kompilere fra kilde ved hjelp av CMake og Visual Studio. Den offisielle dokumentasjonen inneholder trinn‑for‑trinn byggveiledninger for alle støttede plattformer.
Installer OCCT via pakkebehandler (Ubuntu/Debian)
sudo apt update
sudo apt install libocct-dev libocct-data-exchange-dev libocct-visualization-devBoolske operasjoner og solidmodellering
OCCT tilbyr robuste boolske operasjoner (union, intersect, subtraksjon) for 3D‑kropper, og gjør det mulig å lage komplekse former fra grunnleggende primitive. Kjerne‑topologien støtter avanserte funksjoner som avrundinger, avfasninger, hull og ribber med høy presisjon. Utviklere kan lage parametriske funksjoner ved hjelp av C++‑API‑er og integrere dem i CAD‑arbeidsflyter. Biblioteket håndterer topologiske datastrukturer effektivt, og støtter både B‑Rep‑ og konstruktiv solidgeometri (CSG)‑modelleringstilnærminger. Dette gjør OCCT ideelt for å utvikle ingeniørapplikasjoner som krever presise geometriske beregninger og funksjonsbasert modellering.
Utfør boolsk union på to 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
}Datautveksling (STEP & IGES)
OCCT inkluderer omfattende datautvekslingsmoduler som støtter ISO-standardformater som STEP (AP203/AP214) og IGES. Disse modulene gjør det mulig å importere og eksportere CAD-modeller samtidig som geometri, topologi, metadata og produktstruktur bevares. STEP-leser/skriveren støtter full AP214-kompatibilitet for bil- og mekanisk designdata. Utviklere kan programmessig behandle importerte modeller, hente ut flater/kantlinjer, endre geometri og eksportere på nytt i ulike formater. Denne interoperabiliteten er avgjørende for CAD-samarbeid på tvers av ulike programvareøkosystemer og sikrer sømløs integrering i eksisterende designarbeidsflyter.
Importer STEP-fil og eksporter som 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-visualisering og rendering
OCCTs visualiseringsverktøykasse gir kraftige 3D-gjengivelsesfunksjoner med støtte for maskinvareakselerert OpenGL, ray tracing og avansert belysning. Utviklere kan bygge interaktive CAD-visere med valg, fremheving og navigasjonsverktøy. Verktøykassen inkluderer klasser for 3D-visningshåndtering, scenegrafbehandling og egendefinerte gjengivelsesrørledninger. Funksjoner som kantutjevning, gjennomsiktighet og trådramme/skjult-linje-visningsmoduser sikrer visualisering av profesjonell kvalitet. Dette gjør OCCT egnet for utvikling av ingeniørvisualiseringsverktøy, virtuell virkelighetsapplikasjoner og nettlesere for simuleringsresultater med sanntidsytelse.
Lag interaktiv 3D-visning med 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();Mesh-generering og analyse
OCCT inkluderer verktøy for mesh-generering som konverterer B-Rep-modeller til triangulerte mesh for simulering og visualisering. Mesh-modulen støtter adaptiv mesh-generering med kontroll over kant- og flate-tessellasjonsnøyaktighet. Utviklere kan generere finite element-mesh for CAE-analyse, beregne mesh-kvalitetsmål, og utføre mesh-operasjoner som raffinering og jevning. Biblioteket tilbyr også verktøy for mesh-datautveksling (STL, OBJ) og integrasjon med eksterne FEM-løsere. Denne funksjonaliteten bygger bro mellom CAD-design og simuleringsarbeidsflyter, og muliggjør ende-til-ende utvikling av ingeniøranalytiske applikasjoner.
Generer nett fra B-Rep-form 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
}
}