]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Mantis issue 0022009: [CEA 730] MakePartition of a solid by an empty compound returns...
authorjfa <jfa@opencascade.com>
Wed, 12 Dec 2012 06:57:26 +0000 (06:57 +0000)
committerjfa <jfa@opencascade.com>
Wed, 12 Dec 2012 06:57:26 +0000 (06:57 +0000)
src/GEOMImpl/GEOMImpl_PartitionDriver.cxx

index 703735b2220ff8d3fab73da412635133ae74d940..72c03e5bb1e94fab084fa8ef69da96bceec16074 100644 (file)
@@ -147,15 +147,10 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const
       if (aShape_i.IsNull()) {
         Standard_NullObject::Raise("In Partition a shape is null");
       }
-      //
-      //BRepBuilderAPI_Copy aCopyTool (aShape_i);
+
       TopoDS_Shape aShape_i_copy;
       TNaming_CopyShape::CopyTool(aShape_i, aMapTShapes, aShape_i_copy);
-      //if (aCopyTool.IsDone())
-      //  aShape_i_copy = aCopyTool.Shape();
-      //else
-      //  Standard_NullObject::Raise("Bad shape detected");
-      //
+
       // fill aCopyMap for history
       TopTools_IndexedMapOfShape aShape_i_inds;
       TopTools_IndexedMapOfShape aShape_i_copy_inds;
@@ -384,11 +379,17 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const
   }
 
   aShape = PS.Shape();
-  if (aShape.IsNull()) return 0;
+  if (aShape.IsNull()) {
+    // Mantis issue 22009
+    if (PS.ErrorStatus() == 10 && PS.Tools().Extent() == 0 && PS.Shapes().Extent() == 1)
+      aShape = PS.Shapes().First();
+    else
+      return 0;
+  }
 
   //Alternative case to check not valid partition IPAL21418
   TopoDS_Iterator It (aShape, Standard_True, Standard_True);
-  int nbSubshapes=0;
+  int nbSubshapes = 0;
   for (; It.More(); It.Next())
     nbSubshapes++;
   if (!nbSubshapes)