From 27ffbb5d926fbdd6291f9c0cdef19ff6f8a7db3a Mon Sep 17 00:00:00 2001 From: jfa Date: Wed, 12 Dec 2012 06:57:26 +0000 Subject: [PATCH] Mantis issue 0022009: [CEA 730] MakePartition of a solid by an empty compound returns an error --- src/GEOMImpl/GEOMImpl_PartitionDriver.cxx | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx index 703735b22..72c03e5bb 100644 --- a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx @@ -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) -- 2.39.2