//=======================================================================
void BOPAlgo_Tools::PerformCommonBlocks(BOPDS_IndexedDataMapOfPaveBlockListOfPaveBlock& aMPBLPB,
const Handle(NCollection_BaseAllocator)& aAllocator,
- BOPDS_PDS& pDS)
+ BOPDS_PDS& pDS,
+ const Handle(IntTools_Context)& theContext)
{
Standard_Integer aNbCB;
//
aCB->SetFaces(aLFaces);
for (aItLPB.Initialize(aLPB); aItLPB.More(); aItLPB.Next())
pDS->SetCommonBlock(aItLPB.Value(), aCB);
+
+ // Compute tolerance for Common Block
+ Standard_Real aTolCB = BOPAlgo_Tools::ComputeToleranceOfCB(aCB, pDS, theContext);
+ aCB->SetTolerance(aTolCB);
}
}
//=======================================================================
//=======================================================================
void BOPAlgo_Tools::PerformCommonBlocks(const BOPDS_IndexedDataMapOfPaveBlockListOfInteger& aMPBLI,
const Handle(NCollection_BaseAllocator)& ,//aAllocator
- BOPDS_PDS& pDS)
+ BOPDS_PDS& pDS,
+ const Handle(IntTools_Context)& theContext)
{
Standard_Integer nF, i, aNb;
TColStd_ListIteratorOfListOfInteger aItLI;
}
aCB->AppendFaces(aNewFaces);
pDS->SetCommonBlock(aPB, aCB);
+ // Compute tolerance for Common Block
+ Standard_Real aTolCB = BOPAlgo_Tools::ComputeToleranceOfCB(aCB, pDS, theContext);
+ aCB->SetTolerance(aTolCB);
}
}
//=======================================================================
aPBR->Range(aT1, aT2);
aDt = (aT2 - aT1) / (aNbPnt + 1);
//
+ Handle(IntTools_Context) aCtx = theContext;
+ if (aCtx.IsNull())
+ aCtx = new IntTools_Context();
+
// compute max tolerance for common blocks on edges
if (aLPB.Extent() > 1) {
// compute max distance between edges
const TopoDS_Edge& aE = *(TopoDS_Edge*)&theDS->Shape(nE);
aTol = BRep_Tool::Tolerance(aE);
//
- aProjPC = theContext->ProjPC(aE);
+ aProjPC = aCtx->ProjPC(aE);
//
aT = aT1;
for (Standard_Integer i=1; i <= aNbPnt; i++) {
const TopoDS_Face& aF = *(TopoDS_Face*)&theDS->Shape(nF);
aTol = BRep_Tool::Tolerance(aF);
//
- aProjPS = theContext->ProjPS(aF);
+ aProjPS = aCtx->ProjPS(aF);
//
aT = aT1;
for (Standard_Integer i=1; i <= aNbPnt; i++) {