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

OCCT

 
 

Atvērtā koda C++ 3D modelēšanas un simulācijas platforma

Veido parametriskus 3D modeļus, simulē fiziku un vizualizē CAD datus, izmantojot atvērtā koda C++ bibliotēku.

Kas ir OCCT?

Open CASCADE Technology (OCCT) ir jaudīga atvērtā koda C++ programmatūras izstrādes platforma 3D CAD, CAM un CAE lietojumprogrammu izstrādei. Tā nodrošina plašas bibliotēkas ģeometriskai modelēšanai, režģa ģenerēšanai, datu apmaiņai (STEP, IGES, STL), vizualizācijai un simulācijai. Izstrādāta augstas precizitātes inženierijas un ražošanas darba plūsmām, OCCT ļauj izstrādātājiem veidot stabilus parametriskās modelēšanas rīkus, CAD skatītājus un simulācijas lietojumprogrammas ar nozarē standartizētām iespējām.

Bibliotēka atbalsta uzlabotas cietās modeļa operācijas, piemēram, Boolea operācijas, apaļošanu, slīpēšanu un izvilkumu, kā arī virsmas modelēšanu, NURBS ģeometriju un parametrisko funkciju modelēšanu. OCCT modulārā arhitektūra ietver īpašas rīkkopas topoloģijai, ģeometrijai, vizualizācijai, datu apmaiņai un lietojumprogrammu struktūrai, padarot to par ideālu risinājumu sarežģītai inženierijas programmatūras izstrādei. Ar aktīvu kopienas atbalstu un regulārām izlaidēm, OCCT kalpo kā pamats daudziem komerciāliem un pētnieciskā līmeņa 3D lietojumiem visā pasaulē.

Previous Next

Sākšana ar OCCT

OCCT tiek izplatīts kā atvērtā koda C++ bibliotēkas, un to var instalēt, veidojot no pirmkoda vai izmantojot iepriekš kompilētas bināras datnes. Visvienkāršākais veids, kā sākt, ir lejupielādēt jaunāko izlaidumu no [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT) krātuves. Linux lietotājiem daudzas izplatīšanas versijas nodrošina OCCT pakotnes caur to pakotņu pārvaldniekiem (piemēram, `apt install libocct-dev` uz Ubuntu). Windows izstrādātāji var izmantot iepriekš sagatavotas bināras datnes vai kompilēt no pirmkoda, izmantojot CMake un Visual Studio. Oficiālā dokumentācija ietver soli pa solim būvēšanas ceļvežus visām atbalstītajām platformām.

Instalējiet OCCT, izmantojot pakotņu pārvaldnieku (Ubuntu/Debian)

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

Būla operācijas un cietvielu modelēšana

OCCT nodrošina robustas Būla operācijas (apvienošana, šķērsgriezums, atņemšana) 3D cietēm, ļaujot izveidot sarežģītas formas no pamata primitīviem. Tā topoloģijas kodols atbalsta uzlabotas funkcijas, piemēram, apaļojumus, slīpsienas, caurumus un ribas ar augstu precizitāti. Izstrādātāji var izveidot parametriskās funkcijas, izmantojot C++ API, un integrēt tās CAD darba plūsmās. Bibliotēka efektīvi apstrādā topoloģiskās datu struktūras, atbalstot gan B-Rep, gan konstrukcijas cietuma ģeometrijas (CSG) modelēšanas pieejas. Tas padara OCCT par ideālu rīku inženierijas lietojumprogrammu izstrādei, kurām nepieciešami precīzi ģeometriskie aprēķini un funkciju balstīta modelēšana.

Izpildiet Būla apvienošanu diviem cietvielām, izmantojot 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
}

Datu apmaiņa (STEP & IGES)

OCCT ietver visaptverošus datu apmaiņas moduļus, kas atbalsta ISO standarta formātus, piemēram, STEP (AP203/AP214) un IGES. Šie moduļi ļauj importēt un eksportēt CAD modeļus, saglabājot ģeometriju, topoloģiju, metadatus un produkta struktūru. STEP lasītājs/rakstītājs atbalsta pilnīgu AP214 atbilstību automobiļu un mehāniskā projektēšanas datiem. Izstrādātāji var programmatiski apstrādāt importētos modeļus, izvilkt virsmas/malas, modificēt ģeometriju un atkārtoti eksportēt dažādos formātos. Šī savietojamība ir būtiska CAD sadarbībai dažādās programmatūras ekosistēmās un nodrošina nevainojamu integrāciju esošajos projektēšanas darba plūsmās.

Importēt STEP failu un eksportēt kā STL, izmantojot 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 vizualizācija un renderēšana

OCCT vizualizācijas rīkkopa nodrošina spēcīgas 3D renderēšanas iespējas ar atbalstu aparatūras paātrinātam OpenGL, staru izsekošanai un uzlabotai apgaismošanai. Izstrādātāji var izveidot interaktīvas CAD skatītājus ar atlases, izcelšanas un navigācijas rīkiem. Rīkkopa ietver klases 3D skata pārvaldībai, ainas grafika apstrādei un pielāgotām renderēšanas cauruļvadiem. Tādas funkcijas kā anti-aliasing, caurspīdīgums un stieņu/tēlu līniju attēlošanas režīmi nodrošina profesionāla līmeņa vizualizāciju. Tas padara OCCT piemērotu inženiertehniskās vizualizācijas rīku, virtuālās realitātes lietojumprogrammu un simulācijas rezultātu pārlūku izstrādei ar reāllaika veiktspēju.

Izveidot interaktīvu 3D skatītāju ar 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();

Tīklu ģenerēšana un analīze

OCCT ietver tīklu ģenerēšanas rīkus, kas pārveido B-Rep modeļus trīsstūra tīklos simulācijai un vizualizācijai. Tīklu modulis atbalsta adaptīvu tīklu veidošanu ar kontroles iespēju pār malas un seju mozaīkas precizitāti. Izstrādātāji var ģenerēt galīgā elementa tīklus CAE analīzei, aprēķināt tīklu kvalitātes metriku un veikt tīklu operācijas, piemēram, uzlabošanu un gludināšanu. Bibliotēka arī nodrošina rīkus tīklu datu apmaiņai (STL, OBJ) un integrācijai ar ārējiem FEM risinātājiem. Šī iespēja savieno CAD dizainu un simulācijas darba plūsmas, ļaujot izstrādāt pilnīgu inženiertehniskās analīzes lietojumprogrammu izstrādi.

Ģenerēt režģi no B-Rep formas, izmantojot 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
    }
}
 Latviski