b311480e |
1 | // Created by: CKY / Contract Toubro-Larsen |
2 | // Copyright (c) 1993-1999 Matra Datavision |
3 | // Copyright (c) 1999-2012 OPEN CASCADE SAS |
4 | // |
5 | // The content of this file is subject to the Open CASCADE Technology Public |
6 | // License Version 6.5 (the "License"). You may not use the content of this file |
7 | // except in compliance with the License. Please obtain a copy of the License |
8 | // at http://www.opencascade.org and read it completely before using this file. |
7fd59977 |
9 | // |
b311480e |
10 | // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its |
11 | // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France. |
7fd59977 |
12 | // |
b311480e |
13 | // The Original Code and all software distributed under the License is |
14 | // distributed on an "AS IS" basis, without warranty of any kind, and the |
15 | // Initial Developer hereby disclaims all such warranties, including without |
16 | // limitation, any warranties of merchantability, fitness for a particular |
17 | // purpose or non-infringement. Please see the License for the specific terms |
18 | // and conditions governing the rights and limitations under the License. |
19 | |
20 | //-------------------------------------------------------------------- |
7fd59977 |
21 | //-------------------------------------------------------------------- |
22 | |
23 | #include <IGESDimen_SectionedArea.ixx> |
24 | #include <Standard_DimensionMismatch.hxx> |
25 | #include <gp_GTrsf.hxx> |
26 | |
27 | |
b311480e |
28 | IGESDimen_SectionedArea::IGESDimen_SectionedArea () { } |
7fd59977 |
29 | |
30 | |
31 | void IGESDimen_SectionedArea::Init |
32 | (const Handle(IGESData_IGESEntity)& aCurve, |
33 | const Standard_Integer aPattern, |
34 | const gp_XYZ& aPoint, |
35 | const Standard_Real aDistance, |
36 | const Standard_Real anAngle, |
37 | const Handle(IGESData_HArray1OfIGESEntity)& someIslands) |
38 | { |
39 | if (!someIslands.IsNull()) |
40 | if (someIslands->Lower() != 1) |
41 | Standard_DimensionMismatch::Raise("IGESDimen_SectionedArea : Init"); |
42 | theExteriorCurve = aCurve; |
43 | thePattern = aPattern; |
44 | thePassingPoint = aPoint; |
45 | theDistance = aDistance; |
46 | theAngle = anAngle; |
47 | theIslandCurves = someIslands; |
48 | InitTypeAndForm(230,FormNumber()); |
49 | } |
50 | |
51 | void IGESDimen_SectionedArea::SetInverted (const Standard_Boolean mode) |
52 | { |
53 | InitTypeAndForm (230, (mode ? 1 : 0)); |
54 | } |
55 | |
56 | Standard_Boolean IGESDimen_SectionedArea::IsInverted () const |
57 | { |
58 | return (FormNumber() != 0); |
59 | } |
60 | |
61 | |
62 | Handle(IGESData_IGESEntity) IGESDimen_SectionedArea::ExteriorCurve () const |
63 | { |
64 | return theExteriorCurve; |
65 | } |
66 | |
67 | Standard_Integer IGESDimen_SectionedArea::Pattern () const |
68 | { |
69 | return thePattern; |
70 | } |
71 | |
72 | gp_Pnt IGESDimen_SectionedArea::PassingPoint () const |
73 | { |
74 | return gp_Pnt(thePassingPoint); |
75 | } |
76 | |
77 | gp_Pnt IGESDimen_SectionedArea::TransformedPassingPoint () const |
78 | { |
79 | gp_XYZ tmpXYZ(thePassingPoint); |
80 | if (HasTransf()) Location().Transforms(tmpXYZ); |
81 | return gp_Pnt(tmpXYZ); |
82 | } |
83 | |
84 | Standard_Real IGESDimen_SectionedArea::ZDepth () const |
85 | { |
86 | return thePassingPoint.Z(); |
87 | } |
88 | |
89 | Standard_Real IGESDimen_SectionedArea::Distance () const |
90 | { |
91 | return theDistance; |
92 | } |
93 | |
94 | Standard_Real IGESDimen_SectionedArea::Angle () const |
95 | { |
96 | return theAngle; |
97 | } |
98 | |
99 | Standard_Integer IGESDimen_SectionedArea::NbIslands () const |
100 | { |
101 | return (theIslandCurves.IsNull() ? 0 : theIslandCurves->Length()); |
102 | } |
103 | |
104 | Handle(IGESData_IGESEntity) IGESDimen_SectionedArea::IslandCurve |
105 | (const Standard_Integer num) const |
106 | { |
107 | return theIslandCurves->Value(num); |
108 | } |