-// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
const Standard_Integer ,
NMTTools_IndexedDataMapOfIndexedMapOfInteger& );
+//modified by NIZNHY-PKV Thu Feb 16 12:24:52 2012f
+static
+ Standard_Boolean IsClosed(const TopoDS_Edge& ,
+ const TopoDS_Face& );
+//modified by NIZNHY-PKV Thu Feb 16 12:24:56 2012t
//=======================================================================
//function : FillImagesFaces
NMTTools_PaveFiller* pPF=myPaveFiller;
NMTDS_InterfPool* pIP=pPF->IP();
BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences();
- IntTools_Context& aCtx= pPF->ChangeContext();
+ const Handle(IntTools_Context)& aCtx= pPF->Context();
//
Standard_Boolean bToReverse, bIsClosed, bIsDegenerated;
Standard_Integer i, aNb, aNbF, nF;
}
//
bIsDegenerated=BRep_Tool::Degenerated(aE);
- bIsClosed=BRep_Tool::IsClosed(aE, aF);
+ //modified by NIZNHY-PKV Wed Mar 07 07:46:09 2012f
+ bIsClosed=IsClosed(aE, aF);
+ //bIsClosed=BRep_Tool::IsClosed(aE, aF);
+ //modified by NIZNHY-PKV Wed Mar 07 07:46:13 2012t
//
const TopTools_ListOfShape& aLIE=myImages.Image(aE);
aIt.Initialize(aLIE);
NMTTools_PaveFiller* pPF=myPaveFiller;
NMTDS_InterfPool* pIP=pPF->IP();
BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences();
- IntTools_Context& aCtx= pPF->ChangeContext();
+ const Handle(IntTools_Context)& aCtx= pPF->Context();
//
//
//mySameDomainShapes.Clear();
// 2. Find Chains
NMTTools_IndexedDataMapOfShapeIndexedMapOfShape aMC;
//
- NMTTools_Tools::FindChains(aLCS, aMC);
+ NMTTools_Tools::FindChains(aLCS, aMC);
//
Standard_Boolean bIsImage;
Standard_Integer aIx, aIxMin, aNbMSDF, k, aNbMFj;
const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
NMTTools_PaveFiller* pPF=myPaveFiller;
NMTDS_InterfPool* pIP=pPF->IP();
- IntTools_Context& aCtx= pPF->ChangeContext();
+ const Handle(IntTools_Context)& aCtx= pPF->Context();
//
BOPTools_CArray1OfVSInterference& aVFs=pIP->VSInterferences();
BOPTools_CArray1OfESInterference& aEFs=pIP->ESInterferences();
for (; aIt.More(); aIt.Next()) {
TopoDS_Face aFx=TopoDS::Face(aIt.Value());
// update classifier
- IntTools_FClass2d& aClsf=aCtx.FClass2d(aFx);
+ IntTools_FClass2d& aClsf=aCtx->FClass2d(aFx);
aClsf.Init(aFx, aTol);
//
- iFlag=aCtx.ComputeVS (aV, aFx, aU1, aU2);
+ iFlag=aCtx->ComputeVS (aV, aFx, aU1, aU2);
if (!iFlag) {
aBB.Add(aFx, aV);
break;
else {
const TopoDS_Face& aFx=TopoDS::Face(aF);
// update classifier
- IntTools_FClass2d& aClsf=aCtx.FClass2d(aFx);
+ IntTools_FClass2d& aClsf=aCtx->FClass2d(aFx);
aClsf.Init(aFx, aTol);
//
- iFlag=aCtx.ComputeVS (aV, aFx, aU1, aU2);
+ iFlag=aCtx->ComputeVS (aV, aFx, aU1, aU2);
if (!iFlag) {
TopoDS_Face aFz;
//
}
}
+//=======================================================================
+//function : IsClosed
+//purpose :
+//=======================================================================
+Standard_Boolean IsClosed(const TopoDS_Edge& aE,
+ const TopoDS_Face& aF)
+{
+ Standard_Boolean bRet;
+ //
+ bRet=BRep_Tool::IsClosed(aE, aF);
+ if (bRet) {
+ Standard_Integer iCnt;
+ TopoDS_Shape aE1;
+ //
+ bRet=!bRet;
+ iCnt=0;
+ TopExp_Explorer aExp(aF, TopAbs_EDGE);
+ for (; aExp.More(); aExp.Next()) {
+ const TopoDS_Shape& aEx=aExp.Current();
+ //
+ if (aEx.IsSame(aE)) {
+ ++iCnt;
+ if (iCnt==1) {
+ aE1=aEx;
+ }
+ else if (iCnt==2){
+ aE1.Reverse();
+ bRet=(aE1==aEx);
+ break;
+ }
+ }
+ }
+ }
+ return bRet;
+}
+
/*
{
TopoDS_Compound aCx;