-// File: BRepFeat_MakeRevol.cxx
-// Created: Tue Feb 13 14:42:59 1996
-// Author: Jacques GOUSSARD
-// <jag@bravox>
-
+// Created on: 1996-02-13
+// Created by: Jacques GOUSSARD
+// Copyright (c) 1996-1999 Matra Datavision
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
#include <BRepFeat_MakeRevol.ixx>
#include <BRepFeat.hxx>
#include <LocOpe.hxx>
#include <LocOpe_Revol.hxx>
-#include <LocOpe_Builder.hxx>
#include <LocOpe_Gluer.hxx>
#include <LocOpe_FindEdges.hxx>
#include <LocOpe_SequenceOfCirc.hxx>
#include <ElCLib.hxx>
#ifdef DEB
-Standard_IMPORT Standard_Boolean BRepFeat_GettraceFEAT();
+extern Standard_Boolean BRepFeat_GettraceFEAT();
#endif
static void MajMap(const TopoDS_Shape&, // base
TopoDS_Shape&); // myLShape
-static void SetGluedFaces(const TopoDS_Face& theSkface,
- const TopoDS_Shape& theSbase,
- const TopoDS_Shape& thePbase,
- const TopTools_DataMapOfShapeListOfShape& theSlmap,
- LocOpe_Revol&,
- TopTools_DataMapOfShapeShape&);
-
-
static void VerifGluedFaces(const TopoDS_Face& theSkface,
const TopoDS_Shape& thePbase,
Handle(Geom_Curve)& theBCurve,
myGluedF.Clear();
myPerfSelection = BRepFeat_NoSelection;
PerfSelectionValid();
- Standard_Boolean RevolComp = (2*PI-Abs(Angle) <= Precision::Angular());
+ Standard_Boolean RevolComp = (2*M_PI-Abs(Angle) <= Precision::Angular());
LocOpe_Revol theRevol;
Standard_Real angledec = 0.;
TopExp_Explorer exp;
if (!mySkface.IsNull() || !mySlface.IsEmpty()) {
for (exp.Init(mySbase,TopAbs_FACE); exp.More(); exp.Next()) {
if (exp.Current().IsSame(mySkface)) {
- angledec = PI/5; // pourquoi pas
+ angledec = M_PI/5; // pourquoi pas
if (myFuse) angledec = -angledec;
break;
}
if(ToFuse(ff, FFace)) {
TopTools_DataMapOfShapeListOfShape sl;
if(!FFace.IsSame(myPbase) && BRepFeat::IsInside(ff, FFace))
- //SetGluedFaces(ff, mySbase, FFace, sl, theRevol, myGluedF);
break;
}
}
}
-
- //SetGluedFaces(mySkface, mySbase, theBase, mySlface, theRevol, myGluedF);
GluedFacesValid();
if (!mySkface.IsNull()) {
VerifGluedFaces(mySkface, theBase, myBCurve, myCurves, theRevol, myGluedF);
Standard_ConstructionError::Raise();
}
if (!mySkface.IsNull() && Until.IsSame(mySkface)) {
- Angle = 2*PI;
+ Angle = 2*M_PI;
TourComplet = Standard_True;
}
myGluedF.Clear();
ShapeUntilValid();
// Do systematically almost complete revolution
-// BRepSweep_Revol theRevol(myPbase,myAxis,2.*PI-10.*Precision::Angular());
+// BRepSweep_Revol theRevol(myPbase,myAxis,2.*M_PI-10.*Precision::Angular());
LocOpe_Revol theRevol;
if(!TourComplet) {
- Angle = 2.*PI- 3*PI/180.;
+ Angle = 2.*M_PI- 3*M_PI/180.;
#ifdef DEB
if (trc) cout << " No complete Revolution" << endl;
#endif
myStatusError = BRepFeat_InvFirstShape;
return;
}
-
- //SetGluedFaces(mySkface, mySbase, theBase, mySlface, theRevol, myGluedF);
GluedFacesValid();
//VerifGluedFaces(mySkface, theBase, myBCurve, myCurves, theRevol, myGluedF);
}
LocOpe_Revol theRevol;
- theRevol.Perform(myPbase, myAxis, 2*PI);
+ theRevol.Perform(myPbase, myAxis, 2*M_PI);
TopoDS_Shape VraiRevol = theRevol.Shape();
MajMap(myPbase,theRevol,myMap,myFShape,myLShape);
if(!Trff) {
myGShape = VraiRevol;
GeneratedShapeValid();
-
- //SetGluedFaces(TopoDS_Face(), mySbase, myPbase, mySlface, theRevol, myGluedF);
GluedFacesValid();
// VerifGluedFaces(mySkface, theBase, myBCurve, myCurves, theRevol, myGluedF);
}
if (ASI2.IsDone() && ASI2.NbPoints(1) >=1) {
Standard_Real pr1 = ASI2.Point(1,1).Parameter();
- pr1 = ElCLib::InPeriod(pr1,PrU-2*PI,PrU);
+ pr1 = ElCLib::InPeriod(pr1,PrU-2*M_PI,PrU);
Standard_Real pr2 = ASI2.Point(1,ASI2.NbPoints(1)).Parameter();
- pr2 = ElCLib::InPeriod(pr2,PrU-2*PI,PrU);
+ pr2 = ElCLib::InPeriod(pr2,PrU-2*M_PI,PrU);
OrF = OrU;
FFrom = ASI2.Point(1,1).Face();
PrF = Max(pr1, pr2);
Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakeRevol::PerformThruAll()" << endl;
#endif
- Perform(2.*PI);
+ Perform(2.*M_PI);
}
//=======================================================================
ShapeUntilValid();
// Produce systematicallt an almost complete revolution
-// BRepSweep_Revol theRevol(myPbase,myAxis,2.*PI-10.*Precision::Angular());
+// BRepSweep_Revol theRevol(myPbase,myAxis,2.*M_PI-10.*Precision::Angular());
LocOpe_Revol theRevol;
theRevol.Perform(myPbase, myAxis, Angle);
TopoDS_Shape VraiRevol = theRevol.Shape();
myStatusError = BRepFeat_InvFirstShape;
return;
}
-
- //SetGluedFaces(mySkface, mySbase, theBase, mySlface, theRevol, myGluedF);
GluedFacesValid();
//VerifGluedFaces(mySkface, theBase, myBCurve, myCurves, theRevol, myGluedF);
return myBCurve;
}
-
-//=======================================================================
-//function : SetGluedFaces
-//purpose : management of gluing faces
-//=======================================================================
-
-static void SetGluedFaces(const TopoDS_Face& theSkface,
- const TopoDS_Shape& theSbase,
- const TopoDS_Shape& thePbase,
- const TopTools_DataMapOfShapeListOfShape& theSlmap,
- LocOpe_Revol& theRevol,
- TopTools_DataMapOfShapeShape& theMap)
-{
- TopExp_Explorer exp;
- if (!theSkface.IsNull() && thePbase.ShapeType() == TopAbs_FACE) {
- for (exp.Init(theSbase,TopAbs_FACE); exp.More(); exp.Next()) {
- if (exp.Current().IsSame(theSkface)) {
- theMap.Bind(thePbase,theSkface);
- break;
- }
- }
- }
- else {
- TopExp_Explorer exp2;
- for (exp.Init(thePbase,TopAbs_FACE);exp.More();exp.Next()) {
- const TopoDS_Face& fac = TopoDS::Face(exp.Current());
- for (exp2.Init(theSbase,TopAbs_FACE);exp2.More();exp2.Next()) {
- if (exp2.Current().IsSame(fac)) {
- theMap.Bind(fac,fac);
- break;
- }
- }
- }
- }
-
- // Sliding
- TopTools_DataMapIteratorOfDataMapOfShapeListOfShape itm(theSlmap);
- if(!theSlmap.IsEmpty()) {
- for (; itm.More(); itm.Next()) {
- const TopoDS_Face& fac = TopoDS::Face(itm.Key());
- const TopTools_ListOfShape& ledg = itm.Value();
- TopTools_ListIteratorOfListOfShape it;
- for (it.Initialize(ledg); it.More(); it.Next()) {
- const TopTools_ListOfShape& gfac = theRevol.Shapes(it.Value());
- if (gfac.Extent() != 1) {
-#ifdef DEB
- Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << " BRepFeat_MakeRevol : Pb SetGluedFace" << endl;
-#endif
- }
- theMap.Bind(gfac.First(),fac);
- }
- }
- }
-}
-
//=======================================================================
//function : VerifGluedFaces
//purpose : Check intersection Tool/theSkface = thePbase