//=======================================================================
TopoDS_Shape GEOMImpl_GlueDriver::GlueFacesWithWarnings (const TopoDS_Shape& theShape,
const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids,
TCollection_AsciiString& theWarning) const
{
Standard_Integer iErr, iWrn;
aGluer.SetShape(theShape);
aGluer.SetTolerance(theTolerance);
aGluer.SetCheckGeometry(Standard_True);
+ aGluer.SetKeepNonSolids(doKeepNonSolids);
aGluer.Perform();
//purpose :
//=======================================================================
TopoDS_Shape GEOMImpl_GlueDriver::GlueFaces (const TopoDS_Shape& theShape,
- const Standard_Real theTolerance)
+ const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids)
{
Standard_Integer iErr, iWrn;
TopoDS_Shape aRes;
aGluer.SetShape(theShape);
aGluer.SetTolerance(theTolerance);
aGluer.SetCheckGeometry(Standard_True);
+ aGluer.SetKeepNonSolids(doKeepNonSolids);
aGluer.Perform();
//=======================================================================
TopoDS_Shape GEOMImpl_GlueDriver::GlueFacesByList (const TopoDS_Shape& theShape,
const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids,
const TopTools_MapOfShape& aFaces)
{
TopoDS_Shape aRes;
aGluer.SetShape(theShape);
aGluer.SetTolerance(theTolerance);
+ aGluer.SetKeepNonSolids(doKeepNonSolids);
aGluer.Perform();
Standard_Integer iErr = aGluer.ErrorStatus();
if (iErr) return aRes;
Standard_Real tol3d = aCI.GetTolerance();
+ Standard_Boolean aKeepNonSolids = aCI.GetKeepNonSolids();
+
if (aType == GLUE_FACES) {
- aShape = GlueFacesWithWarnings(aShapeBase, tol3d, aWrn);
+ aShape = GlueFacesWithWarnings(aShapeBase, tol3d, aKeepNonSolids, aWrn);
}
else { // aType == GLUE_FACES_BY_LIST
Handle(TColStd_HSequenceOfTransient) SF = aCI.GetFaces();
if(!aFaces.Contains(aFace))
aFaces.Add(aFace);
}
- aShape = GlueFacesByList(aShapeBase, tol3d, aFaces);
+ aShape = GlueFacesByList(aShapeBase, tol3d, aKeepNonSolids, aFaces);
}
if (aShape.IsNull()) return 0;