Alle Kanten in TopoDS_Face mit OpenCASCADE iterieren

English Deutsch

Du kannst die OCCUtils-Bibliothek verwenden, um alle TopoDS_Face-Instanzen in einem TopoDS_Solid zu iterieren

iterate_edges_occutils.cpp
#include <occutils/ShapeComponents.hxx>

using namespace OCCUtils;

TopoDS_Shape myShape = /* ... */;

auto edges = ShapeComponents::AllEdgesWithin(myShape);

// Alle Solids iterieren
for(const TopoDS_Edge& edge : edges) {
    /* ... */
}

Alternativ kannst du diesen reinen OpenCASCADE-Quellcode ohne OCCUtils verwenden:

iterate_edges_raw.cpp
#include <TopTools_IndexedMapOfShape.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
#include <TopExp.hxx>

TopoDS_Shape myShape = /* ... */;

TopTools_IndexedMapOfShape faces;
TopExp::MapShapes (myShape, TopAbs_EDGE, faces);

for (int i = 1; i <= faces.Extent (); i++) {
    TopoDS_Edge face = TopoDS::Edge(edges(i));
    /* ... */
}

Wenn du die Wahl hast, empfehle ich OCCUtils zu verwenden, da es deinen Code viel lesbarer macht als die Verwendung der rohen OpenCASCADE-API.


Check out similar posts by category: C/C++, OpenCASCADE