0022627: Change OCCT memory management defaults
[occt.git] / src / BRepPrim / BRepPrim_Revolution.cxx
CommitLineData
7fd59977 1// File: BRepPrim_Revolution.cxx
2// Created: Fri Nov 6 10:02:39 1992
3// Author: Remi LEQUETTE
4// <rle@phylox>
5
6
7
8#include <BRepPrim_Revolution.ixx>
9
10#include <Precision.hxx>
11#include <Geom_SurfaceOfRevolution.hxx>
12
13//=======================================================================
14//function : BRepPrim_Revolution
15//purpose :
16//=======================================================================
17
18BRepPrim_Revolution::BRepPrim_Revolution(const gp_Ax2& A,
19 const Standard_Real VMin,
20 const Standard_Real VMax,
21 const Handle(Geom_Curve)& M,
22 const Handle(Geom2d_Curve)& PM) :
23 BRepPrim_OneAxis(BRepPrim_Builder(),A,VMin,VMax),
24 myMeridian(M),
25 myPMeridian(PM)
26{
27}
28
29//=======================================================================
30//function : BRepPrim_Revolution
31//purpose :
32//=======================================================================
33
34BRepPrim_Revolution::BRepPrim_Revolution(const gp_Ax2& A,
35 const Standard_Real VMin,
36 const Standard_Real VMax) :
37 BRepPrim_OneAxis(BRepPrim_Builder(),A,VMin,VMax)
38{
39}
40
41//=======================================================================
42//function : Meridian
43//purpose :
44//=======================================================================
45
46void BRepPrim_Revolution::Meridian(const Handle(Geom_Curve)& M,
47 const Handle(Geom2d_Curve)& PM)
48{
49 myMeridian = M;
50 myPMeridian = PM;
51}
52
53//=======================================================================
54//function : MakeEmptyLateralFace
55//purpose :
56//=======================================================================
57
58TopoDS_Face BRepPrim_Revolution::MakeEmptyLateralFace() const
59{
60 Handle(Geom_SurfaceOfRevolution) S =
61 new Geom_SurfaceOfRevolution(myMeridian,Axes().Axis());
62
63 TopoDS_Face F;
64 myBuilder.Builder().MakeFace(F,S,Precision::Confusion());
65 return F;
66}
67
68//=======================================================================
69//function : MakeEmptyMeridianEdge
70//purpose :
71//=======================================================================
72
73TopoDS_Edge BRepPrim_Revolution::MakeEmptyMeridianEdge(const Standard_Real Ang) const
74{
75 TopoDS_Edge E;
76 Handle(Geom_Curve) C = Handle(Geom_Curve)::DownCast(myMeridian->Copy());
77 gp_Trsf T;
78 T.SetRotation(Axes().Axis(),Ang);
79 C->Transform(T);
80 myBuilder.Builder().MakeEdge(E,C,Precision::Confusion());
81 return E;
82}
83
84//=======================================================================
85//function : MeridianValue
86//purpose :
87//=======================================================================
88
89gp_Pnt2d BRepPrim_Revolution::MeridianValue(const Standard_Real V) const
90{
91 return myPMeridian->Value(V);
92}
93
94//=======================================================================
95//function : SetMeridianPCurve
96//purpose :
97//=======================================================================
98
99void BRepPrim_Revolution::SetMeridianPCurve(TopoDS_Edge& E,
100 const TopoDS_Face& F) const
101{
102 myBuilder.Builder().UpdateEdge(E,myPMeridian,F,Precision::Confusion());
103}
104