BRepFeat_SplitShape: How to obtain the reverse of Left() function?

Hi all!

If I split a face with a wire using BRepFeat_SplitShape, I can obtain the whole new Shape by BRepFeat_SplitShape.Shape() and all faces outside of the wire with the Left() function. How can I get hold of the faces that are not returned by the Left() function? Does anyone have an example for using the Modified() function?



Udo's picture

For those who are interested I now tried this workaround, which is probably not the fastest and nicest one:

BRepFeat_SplitShape asplit(current_shape);


//result contains all faces including the ones we later want to extrude
TopoDS_Shape result = asplit.Shape();
//asplit.Left() delivers the faces which are not new, including the modified that lie outside the cutting wire...
//We need them later and for comparison
TopTools_ListIteratorOfListOfShape a_faces_iterator (asplit.Left());
//Build a shell out of left faces
TopoDS_Shell shellOfLeftFaces;
for(; a_faces_iterator.More(); a_faces_iterator.Next()){

//Now find the faces that are in result and not in shellOfLeftFaces (i.e. the new faces)
TopoDS_Shell shellOfNewFaces;
for(TopExp_Explorer aFaceExplorer(result , TopAbs_FACE) ; aFaceExplorer.More() ; aFaceExplorer.Next()){
TopoDS_Face aFace = TopoDS::Face(aFaceExplorer.Current());
if (!IsChild (shellOfLeftFaces, aFace)){

Standard_Boolean IsChild (const TopoDS_Shape& theParent, const TopoDS_Shape& theChild)
for (TopExp_Explorer anExp (theParent, theChild.ShapeType()); anExp.More(); anExp.Next()) {
if (anExp.Current() == theChild)
return Standard_True;
return Standard_False;

Is there an easier solution?