0026897: BRepBuilderAPI_Copy does not copy polygons
[occt.git] / src / Poly / Poly_Polygon3D.cxx
CommitLineData
b311480e 1// Created on: 1995-03-07
2// Created by: Laurent PAINNOT
3// Copyright (c) 1995-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
42cf5bc1 17
7fd59977 18#include <gp_Pnt.hxx>
42cf5bc1 19#include <Poly_Polygon3D.hxx>
20#include <Standard_NullObject.hxx>
21#include <Standard_Type.hxx>
7fd59977 22
23//=======================================================================
24//function : Poly_Polygon3D
25//purpose :
26//=======================================================================
7fd59977 27Poly_Polygon3D::Poly_Polygon3D(const TColgp_Array1OfPnt& Nodes):
28 myDeflection(0.),
29 myNodes(1, Nodes.Length())
30{
31 Standard_Integer i, j= 1;
32 for (i = Nodes.Lower(); i <= Nodes.Upper(); i++)
33 myNodes(j++) = Nodes(i);
34}
35
36//=======================================================================
37//function : Poly_Polygon3D
38//purpose :
39//=======================================================================
40
41Poly_Polygon3D::Poly_Polygon3D(const TColgp_Array1OfPnt& Nodes,
42 const TColStd_Array1OfReal& P):
43 myDeflection(0.),
44 myNodes(1, Nodes.Length())
45
46{
47 myParameters = new TColStd_HArray1OfReal(1, P.Length());
48 Standard_Integer i, j= 1;
49 for (i = Nodes.Lower(); i <= Nodes.Upper(); i++) {
50 myNodes(j) = Nodes(i);
51 myParameters->SetValue(j, P(i));
52 j++;
53 }
54}
55
8156dddd 56//=======================================================================
57//function : Copy
58//purpose :
59//=======================================================================
60
61Handle(Poly_Polygon3D) Poly_Polygon3D::Copy() const
62{
63 Handle(Poly_Polygon3D) aCopy;
64 if (myParameters.IsNull())
65 aCopy = new Poly_Polygon3D(myNodes);
66 else
67 aCopy = new Poly_Polygon3D(myNodes, myParameters->Array1());
68 aCopy->Deflection(myDeflection);
69 return aCopy;
70}
71
7fd59977 72
73//=======================================================================
74//function : Deflection
75//purpose :
76//=======================================================================
77
78Standard_Real Poly_Polygon3D::Deflection() const
79{
80 return myDeflection;
81}
82
83//=======================================================================
84//function : Deflection
85//purpose :
86//=======================================================================
87
88void Poly_Polygon3D::Deflection(const Standard_Real D)
89{
90 myDeflection = D;
91}
92
93//=======================================================================
94//function : Nodes
95//purpose :
96//=======================================================================
97
98const TColgp_Array1OfPnt& Poly_Polygon3D::Nodes() const
99{
100 return myNodes;
101}
102
103//=======================================================================
104//function : HasParameters
105//purpose :
106//=======================================================================
107
108Standard_Boolean Poly_Polygon3D::HasParameters() const
109{
110 return !myParameters.IsNull();
111}
112
113
114//=======================================================================
115//function : Parameters
116//purpose :
117//=======================================================================
118
119const TColStd_Array1OfReal& Poly_Polygon3D::Parameters() const
120{
121 return myParameters->Array1();
122}
123
124//=======================================================================
125//function : ChangeParameters
126//purpose :
127//=======================================================================
128
129TColStd_Array1OfReal& Poly_Polygon3D::ChangeParameters() const
130{
131 return myParameters->ChangeArray1();
132}
133
134