** Cylinder-Torus Unite > non-G1 and overlapping edges ** // Load torus and cylinder solids. TopoDS_Shape torusShp; BRep_Builder builder; BRepTools::Read(torusShp, "torus.brep", builder); TopoDS_Shape cylinderShp; BRepTools::Read(cylinderShp, "cylinder.brep", builder); TopTools_ListOfShape targetShpList; targetShpList.Append(torusShp); TopTools_ListOfShape toolShpList; toolShpList.Append(cylinderShp); // Perform boolean. BRepAlgoAPI_Fuse bop; bop.SetArguments(targetShpList); bop.SetTools(toolShpList); bop.SetFuzzyValue(tolerance); bop.SetNonDestructive(Standard_True); bop.SetUseOBB(Standard_True); bop.Build(); if (bop.HasErrors()) { Handle(Message_Report) msgReport = bop.GetReport(); const Message_ListOfAlert &msgList = msgReport->GetAlerts(Message_Info); } Standard_Boolean success = bop.IsDone();