BRepAlgoAPI_Fuse Modified()


I used BRepAlgoAPI_Fuse to stitch to TopoDS_Face's:

BRepAlgoAPI_Fuse fuser(*second_face, *first_face);

after that, I want to know which Edges on the two Faces are not changed, so I don't need to assign a new id to them. But when I query for fuser.Modified(*second_face) or fuser.Modified2(*second_face), they both give nothing. I know it should return me fuser.Shape() as the modified shape. of course, querying for coresponding underlying edges for modified shapes, returns nothing too.

How can I avoid this bug and get the map between the old_edge and new generated edge?

Thank you for your advise!


Laura's picture

Hi Jane,

I am having the same problem. Did you find a solution?


Laura's picture

Being more specific....

The problem is that after fusing 2 crossing wires made up of 4 and 3 edges respectively, I get empty lists for modified and generated. The result shape has 9 edges and 10 vertices, resulting from the split of one of the edges in each shape. The size of both lists is 0.

The code I am using is below:

firstShape = .......
secondShape = ......

BRepAlgoAPI_Fuse fuseResult(firstShape, secondShape);
TopoDS_Shape mFuseResultShape;

if (fuseResult.IsDone())
mFuseResultShape = fuseResult.Shape();

const TopTools_ListOfShape& modifiedShapes = fuseResult.Modified(mFuseResultShape);
printf("\nSize of modified shapes:%i\n",modifiedShapes.Extent());

TopTools_ListIteratorOfListOfShape it;
for (it.Initialize(modifiedShapes); it.More(); it.Next())

const TopTools_ListOfShape& generatedShapes = fuseResult.Generated(mFuseResultShape);
printf("\nSize of generated shapes:%i\n",generatedShapes.Extent());

TopTools_ListIteratorOfListOfShape it2;
for (it2.Initialize(generatedShapes); it2.More(); it2.Next())