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

OCCT

 
 

Avoimen lähdekoodin C++ 3D-mallinnus- ja simulointialusta

Rakenna parametrisia 3D-malleja, simuloi fysiikkaa ja visualisoi CAD-dataa avoimen lähdekoodin C++-kirjaston avulla.

Mikä on OCCT?

Open CASCADE Technology (OCCT) on tehokas avoimen lähdekoodin C++-ohjelmistokehitysalusta 3D CAD-, CAM- ja CAE-sovelluksia varten. Se tarjoaa kattavat kirjastot geometrian mallinnukseen, verkkopinnan luomiseen, tiedonvaihtoon (STEP, IGES, STL), visualisointiin ja simulointiin. Suunniteltu korkean tarkkuuden insinööri- ja valmistusprosessien työnkulkuihin, OCCT mahdollistaa kehittäjille vahvojen parametrisen mallinnuksen työkalujen, CAD-katselijoiden ja simulointisovellusten rakentamisen teollisuuden standardeilla ominaisuuksilla.

Kirjasto tukee edistyneitä kiinteän mallinnuksen toimintoja, kuten Boolen operaatioita, pyöristymiä, viistoja ja poimintoja, sekä pintamallinnusta, NURBS-geometriasta ja parametrisen ominaisuuksien mallinnuksesta. OCCT:n modulaarinen arkkitehtuuri sisältää omistettuja työkalupaketteja topologiassa, geometriassa, visualisoinnissa, tiedonvaihdossa ja sovelluskehyksessä, mikä tekee siitä ihanteellisen monimutkaiseen insinööriohjelmistokehitykseen. Aktiivisen yhteisötuen ja säännöllisten julkaisujen ansiosta OCCT toimii perustana lukuisille kaupallisille ja tutkimustason 3D-sovelluksille maailmanlaajuisesti.

Previous Next

OCCT:n aloitus

OCCT jaetaan avoimen lähdekoodin C++-kirjastoina, ja sen voi asentaa lähdekoodin käännöksen tai esikäännettyjen binäärien avulla. Helpoin tapa aloittaa on ladata uusin julkaisu [OCCT GitHub](https://github.com/Open-Cascade-SAS/OCCT) -varastosta. Linux-käyttäjille monet jakelut tarjoavat OCCT-paketteja pakettienhallintojensa kautta (esim. `apt install libocct-dev` Ubuntussa). Windows-kehittäjät voivat käyttää valmiita binäärejä tai kääntää lähdekoodista CMakea ja Visual Studiota käyttäen. Virallisessa dokumentaatiossa on vaiheittaiset rakennusoppaat kaikille tuetuille alustoille.

Asenna OCCT pakettienhallinnan kautta (Ubuntu/Debian)

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

Booliset operaatiot ja kiinteä mallinnus

OCCT tarjoaa vankat Boolean‑operaatiot (union, intersection, subtraction) 3D‑kappaleille, mahdollistaen monimutkaisten muotojen luomisen perusprimitivistä. Sen topologia‑ydin tukee edistyneitä ominaisuuksia, kuten pyöristyksiä, lohkeamia, reikiä ja poikkileikkauksia, erittäin tarkasti. Kehittäjät voivat luoda parametrisia ominaisuuksia C++‑rajapintojen avulla ja integroida ne CAD‑työnkulkuihin. Kirjasto käsittelee topologisia tietorakenteita tehokkaasti, tukien sekä B‑Rep‑ että konstruktio‑solidigeometria (CSG) -mallinnusmenetelmiä. Tämä tekee OCCT:stä ihanteellisen insinööriasetusten kehittämiseen, jotka vaativat tarkkoja geometrisia laskelmia ja ominaisuuspohjaista mallinnusta.

Suorita boolinen yhdiste kahdelle kiinteälle C++:lla

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
}

Tietojen vaihto (STEP & IGES)

OCCT sisältää kattavat tiedonvaihtomoduulit, jotka tukevat ISO-standardeja, kuten STEP (AP203/AP214) ja IGES. Nämä moduulit mahdollistavat CAD-mallien tuonnin ja viennin säilyttäen geometrian, topologian, metatiedot ja tuotteen rakenteen. STEP-lukija/kirjoittaja tukee täyttä AP214-yhteensopivuutta auto- ja koneen suunnittelutietojen osalta. Kehittäjät voivat ohjelmallisesti käsitellä tuotuja malleja, poimia pintoja/reunoja, muokata geometriaa ja viedä uudelleen eri formaateissa. Tämä yhteentoimivuus on ratkaisevan tärkeää CAD-yhteistyölle eri ohjelmistoympäristöjen välillä ja varmistaa saumattoman integroinnin olemassa oleviin suunnittelutyönkulkuihin.

Tuo STEP-tiedosto ja vie STL-muotoon C++:lla

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-visualisointi ja renderöinti

OCCT:n visualisointityökalupakki tarjoaa tehokkaita 3D-renderöintiominaisuuksia, jotka tukevat laitteistokiihdytettyä OpenGL:ää, säteenseurantaa ja kehittynyttä valaistusta. Kehittäjät voivat rakentaa interaktiivisia CAD-katselijoita, joissa on valinta-, korostus- ja navigointityökalut. Työkalupakki sisältää luokkia 3D-näkymän hallintaan, kohtausgraafin käsittelyyn ja mukautettuihin renderöintiputkiin. Ominaisuudet, kuten reunojen pehmennys, läpinäkyvyys ja lankakuva-/piilotettu viiva -näyttötilat, varmistavat ammattimaisen visualisoinnin laadun. Tämä tekee OCCT:stä sopivan insinööri-visualisointityökalujen, virtuaalitodellisuussovellusten ja simulaation tulosten selainten kehittämiseen reaaliaikaisella suorituskyvyllä.

Luo interaktiivinen 3D-katseluohjelma OCCT:n avulla

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();

Verkon luominen ja analyysi

OCCT sisältää verkkojen luontityökaluja, jotka muuntavat B-Rep-mallit kolmioverkkoiksi simulointia ja visualisointia varten. Mesh-moduuli tukee adaptiivista verkkomuodostusta, jossa on hallinta reunojen ja pintojen tessellointitarkkuudesta. Kehittäjät voivat luoda elementtiverkkoja CAE-analyysia varten, laskea verkon laatuindikaattoreita ja suorittaa verkko‑operaatioita, kuten hienosäätöä ja tasoitusta. Kirjasto tarjoaa myös työkaluja verkon tietojenvaihtoon (STL, OBJ) ja integraatioon ulkoisten FEM-ratkaisijoiden kanssa. Tämä ominaisuus yhdistää CAD-suunnittelun ja simulointityövirrat, mahdollistaen insinöörianalyysisovellusten kokonaisvaltaisen kehityksen.

Luo verkkopinta B-Rep-muodosta C++:lla

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
    }
}
 Suomen