-// 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
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
// File: NMTTools_PaveFiller_6.cxx
// Created: Fri Dec 19 10:27:31 2003
// Author: Peter KURNEV
-#include <NMTTools_PaveFiller.ixx>
+#include <NMTTools_PaveFiller.hxx>
#include <Basics_OCCTVersion.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
#include <TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger.hxx>
+
#include <Geom_TrimmedCurve.hxx>
#include <Geom2d_TrimmedCurve.hxx>
#include <Geom2d_Curve.hxx>
#include <BOPTools_PaveBlockIterator.hxx>
#include <BOPTools_Tools2D.hxx>
#include <BOPTools_Tools3D.hxx>
+#include <BOPTools_Curve.hxx>
#include <NMTDS_Iterator.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
static
Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE,
-#if OCC_VERSION_LARGE > 0x06050200
const Handle(IntTools_Context)& aCtx);
-#else
- IntTools_Context& aCtx);
-#endif
//=======================================================================
// function: PerformFF
//
BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences();
//
-
+
//
// 1. Make Section Edges from intersection curves
// between each pair of faces
//
// Checking of validity in 2D
//
-#if OCC_VERSION_LARGE > 0x06050200
bIsValidIn2D=myContext->IsValidBlockForFaces(aT1, aT2, aIC, aF1, aF2, aTol2D);
-#else
- bIsValidIn2D=myContext.IsValidBlockForFaces(aT1, aT2, aIC, aF1, aF2, aTol2D);
-#endif
if (!bIsValidIn2D) {
continue;
}
{
Standard_Real aT;
//
-#if OCC_VERSION_LARGE > 0x06050200
myContext->IsVertexOnLine(aV1, aIC, aTolR3D, aT);
-#else
- myContext.IsVertexOnLine(aV1, aIC, aTolR3D, aT);
-#endif
BOPTools_Tools::UpdateVertex (aIC, aT, aV1);
//
-#if OCC_VERSION_LARGE > 0x06050200
myContext->IsVertexOnLine(aV2, aIC, aTolR3D, aT);
-#else
- myContext.IsVertexOnLine(aV2, aIC, aTolR3D, aT);
-#endif
BOPTools_Tools::UpdateVertex (aIC, aT, aV2);
}
//
//
aBB.MakeVertex (aVM, aPM, aTolC);
//
-#if OCC_VERSION_LARGE > 0x06050200
iVM=myContext->ComputeVE(aVM, aE2, aTmp);
-#else
- iVM=myContext.ComputeVE(aVM, aE2, aTmp);
-#endif
//
return iVM;
}
const TopoDS_Face aF1=TopoDS::Face(myDS->GetShape(nF1));//mpv
const TopoDS_Face aF2=TopoDS::Face(myDS->GetShape(nF2));//mpv
//
-#if OCC_VERSION_LARGE > 0x06050200
bVF=myContext->IsValidPointForFaces (aP1, aF1, aF2, aTolR3D);
-#else
- bVF=myContext.IsValidPointForFaces (aP1, aF1, aF2, aTolR3D);
-#endif
if (bVF) {
PutBoundPaveOnCurve (aP1, aT1, aBC, aFFi);
}
//
-#if OCC_VERSION_LARGE > 0x06050200
bVF=myContext->IsValidPointForFaces (aP2, aF1, aF2, aTolR3D);
-#else
- bVF=myContext.IsValidPointForFaces (aP2, aF1, aF2, aTolR3D);
-#endif
if (bVF) {
PutBoundPaveOnCurve (aP2, aT2, aBC, aFFi);
}
}
// VE
if (!iV) {
-#if OCC_VERSION_LARGE > 0x06050200
iVE=myContext->ComputeVE (aV11, aE2, aTE);
-#else
- iVE=myContext.ComputeVE (aV11, aE2, aTE);
-#endif
if (!iVE) {
iCount++;
if (iCount>iCountExt) {
}
// VE
if (!iV) {
-#if OCC_VERSION_LARGE > 0x06050200
iVE=myContext->ComputeVE (aV12, aE2, aTE);
-#else
- iVE=myContext.ComputeVE (aV12, aE2, aTE);
-#endif
if (!iVE) {
iCount++;
if (iCount>iCountExt) {
//purpose :
//=======================================================================
Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE,
-#if OCC_VERSION_LARGE > 0x06050200
const Handle(IntTools_Context)& aCtx)
-#else
- IntTools_Context& aCtx)
-#endif
{
Standard_Boolean bRet;
Standard_Integer iErr;
continue;
}
//
-#if OCC_VERSION_LARGE > 0x06050200
bIsVertexOnLine=myContext->IsVertexOnLine(aV, aC, aTolR3D, aT);
-#else
- bIsVertexOnLine=myContext.IsVertexOnLine(aV, aC, aTolR3D, aT);
-#endif
//
//
if (bIsVertexOnLine) {
//
//=======================================================================
//function : FillFaceInfo
-//purpose :
+//purpose :
//=======================================================================
void NMTTools_PaveFiller::FillFaceInfo()
{
Standard_Integer i, aNbS, aNbFFs, nF, aNbVFs, aNbEFs, j, n1, n2, nX, aNbF;
TopAbs_ShapeEnum aType;
TopoDS_Shape aS;
- TColStd_ListIteratorOfListOfInteger aItF;
+ TColStd_ListIteratorOfListOfInteger aItF;
BOPTools_ListIteratorOfListOfPaveBlock anItPB;
NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo aItMFI;
NMTTools_ListIteratorOfListOfCommonBlock aItCB;
//=======================================================================
//function : CorrectTolR3D
//purpose : Attempt to correct the value of tolerance aTolR3D for
-// the intersection curve in order to
+// the intersection curve in order to
// compel it to pass through the sticks.
-// Prerequisites:
+// Prerequisites:
// 2. The are based on B-Spline surfaces;
// 1. There is at least the one intersection curve;
// 2. The faces have stick vertices to catch the curve;
// 3. The intersection angle is rather small (0.7-7 deg)
-//
+//
//=======================================================================
void NMTTools_PaveFiller::CorrectTolR3D(const BOPTools_SSInterference& aFF,
const TColStd_MapOfInteger& aMVStick,
Standard_Real& aTolR3D)
-
+
{
Standard_Boolean bHasBounds;
Standard_Integer i, nF[2], nV, aNbCurves;
aC3D->D0(aT, aP);
//
for (i=0; i<2; ++i) {
-#if OCC_VERSION_LARGE > 0x06050200
GeomAPI_ProjectPointOnSurf& aPPS=myContext->ProjPS(aF[i]);
-#else
- GeomAPI_ProjectPointOnSurf& aPPS=myContext.ProjPS(aF[i]);
-#endif
aPPS.Perform(aP);
aPPS.LowerDistanceParameters(aU, aV);
BOPTools_Tools3D::GetNormalToSurface(aS[i], aU, aV, aDN[i]);
}
}
//
-
+
aTolR=aTolVmax/aA;
if (aTolR<aTolTresh) {
aTolR3D=aTolR;
Standard_Boolean bIsClosed, bHasBounds, bAdded;
Standard_Integer nVC, j;
Standard_Real aT[2], aTolR3D, aTC, dT, aTx;
- gp_Pnt aP[2] ;
+ gp_Pnt aP[2] ;
BOPTools_Pave aPVx;
BOPTools_ListIteratorOfListOfPave aItLP;
//
if (!bHasBounds){
return;
}
- //
+ //
bAdded=Standard_False;
dT=Precision::PConfusion();
aTolR3D=aFFi.TolR3D();