BRepAlgoAPI_Fuse have a different edge?

Hi,I use BRepAlgoAPI_Fuse to merge two face, then I display the edge of the BRepAlgoAPI_Fuse result,but it seems to have a different edge,like the picture 2.

TopoDS_Shape FusedShape;
FusedShape = BRepAlgoAPI_Fuse(shape1,shape2);
for (TopExp_Explorer iter(FusedShape, TopAbs_EDGE); iter.More(); iter.Next())
{
Handle(AIS_Shape) outShape = new AIS_Shape(iter.Current());
myAISContext()->SetColor(outShape, Quantity_Color(1.0, 0.0, 0.0, Quantity_TOC_RGB), Standard_False);
myAISContext()->Display(outShape, Standard_False);
myAISContext()->UpdateCurrentViewer();
}
return;

Attachments: 
Mikhail Sazonov's picture

It seems the edges E1 and E2 interfer with each other, so in the result you see one red line between them.The edge E3 intersects both E1 and E2 and intersections points are interferring and produce one point somewhere in the middle, and therefore you see the result edge as having a bend and passing through this point.

Attachments: 
Mikhail Sazonov's picture

P.S. If the operation modifies an edge it always produces a new edge, that may be different from original one.

TIAN DAJIANG's picture

I want to get the out contours and inner contours for some connect face(picture),then I use this contours for Laser processing. Now first I BRepAlgoAPI_Fuse all the face,then use ShapeAnalysis_FreeBounds get the contours,but just like as mentioned above, I always get different edge wihth original one?

Attachments: 
Mikhail Sazonov's picture

It is not a good idea to use fuse operation in your case. Why don't you just take free bounds without making fuse? If your faces are not connected (not a watertight model) then you need to run sewing algo on them.

TIAN DAJIANG's picture

Thank You!

TIAN DAJIANG's picture

Thanks your reply,look at my new picture,I merge the face Face1 and Face2,It does not have E3, and E1/E2 belong to different face,dont interfer with each other. When i merge this two face,why the result edge is different with E1?

Attachments: 
Eugene Zaliznyak's picture

I think you should manipulate by SetFuzzyValue for boolean operation.