BOPAlgo_CheckerSI aChecker;
BOPCol_ListOfShape anArgs;
anArgs.Append(aS);
- anArgs.Append(aS);
aChecker.SetArguments(anArgs);
//
aChecker.Perform();
theTolR3D:Real from Standard;
theNC:out Curve from BOPDS;
nF1:Integer from Standard;
- nF2:Integer from Standard)
+ nF2:Integer from Standard;
+ aMVB:out MapOfInteger from BOPCol)
is protected;
ExtendedTolerance(me:out;
//
aTolE=BRep_Tool::Tolerance(aE);
aTolF=BRep_Tool::Tolerance(aF);
- //modified by NIZHNY-EMV Fri Oct 21 14:38:48 2011
- if (aTolE < 1.e-5) {
- BRepAdaptor_Curve aBAC(aE);
- if (aBAC.GetType() == GeomAbs_BSplineCurve) {
- aTolE = 1.e-5;
- }
- }
- //modified by NIZHNY-EMV Fri Oct 21 14:38:50 2011
//
BOPDS_ListOfPaveBlock& aLPB=myDS->ChangePaveBlocks(nE);
aIt.Initialize(aLPB);
aNC.InitPaveBlock1();
//
//modified by NIZHNY-EMV Tue Sep 27 09:10:52 2011
- PutPaveOnCurve(aMVOnIn, aTolR3D, aNC, nF1, nF2);
+ PutPaveOnCurve(aMVOnIn, aTolR3D, aNC, nF1, nF2, aMVB);
//modified by NIZHNY-EMV Fri Feb 18 16:42:19 2011
ProcessUnUsedVertices(nF1, nF2, aNC, aMVStick);
//pkv/904/F7
//
aLPB.Clear();
aPB1->Update(aLPB, Standard_False);
- //modified by NIZHNY-EMV Tue Oct 25 11:11:23 2011
- Standard_Real aCurveTol;
- aCurveTol = aTolR3D;
- if (aCurveTol < 1.e-5) {
- if (aIC.Type() == GeomAbs_BSplineCurve) {
- aCurveTol = 1.e-5;
- }
- }
- //modified by NIZHNY-EMV Tue Oct 25 11:11:25 2011
//
aItLPB.Initialize(aLPB);
for (; aItLPB.More(); aItLPB.Next()) {
continue;
}
//modified by NIZHNY-EMV Mon Apr 09 11:36:31 2012
- bExist=IsExistingPaveBlock(aPB, aNC, aCurveTol, aMPBOnIn);
+ bExist=IsExistingPaveBlock(aPB, aNC, aTolR3D, aMPBOnIn);
if (bExist) {
+ aSC++;
continue;
}
//
- //bExist=IsExistingPaveBlock(aPB, aNC, aTolR3D, aLSE);
- bExist=IsExistingPaveBlock(aPB, aNC, aCurveTol, aLSE);
+ bExist=IsExistingPaveBlock(aPB, aNC, aTolR3D, aLSE);
if (bExist) {
+ aSC++;
continue;
}
//
{
Standard_Boolean bVF;
Standard_Integer nV, iFlag, nVn, j, aNbEP;
- Standard_Real aT[2], aTmin, aTmax, aTV, aTol;
+ Standard_Real aT[2], aTmin, aTmax, aTV, aTol, aTolVnew;
gp_Pnt aP[2];
TopoDS_Vertex aVn;
BOPDS_ListIteratorOfListOfPave aItLP;
BOPDS_Pave aPn, aPMM[2];
//
+ aTolVnew = Precision::Confusion();
+ //
const IntTools_Curve& aIC=aNC.Curve();
aIC.Bounds(aT[0], aT[1], aP[0], aP[1]);
//
//
for (j=0; j<2; ++j) {
//if curve is closed, process only one bound
- if (j && aP[1].IsEqual(aP[0], Precision::Confusion())) {
+ if (j && aP[1].IsEqual(aP[0], aTolVnew)) {
continue;
}
//
aVn=(*(TopoDS_Vertex *)(&myDS->Shape(nVn)));
BOPTools_AlgoTools::UpdateVertex (aIC, aT[j], aVn);
//
+ aTolVnew = BRep_Tool::Tolerance(aVn);
+ //
BOPDS_ShapeInfo& aSIDS=myDS->ChangeShapeInfo(nVn);
Bnd_Box& aBoxDS=aSIDS.ChangeBox();
BRepBndLib::Add(aVn, aBoxDS);
const Standard_Real aTolR3D,
BOPDS_Curve& aNC,
const Standard_Integer nF1,
- const Standard_Integer nF2)
+ const Standard_Integer nF2,
+ BOPCol_MapOfInteger& aMVB)
{
Standard_Boolean bIsVertexOnLine, bInBothFaces;
Standard_Integer nV;
BOPDS_ShapeInfo& aSIDS=myDS->ChangeShapeInfo(nV);
Bnd_Box& aBoxDS=aSIDS.ChangeBox();
BRepBndLib::Add(aV, aBoxDS);
+ //
+ aMVB.Add(nV);
}
//modified by NIZHNY-EMV Fri Sep 23 13:35:49 2011
}
aItPB.Initialize(aMPBOnIn);
for (; aItPB.More(); aItPB.Next()) {
const Handle(BOPDS_PaveBlock)& aPB = aItPB.Value();
+ if (aPB->Pave1().Index() == nV || aPB->Pave2().Index() == nV) {
+ continue;
+ }
+ //
if (aMPB.Contains(aPB)) {
continue;
}
return;
}
//
+ BOPDS_MapOfPaveBlock aMPB;
+ BOPDS_MapIteratorOfMapOfPaveBlock aItMPB;
Standard_Integer nE;
Handle(BOPDS_PaveBlock) aPBf;
aPBf = aLPBC.First();
aCB->AddFace(nF2);
//
aPB->SetCommonBlock(aCB);
+ aMPB.Add(aPB);
}
aLPB1.Append(aPB);
}
}
//update face info
myDS->UpdateFaceInfoOn(nF1);
- myDS->UpdateFaceInfoIn(nF1);
//
myDS->UpdateFaceInfoOn(nF2);
- myDS->UpdateFaceInfoIn(nF2);
+ //
+ BOPDS_FaceInfo& aFI1 = myDS->ChangeFaceInfo(nF1);
+ BOPDS_FaceInfo& aFI2 = myDS->ChangeFaceInfo(nF2);
+ //
+ BOPDS_MapOfPaveBlock& aMPBOn1 = aFI1.ChangePaveBlocksOn();
+ BOPDS_MapOfPaveBlock& aMPBIn1 = aFI1.ChangePaveBlocksIn();
+ BOPDS_MapOfPaveBlock& aMPBOn2 = aFI2.ChangePaveBlocksOn();
+ BOPDS_MapOfPaveBlock& aMPBIn2 = aFI2.ChangePaveBlocksIn();
+ //
+ aItMPB.Initialize(aMPB);
+ for(; aItMPB.More(); aItMPB.Next()) {
+ const Handle(BOPDS_PaveBlock)& aPBnew = aItMPB.Value();
+ if (!aMPBOn1.Contains(aPBnew)) {
+ aMPBIn1.Add(aPBnew);
+ }
+ //
+ if (!aMPBOn2.Contains(aPBnew)) {
+ aMPBIn2.Add(aPBnew);
+ }
+ }
}
//modified by NIZHNY-EMV Wed Feb 15 10:08:44 2012
}
//
BOPTools_AlgoTools2D::CurveOnSurface (anEdge, myFace, aC2D,
- aFirst, aLast, aToler, Standard_True);
+ aFirst, aLast, aToler);
dt=2.*Tolerance2D(aV, aGAS);
//
//modified by NIZHNY-EMV Wed Aug 03 11:34:58 2011
aIt.Initialize(myEdges);
for(; aIt.More(); aIt.Next()) {
const TopoDS_Edge& aE=(*(TopoDS_Edge *)&aIt.Value());
- BOPTools_AlgoTools2D::CurveOnSurface(aE, myFace, aC2D, aTolE, Standard_True);
+ BOPTools_AlgoTools2D::CurveOnSurface(aE, myFace, aC2D, aTolE);
aBB.UpdateEdge(aE, aC2D, myFace, aTolE);
}
}
BOPAlgo_CheckerSI aChecker;
BOPCol_ListOfShape anArgs;
anArgs.Append(aS);
- anArgs.Append(aS);
aChecker.SetArguments(anArgs);
//
aChecker.Perform();
BOPTools_AlgoTools2D::BuildPCurveForEdgeOnFace(aE, aFFWD);
BOPTools_AlgoTools2D::CurveOnSurface(aE, aFFWD, aC2D,
aOutFirst, aOutLast,
- aOutTol, Standard_True);
+ aOutTol);
}
//
if (aC3DE->IsPeriodic()) {
aE: Edge from TopoDS;
aF: Face from TopoDS;
aC : out Curve from Geom2d;
- aToler: out Real from Standard;
- aTrim3d:Boolean from Standard);
+ aToler: out Real from Standard);
---Purpose:
--- Get P-Curve <aC> for the edge <aE> on surface <aF> .
--- If the P-Curve does not exist, build it using Make2D().
--- [aToler] - reached tolerance
- --- [aTrim3d] - trimming flag.
---
CurveOnSurface (myclass;
aE: Edge from TopoDS;
aC : out Curve from Geom2d;
aFirst: out Real from Standard;
aLast : out Real from Standard;
- aToler: out Real from Standard;
- aTrim3d:Boolean from Standard);
+ aToler: out Real from Standard);
---Purpose:
--- Get P-Curve <aC> for the edge <aE> on surface <aF> .
--- If the P-Curve does not exist, build it using Make2D().
--- [aFirst, aLast] - range of the P-Curve
--- [aToler] - reached tolerance
- --- [aTrim3d] - trimming flag.
---
HasCurveOnSurface (myclass;
aE: Edge from TopoDS;
aC : out Curve from Geom2d;
aFirst: out Real from Standard;
aLast : out Real from Standard;
- aToler: out Real from Standard;
- aTrim3d:Boolean from Standard);
+ aToler: out Real from Standard);
---Purpose:
--- Make P-Curve <aC> for the edge <aE> on surface <aF> .
--- [aFirst, aLast] - range of the P-Curve
--- [aToler] - reached tolerance
- --- [aTrim3d] - trimming flag.
---
MakeCurveOnSurface (myclass;
aC : out Curve from Geom2d;
aFirst: out Real from Standard;
aLast : out Real from Standard;
- aToler: out Real from Standard;
- aTrim3d:Boolean from Standard);
+ aToler: out Real from Standard);
---Purpose:
--- Same as Make2D()
---
}
- BOPTools_AlgoTools2D::CurveOnSurface(aE, aF, aC2D, aTolPC, Standard_True);
+ BOPTools_AlgoTools2D::CurveOnSurface(aE, aF, aC2D, aTolPC);
aTolEdge=BRep_Tool::Tolerance(aE);
Handle(Geom2d_Curve) aC2D;
Standard_Real aToler, aFirst, aLast;
- BOPTools_AlgoTools2D::CurveOnSurface (aE, aF, aC2D, aFirst, aLast, aToler, Standard_True);
+ BOPTools_AlgoTools2D::CurveOnSurface (aE, aF, aC2D, aFirst, aLast, aToler);
aC2D->D0(aParameter, aP2D);
U=aP2D.X();
V=aP2D.Y();
void BOPTools_AlgoTools2D::CurveOnSurface (const TopoDS_Edge& aE,
const TopoDS_Face& aF,
Handle(Geom2d_Curve)& aC2D,
- Standard_Real& aToler,
- const Standard_Boolean trim3d)
+ Standard_Real& aToler)
{
Standard_Real aFirst, aLast;
- BOPTools_AlgoTools2D::CurveOnSurface (aE, aF, aC2D, aFirst, aLast, aToler, trim3d);
+ BOPTools_AlgoTools2D::CurveOnSurface (aE, aF, aC2D, aFirst, aLast, aToler);
return;
}
Handle(Geom2d_Curve)& aC2D,
Standard_Real& aFirst,
Standard_Real& aLast,
- Standard_Real& aToler,
- const Standard_Boolean trim3d)
+ Standard_Real& aToler)
{
Standard_Boolean aHasOld;
Handle(Geom2d_Curve) C2D;
return;
}
- BOPTools_AlgoTools2D::Make2D(aE, aF, C2D, aFirst, aLast, aToler, trim3d);
+ BOPTools_AlgoTools2D::Make2D(aE, aF, C2D, aFirst, aLast, aToler);
aC2D=C2D;
return;
}
return;
}
//
- BOPTools_AlgoTools2D::CurveOnSurface(aE, aF, aC2D, aTolE, Standard_True);
+ BOPTools_AlgoTools2D::CurveOnSurface(aE, aF, aC2D, aTolE);
aBB.UpdateEdge(aE, aC2D, aF, aTolE);
//
return;
Handle(Geom2d_Curve)& aC2D,
Standard_Real& aFirst,
Standard_Real& aLast,
- Standard_Real& aToler,
- const Standard_Boolean trim3d)
+ Standard_Real& aToler)
{
Standard_Boolean aLocIdentity;
Standard_Real f3d, l3d;
return;
}
- Handle(Geom_Curve) C3D3, C3D2, C3D;
+ Handle(Geom_Curve) C3D2, C3D;
C3D = BRep_Tool::Curve(aE, aLoc, f3d, l3d);
//
if (C3D.IsNull()) {
DownCast(C3D->Transformed(aLoc.Transformation()));
}
- if (trim3d) {
-
- C3D3=C3D2;
- }
-
- else {
- C3D3=C3D2;
- }
//
aToler=.5*BRep_Tool::Tolerance(aE);
- BOPTools_AlgoTools2D::MakePCurveOnFace(aF, C3D3, f3d, l3d, aC2D, aToler);
+ BOPTools_AlgoTools2D::MakePCurveOnFace(aF, C3D2, f3d, l3d, aC2D, aToler);
//
aFirst = f3d;
aLast = l3d;
Handle(Geom2d_Curve)& aC2D,
Standard_Real& aFirst,
Standard_Real& aLast,
- Standard_Real& aToler,
- const Standard_Boolean trim3d)
+ Standard_Real& aToler)
{
- BOPTools_AlgoTools2D::Make2D(aE, aF, aC2D, aFirst, aLast, aToler, trim3d);
+ BOPTools_AlgoTools2D::Make2D(aE, aF, aC2D, aFirst, aLast, aToler);
}
//=======================================================================
Handle(Geom_Surface) aS1=BRep_Tool::Surface(aF1);
Handle(Geom2d_Curve)aC2D1;
- BOPTools_AlgoTools2D::CurveOnSurface(aE, aF1, aC2D1, aTolPC, Standard_True);
+ BOPTools_AlgoTools2D::CurveOnSurface(aE, aF1, aC2D1, aTolPC);
aC2D1->D0(aT, aP2D);
U=aP2D.X();