
OCCT
Open source C++ 3D-modellering- og simuleringsplatform
Byg parametriske 3D-modeller, simuler fysik og visualiser CAD-data via open source C++-bibliotek.
Hvad er OCCT?
Open CASCADE Technology (OCCT) er en kraftfuld open‑source C++ softwareudviklingsplatform til 3D CAD-, CAM- og CAE‑applikationer. Den leverer omfattende biblioteker til geometrisk modellering, mesh‑generering, dataudveksling (STEP, IGES, STL), visualisering og simulering. Designet til højpræcisions‑ingeniør‑ og fremstillingsarbejdsprocesser muliggør OCCT, at udviklere kan bygge robuste parametriske modelleringsværktøjer, CAD‑fremvisere og simuleringsapplikationer med industristandardfunktioner.
Biblioteket understøtter avancerede solidmodelleringsoperationer såsom booleske operationer, afrundinger, skråninger og svejseoperationer, sammen med overflademodellering, NURBS‑geometri og parametrisk funktionmodellering. OCCT’s modulære arkitektur indeholder dedikerede værktøjssæt til topologi, geometri, visualisering, dataudveksling og applikationsramme, hvilket gør det ideelt til kompleks ingeniørsoftwareudvikling. Med aktivt fællesskabsstøtte og regelmæssige udgivelser fungerer OCCT som grundlag for talrige kommercielle og forsknings‑grade 3D‑applikationer verden over.
Kom i gang med OCCT
OCCT distribueres som open-source C++-biblioteker og kan installeres via kildebygning eller forudkompilerede binære filer. Den nemmeste måde at komme i gang på er ved at downloade den seneste udgivelse fra [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT) repository. For Linux-brugere leverer mange distributioner OCCT-pakker via deres pakkehåndterere (f.eks. `apt install libocct-dev` på Ubuntu). Windows-udviklere kan bruge forudbyggede binære filer eller kompilere fra kilde ved hjælp af CMake og Visual Studio. Den officielle dokumentation indeholder trin-for-trin byggevejledninger til alle understøttede platforme.
Installer OCCT via pakkehåndtering (Ubuntu/Debian)
sudo apt update
sudo apt install libocct-dev libocct-data-exchange-dev libocct-visualization-devBooleske operationer & solid modellering
OCCT leverer robuste boolske operationer (union, intersection, subtraktion) for 3D-solid, hvilket muliggør kompleks formoprettelse fra grundlæggende primitive. Dets topologikernen understøtter avancerede funktioner som afrundinger, skråskæringer, huller og ribber med høj præcision. Udviklere kan skabe parametriske funktioner ved hjælp af C++-API'er og integrere dem i CAD-arbejdsprocesser. Biblioteket håndterer topologiske datastrukturer effektivt og understøtter både B-Rep og konstruktiv solid geometri (CSG) modelleringsmetoder. Dette gør OCCT ideelt til at udvikle ingeniørapplikationer, der kræver præcise geometriske beregninger og funktionsbaseret modellering.
Udfør boolesk 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
}Dataudveksling (STEP & IGES)
OCCT inkluderer omfattende dataudvekslingsmoduler, der understøtter ISO-standardformater som STEP (AP203/AP214) og IGES. Disse moduler muliggør import og eksport af CAD-modeller, mens de bevarer geometri, topologi, metadata og produktstruktur. STEP-læseren/skriveren understøtter fuld AP214-kompatibilitet for bil- og mekanisk designdata. Udviklere kan programmatisk behandle importerede modeller, udtrække flader/kantsegmenter, modificere geometri og geneksportere i forskellige formater. Denne interoperabilitet er afgørende for CAD-samarbejde på tværs af forskellige softwareøkosystemer og sikrer problemfri integration i eksisterende designarbejdsprocesser.
Importér 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 & rendering
OCCT's visualiseringsværktøjssæt leverer kraftfulde 3D-renderingsfunktioner med understøttelse af hardwareaccelereret OpenGL, ray tracing og avanceret belysning. Udviklere kan bygge interaktive CAD-fremvisere med valg, fremhævning og navigationsværktøjer. Værktøjssættet indeholder klasser til 3D-visningsstyring, scenegraph-håndtering og tilpassede renderingspipeline. Funktioner som anti-aliasing, gennemsigtighed og trådramme/skjult-linje-visningstilstande sikrer visualisering af professionel kvalitet. Dette gør OCCT egnet til at udvikle ingeniørvisualiseringsværktøjer, virtual reality-applikationer og simuleringresultatbrowsere med realtidsydelse.
Opret interaktiv 3D-fremviser 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 & analyse
OCCT inkluderer mesh-genereringsværktøjer, der konverterer B-Rep-modeller til triangulerede mesh'er til simulering og visualisering. Mesh-modulet understøtter adaptiv meshning med kontrol over kant- og flade-tessellationsnøjagtighed. Udviklere kan generere finite element-mesh'er til CAE-analyse, beregne mesh-kvalitetsmålinger og udføre mesh-operationer som forfining og udglatning. Biblioteket leverer også værktøjer til mesh-dataudveksling (STL, OBJ) og integration med eksterne FEM-løsere. Denne funktionalitet forbinder CAD-design og simuleringsarbejdsgange, hvilket muliggør end-to-end-udvikling af ingeniøranalytiske applikationer.
Generér mesh 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
}
}