The problem that the Shape after fuse contains two surface elements


I use OpenCascade V7.4.0 for windows 32bit.

I fused the plane (Face.png-①) created by Face (Face.png-②) and Bnd_Box.

However, the shape after fuse contains two faces, and we are facing the problem of not being properly fused.

※It is drawn in the XZ plane and the two faces overlap.

I want to fuse the  normally.

Is there any good way?


TopoDS_Shape shapePlane;//Shape with (Face.png-①) 

Bnd_Box bb;//Box with (Face.png-②)  face

        bb.SetGap( 0.0 );

        double dY = pntCenter.Y();

        double dMaxZ = bb.CornerMax().Z();

        double dMinZ = bb.CornerMin().Z();

        double dMaxX = bb.CornerMax().X();

        double dMinX = bb.CornerMin().X();

        // Create a plane in the XZ plane

        gp_Pnt pntXZLeftUp( dMaxX, dY, dMinZ );

        gp_Pnt pntXZLeftDown( dMinX, dY, dMinZ );

        gp_Pnt pntXZRightUp( dMaxX, dY, dMaxZ );

        gp_Pnt pntXZRightDown( dMinX, dY, dMaxZ );

        BRepBuilderAPI_MakeWire makeWire;

        makeWire.Add( BRepBuilderAPI_MakeEdge( pntXZRightUp, pntXZLeftUp ) );

        makeWire.Add( BRepBuilderAPI_MakeEdge( pntXZLeftUp, pntXZLeftDown ) );

        makeWire.Add( BRepBuilderAPI_MakeEdge( pntXZLeftDown, pntXZRightDown ) );

        makeWire.Add( BRepBuilderAPI_MakeEdge( pntXZRightDown, pntXZRightUp ) );


BRepBuilderAPI_MakeFace makerFace( makeWire );

TopoDS_Face facePlane = makerFace.Face();//(Face.png-②)  face

TopoDS_Shape shapeFuse = FusedShape( shapePlane,facePlane );

ShapeUpgrade_UnifySameDomain unif( shapeFuse, true, true, false ); 


shapeFuse = unif.Shape();

TopExp_Explorer ex_fase( shapeComplement, TopAbs_FACE );

    short sCount = 0;

    for(; ex_fase.More(); ex_fase.Next()){

        faceFuse = ex_fase.Current();



    // ① If the fused shape has two faces, a fuse error

    if( sCount > 1 ){



In the above source, there are two shapes that have been fused at point ①, and Fuse has failed. (shaped_Face.png)