// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
#include <GEOMImpl_ShapeDriver.hxx>
unsigned int ind, nbshapes = aShapes->Length();
// add faces
- BRepBuilderAPI_Sewing aSewing(Precision::Confusion()*10.0);
+ BRepBuilderAPI_Sewing aSewing (Precision::Confusion()*10.0);
for (ind = 1; ind <= nbshapes; ind++) {
Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aShapes->Value(ind));
TopoDS_Shape aShape_i = aRefShape->GetValue();
aSewing.Perform();
TopoDS_Shape sh = aSewing.SewedShape();
- if( sh.ShapeType()==TopAbs_FACE && nbshapes==1 ) {
+
+ if (sh.ShapeType()==TopAbs_FACE && nbshapes==1) {
// case for creation of shell from one face - PAL12722 (skl 26.06.2006)
TopoDS_Shell ss;
B.MakeShell(ss);
ish++;
}
- if (ish != 1)
- aShape = aSewing.SewedShape();
+ if (ish != 1) {
+ // try the case of one face (Mantis issue 0021809)
+ TopExp_Explorer expF (sh, TopAbs_FACE);
+ Standard_Integer ifa = 0;
+ for (; expF.More(); expF.Next()) {
+ aShape = expF.Current();
+ ifa++;
+ }
+
+ if (ifa == 1) {
+ TopoDS_Shell ss;
+ B.MakeShell(ss);
+ B.Add(ss,aShape);
+ aShape = ss;
+ }
+ else {
+ aShape = aSewing.SewedShape();
+ }
+ }
}
}