-// 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
//
// File: GEOMAlgo_BuilderTools.cxx
-// Created:
// Author: Peter KURNEV
-// <pkv@irinox>
-//
-#include <GEOMAlgo_BuilderTools.ixx>
+
+#include <GEOMAlgo_BuilderTools.hxx>
+
+#include <Basics_OCCTVersion.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <TopoDS_Edge.hxx>
#include <TopExp_Explorer.hxx>
+#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version
+#include <TopExp.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+#endif
+
#include <BRep_Tool.hxx>
#include <BRepBndLib.hxx>
#include <BRepMesh_FastDiscret.hxx>
#include <Bnd_Box.hxx>
#include <BRepAdaptor_Curve2d.hxx>
-static
+static
Standard_Integer ComputeProps(const TopoDS_Face& aF,
Standard_Real& aA,
Standard_Real& aV);
//=======================================================================
//function : IsHole
-//purpose :
+//purpose :
//=======================================================================
Standard_Boolean GEOMAlgo_BuilderTools::IsHole(const TopoDS_Shape& aW,
const TopoDS_Shape& aFace)
Standard_Real aU1, aU2, aU, dU;
Standard_Real aX1, aY1, aX0, aY0;
TopAbs_Orientation aOr;
-
+
gp_Pnt2d aP2D0, aP2D1;
Handle(Geom2d_Curve) aC2D;
TopoDS_Face aF, aFF;
//
aS=0.;
aItW.Initialize(aW);
- for (; aItW.More(); aItW.Next()) {
+ for (; aItW.More(); aItW.Next()) {
const TopoDS_Edge& aE=TopoDS::Edge(aItW.Value());
aOr=aE.Orientation();
- if (!(aOr==TopAbs_FORWARD ||
+ if (!(aOr==TopAbs_FORWARD ||
aOr==TopAbs_REVERSED)) {
continue;
}
aP2D0.Coord(aX0, aY0);
aP2D1.Coord(aX1, aY1);
//
- aS=aS+(aY0+aY1)*(aX1-aX0);
+ aS=aS+(aY0+aY1)*(aX1-aX0);
//
aP2D0=aP2D1;
}
- }//for (; aItW.More(); aItW.Next()) {
+ }//for (; aItW.More(); aItW.Next()) {
bIsHole=(aS>0.);
return bIsHole;
}
//=======================================================================
//function : IsHole
-//purpose :
+//purpose :
//=======================================================================
Standard_Boolean GEOMAlgo_BuilderTools::IsHole(const TopoDS_Shape& aShell)
{
}
//=======================================================================
//function : ComputeProps
-//purpose :
+//purpose :
//=======================================================================
Standard_Integer ComputeProps(const TopoDS_Face& aF,
Standard_Real& aA,
}
//=======================================================================
//function : BuildTriangulation
-//purpose :
+//purpose :
//=======================================================================
void BuildTriangulation(const TopoDS_Face& aF)
{
Standard_True,
Standard_False,
Standard_True);
+
+#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version
+ TopTools_IndexedDataMapOfShapeListOfShape anAncestors;
+ TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, anAncestors);
+ aMesher.Add(aF, anAncestors);
+#else
aMesher.Add(aF);
+#endif
}