
OCCT
Atviro kodo C++ 3D modeliavimo ir simuliacijos platforma
Kurkite parametrinius 3D modelius, simuliuokite fiziką ir vizualizuokite CAD duomenis naudojant atviro kodo C++ biblioteką.
Kas yra OCCT?
Open CASCADE Technology (OCCT) yra galinga atviro kodo C++ programinės įrangos kūrimo platforma 3D CAD, CAM ir CAE programoms. Ji suteikia išsamias bibliotekas geometriniam modeliui, tinklo generavimui, duomenų mainams (STEP, IGES, STL), vizualizacijai ir simuliacijai. Sukurta aukštos tikslumo inžinerijos ir gamybos darbo eigoms, OCCT leidžia kūrėjams kurti patikimus parametrinius modeliavimo įrankius, CAD peržiūros programas ir simuliacijos programas su pramonės standartais.
Biblioteka palaiko pažangias kietųjų kūnų modeliavimo operacijas, tokias kaip Boole'o operacijos, skylės, nuolydžiai ir ištempimai, kartu su paviršiaus modeliavimu, NURBS geometrija ir parametriniu funkcijų modeliavimu. OCCT moduline architektūra apima specializuotas priemonių rinkines topology, geometry, visualization, data exchange ir application framework, todėl ji yra ideali sudėtingam inžineriniam programinės įrangos kūrimui. Su aktyviai veikiausia bendruomene ir reguliariais leidimais, OCCT tampa pagrindu daugybei komercinių ir mokslinių 3D programų visame pasaulyje.
Pradžia su OCCT
OCCT platinamas kaip atviro kodo C++ bibliotekos ir gali būti įdiegtas iš šaltinio kūrimo arba iš anksto sukompiliuotų binarinių failų. Paprasčiausias būdas pradėti – atsisiųsti naujausią versiją iš [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT) saugyklos. Linux naudotojams daugelis distribucijų teikia OCCT paketus per jų paketų tvarkykles (pvz., `apt install libocct-dev` Ubuntu sistemoje). Windows kūrėjai gali naudoti iš anksto sukurtus binarinius failus arba kompiliuoti iš šaltinio naudojant CMake ir Visual Studio. Oficialioje dokumentacijoje yra išsamios žingsnis po žingsnio kūrimo instrukcijos visoms palaikomoms platformoms.
Įdiekite OCCT per paketų tvarkyklę (Ubuntu/Debian)
sudo apt update
sudo apt install libocct-dev libocct-data-exchange-dev libocct-visualization-devLoginės operacijos ir kietųjų kūnų modeliavimas
OCCT suteikia patikimas Boolean operacijas (sujungimą, sankirtą, atimtį) 3D kūnams, leidžiančias kurti sudėtingas formas iš pagrindinių primityvų. Jo topologijos branduolys palaiko pažangias funkcijas, tokias kaip apvalinimai, skaldymai, skylės ir ribos, su dideliu tikslumu. Kūrėjai gali kurti parametrines funkcijas naudodami C++ API ir integruoti jas į CAD darbo eigas. Biblioteka efektyviai tvarko topologines duomenų struktūras, palaikydama tiek B‑Rep, tiek konstruktyvią kietųjų kūnų (CSG) modeliavimo metodiką. Tai daro OCCT idealiu inžinerinių programų kūrimui, kurioms reikalingi tikslūs geometriniai skaičiavimai ir funkcijomis pagrįstas modeliavimas.
Atlikite loginį susijungimą ant dviejų kietųjų kūnų naudojant 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
}Duomenų mainai (STEP ir IGES)
OCCT apima išsamias duomenų mainų modulius, palaikančius ISO standartų formatus, tokius kaip STEP (AP203/AP214) ir IGES. Šie moduliai leidžia importuoti ir eksportuoti CAD modelius, išlaikant geometriją, topologiją, metaduomenis ir produkto struktūrą. STEP skaitytuvas/rašytojas palaiko visą AP214 atitiktį automobilių ir mechaninio dizaino duomenims. Kūrėjai gali programiškai apdoroti importuotus modelius, išgauti paviršius/kraštus, modifikuoti geometriją ir iš naujo eksportuoti į skirtingus formatus. Ši tarpusavio suderinamumas yra esminis CAD bendradarbiavimui tarp skirtingų programinės įrangos ekosistemų ir užtikrina sklandų integravimą į esamus dizaino darbo procesus.
Importuokite STEP failą ir eksportuokite kaip STL naudojant 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 vizualizacija ir atvaizdavimas
OCCT vizualizacijos įrankių rinkinys suteikia galingas 3D atvaizdavimo galimybes su palaikymu aparatūriškai pagreitintam OpenGL, spindulių sekimu ir pažangiu apšvietimu. Kūrėjai gali kurti interaktyvias CAD peržiūros programas su pasirinkimo, išryškinimo ir navigacijos įrankiais. Įrankių rinkinys apima klases 3D vaizdo valdymui, scenų grafiko tvarkymui ir pasirinktiniams atvaizdavimo kanalams. Tokios funkcijos kaip anti‑aliasing, skaidrumas ir vielų/nerodomos linijos rodymo režimai užtikrina profesionalios kokybės vizualizaciją. Tai daro OCCT tinkamu inžinerinių vizualizacijos įrankių, virtualios realybės programų ir simuliacijos rezultatų naršyklių kūrimui su realaus laiko našumu.
Sukurkite interaktyvų 3D peržiūros programą su 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();Tinklo generavimas ir analizė
OCCT apima tinklo generavimo įrankius, kurie konvertuoja B-Rep modelius į trianguliuotus tinklus simuliacijai ir vizualizacijai. Tinklo modulis palaiko adaptacinį tinklo kūrimą, suteikdamas kontrolę dėl kraštų ir paviršių tesseliacijos tikslumo. Kūrėjai gali generuoti baigtinių elementų tinklus CAE analizei, apskaičiuoti tinklo kokybės metrikas ir atlikti tinklo operacijas, tokias kaip patikslinimas ir glotninimas. Biblioteka taip pat teikia įrankius tinklo duomenų mainams (STL, OBJ) ir integracijai su išoriniais FEM sprendikliais. Ši galimybė sujungia CAD dizainą ir simuliacijos darbo srautus, leidžiant kurti pilną inžinerinių analizės programų kūrimą.
Generuokite tinklelį iš B-Rep formos naudojant 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
}
}