Mantis issue 0021129: EDF 1541 GEOM: Problem with GetInPlace.

This commit is contained in:
jfa 2011-06-16 09:30:35 +00:00
parent 82dd601449
commit 10e60380a9
2 changed files with 161 additions and 154 deletions

View File

@ -316,7 +316,10 @@ void GEOMAlgo_GetInPlace::Intersect()
//
const TopoDS_Shape& aS1=aMS1(i);
BRepBndLib::Add(aS1, aBox1);
aBox1.SetGap(myTolerance);
//modified by NIZNHY-PKV Fri Jun 10 08:20:03 2011f
//aBox1.SetGap(myTolerance);
aBox1.Enlarge(myTolerance);
//modified by NIZNHY-PKV Fri Jun 10 08:20:06 2011t
//
aTreeFiller.Add(i, aBox1);
}
@ -330,7 +333,10 @@ void GEOMAlgo_GetInPlace::Intersect()
//
const TopoDS_Shape& aS2=aMS2(j);
BRepBndLib::Add(aS2, aBox2);
aBox2.SetGap(myTolerance);
//modified by NIZNHY-PKV Fri Jun 10 08:20:23 2011f
//aBox2.SetGap(myTolerance);
aBox2.Enlarge(myTolerance);
//modified by NIZNHY-PKV Fri Jun 10 08:20:25 2011t
//
aSelector.Clear();
aSelector.SetBox(aBox2);
@ -395,7 +401,7 @@ void GEOMAlgo_GetInPlace::PerformVV()
//=======================================================================
void GEOMAlgo_GetInPlace::FillEdgesOn()
{
Standard_Integer i, aNbE, aNbSOn;
Standard_Integer i, aNbE;
TopoDS_Iterator aIt;
TopTools_IndexedMapOfShape aME;
TopTools_MapIteratorOfMapOfShape aItMS;
@ -413,7 +419,7 @@ void GEOMAlgo_GetInPlace::FillEdgesOn()
const TopoDS_Shape& aV1=aIt.Value();
if (myShapesOn.IsBound(aV1)) {
const TopTools_MapOfShape& aMSOn=myShapesOn.Find(aV1);
aNbSOn=aMSOn.Extent();
//aNbSOn=aMSOn.Extent();
aItMS.Initialize(aMSOn);
for (; aItMS.More(); aItMS.Next()) {
const TopoDS_Shape& aV2=aItMS.Key();
@ -563,7 +569,7 @@ void GEOMAlgo_GetInPlace::PerformVF()
//=======================================================================
void GEOMAlgo_GetInPlace::FillFacesOn()
{
Standard_Integer i, j, aNbF, aNbE, aNbSOn;
Standard_Integer i, j, aNbF, aNbE;
TopoDS_Iterator aIt;
TopTools_IndexedMapOfShape aMF, aME;
TopTools_MapIteratorOfMapOfShape aItMS;
@ -609,7 +615,6 @@ void GEOMAlgo_GetInPlace::FillFacesOn()
void GEOMAlgo_GetInPlace::PerformEF()
{
Standard_Boolean bFound, bHasOnF, bHasInF;
Standard_Integer i, aNbE;
TopoDS_Iterator aIt;
TopTools_MapOfShape aMSX;
//
@ -715,7 +720,7 @@ void GEOMAlgo_GetInPlace::PerformFF()
//=======================================================================
void GEOMAlgo_GetInPlace::FillSolidsOn()
{
Standard_Integer i, j, aNbS, aNbF, aNbSOn;
Standard_Integer i, j, aNbS, aNbF;
TopTools_IndexedMapOfShape aMS, aMF;
TopTools_MapIteratorOfMapOfShape aItMS;
//
@ -757,8 +762,7 @@ void GEOMAlgo_GetInPlace::FillSolidsOn()
//=======================================================================
void GEOMAlgo_GetInPlace::PerformZF()
{
Standard_Boolean bFound, bHasOnF, bHasInF;
Standard_Integer i, aNbE;
Standard_Boolean bFound, bHasOnF;
TopTools_MapOfShape aMSX;
//
myErrorStatus=0;
@ -1118,7 +1122,7 @@ void GEOMAlgo_GetInPlace::FillShapesOn(const TopoDS_Shape& aS1,
void MapBRepShapes(const TopoDS_Shape& aS,
TopTools_IndexedMapOfShape& aM)
{
Standard_Boolean bHasBRep, bDegenerated;
Standard_Boolean bDegenerated;
TopAbs_ShapeEnum aType;
TopoDS_Iterator aIt;
//

View File

@ -3858,10 +3858,13 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::GetInPlace (Handle(GEOM_Object)
return NULL;
}
if (!aGIP.IsFound()) {
SetErrorCode(NOT_FOUND_ANY);
return NULL;
}
// aGIP.IsFound() returns true only when the whole theShapeWhat
// is found (as one shape or several parts). But we are also interested
// in the partial result, that is why this check is commented.
//if (!aGIP.IsFound()) {
// SetErrorCode(NOT_FOUND_ANY);
// return NULL;
//}
const TopTools_DataMapOfShapeListOfShape& aDMSLS = aGIP.Images();
if (!aDMSLS.IsBound(aWhat)) {