7c3a29528b24ab4044ebf59458d4df70123360a4
[occt.git] / src / XCAFDimTolObjects / XCAFDimTolObjects_DimensionObject.hxx
1
2 // Created on: 2015-08-06
3 // Created by: Ilya Novikov
4 // Copyright (c) 2004-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
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
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.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17
18 #ifndef _XCAFDimTolObjects_DimensionObject_HeaderFile
19 #define _XCAFDimTolObjects_DimensionObject_HeaderFile
20
21 #include <Standard.hxx>
22 #include <Standard_Type.hxx>
23
24 #include <XCAFDimTolObjects_DimensionObjectSequence.hxx>
25 #include <XCAFDimTolObjects_DimensionType.hxx>
26 #include <TColStd_HArray1OfReal.hxx>
27 #include <XCAFDimTolObjects_DimensionQualifier.hxx>
28 #include <Standard_Boolean.hxx>
29 #include <XCAFDimTolObjects_DimensionFormVariance.hxx>
30 #include <XCAFDimTolObjects_DimensionGrade.hxx>
31 #include <Standard_Integer.hxx>
32 #include <XCAFDimTolObjects_DimensionModifiersSequence.hxx>
33 #include <TopoDS_Edge.hxx>
34 #include <gp_Dir.hxx>
35 #include <gp_Ax2.hxx>
36 #include <TColgp_HArray1OfPnt.hxx>
37 #include <Standard_Transient.hxx>
38 #include <Standard_Real.hxx>
39 #include <XCAFDimTolObjects_DimensionModif.hxx>
40 #include <TCollection_HAsciiString.hxx>
41 #include <NCollection_Vector.hxx>
42 #include <TColStd_HArray1OfExtendedString.hxx>
43
44 class XCAFDimTolObjects_DimensionObject;
45 DEFINE_STANDARD_HANDLE(XCAFDimTolObjects_DimensionObject, Standard_Transient)
46                             
47 //! object to store dimension
48 class XCAFDimTolObjects_DimensionObject : public Standard_Transient
49 {
50
51 public:
52   
53   Standard_EXPORT XCAFDimTolObjects_DimensionObject();
54   
55   Standard_EXPORT XCAFDimTolObjects_DimensionObject(const Handle(XCAFDimTolObjects_DimensionObject)& theObj);
56   
57   Standard_EXPORT void SetQualifier (const XCAFDimTolObjects_DimensionQualifier theQualifier);
58   
59   Standard_EXPORT XCAFDimTolObjects_DimensionQualifier GetQualifier() const;
60   
61   Standard_EXPORT Standard_Boolean HasQualifier() const;
62   
63   Standard_EXPORT void SetType (const XCAFDimTolObjects_DimensionType theTyupe);
64   
65   Standard_EXPORT XCAFDimTolObjects_DimensionType GetType() const;
66   
67   Standard_EXPORT Standard_Real GetValue() const;
68   
69   Standard_EXPORT Handle(TColStd_HArray1OfReal) GetValues() const;
70   
71   Standard_EXPORT void SetValue (const Standard_Real theValue);
72   
73   Standard_EXPORT void SetValues (const Handle(TColStd_HArray1OfReal)& theValue);
74   
75   Standard_EXPORT Standard_Boolean IsDimWithRange() const;
76   
77   Standard_EXPORT void SetUpperBound (const Standard_Real theUpperBound);
78   
79   Standard_EXPORT void SetLowerBound (const Standard_Real theLowerBound);
80   
81   Standard_EXPORT Standard_Real GetUpperBound() const;
82   
83   Standard_EXPORT Standard_Real GetLowerBound() const;
84   
85   Standard_EXPORT Standard_Boolean IsDimWithPlusMinusTolerance() const;
86   
87   Standard_EXPORT Standard_Boolean SetUpperTolValue (const Standard_Real theUperTolValue);
88   
89   Standard_EXPORT Standard_Boolean SetLowerTolValue (const Standard_Real theLowerTolValue);
90   
91   Standard_EXPORT Standard_Real GetUpperTolValue() const;
92   
93   Standard_EXPORT Standard_Real GetLowerTolValue() const;
94   
95   Standard_EXPORT Standard_Boolean IsDimWithClassOfTolerance() const;
96   
97   Standard_EXPORT void SetClassOfTolerance (const Standard_Boolean theHole, const XCAFDimTolObjects_DimensionFormVariance theFormVariance, const XCAFDimTolObjects_DimensionGrade theGrade);
98   
99   Standard_EXPORT Standard_Boolean GetClassOfTolerance (Standard_Boolean& theHole, XCAFDimTolObjects_DimensionFormVariance& theFormVariance, XCAFDimTolObjects_DimensionGrade& theGrade) const;
100   
101   Standard_EXPORT void SetNbOfDecimalPlaces (const Standard_Integer theL, const Standard_Integer theR);
102   
103   Standard_EXPORT void GetNbOfDecimalPlaces (Standard_Integer& theL, Standard_Integer& theR) const;
104   
105   Standard_EXPORT XCAFDimTolObjects_DimensionModifiersSequence GetModifiers() const;
106   
107   Standard_EXPORT void SetModifiers (const XCAFDimTolObjects_DimensionModifiersSequence& theModifiers);
108   
109   Standard_EXPORT void AddModifier (const XCAFDimTolObjects_DimensionModif theModifier);
110   
111   Standard_EXPORT TopoDS_Edge GetPath() const;
112   
113   Standard_EXPORT void SetPath (const TopoDS_Edge& thePath);
114   
115   Standard_EXPORT Standard_Boolean GetDirection (gp_Dir& theDir) const;
116   
117   Standard_EXPORT Standard_Boolean SetDirection (const gp_Dir& theDir);
118   
119   Standard_EXPORT Handle(TColgp_HArray1OfPnt) GetPoints() const;
120   
121   Standard_EXPORT void SetPoints (const Handle(TColgp_HArray1OfPnt)& thePnts);
122
123   Standard_EXPORT void SetPointTextAttach (const gp_Pnt& thePntText)
124   {
125     myPntText = thePntText;
126     myHasPntText = Standard_True;
127   }
128
129   Standard_EXPORT const gp_Pnt& GetPointTextAttach() const { return myPntText; }
130
131   Standard_EXPORT Standard_Boolean HasTextPoint() const 
132   { 
133     return myHasPntText; 
134   }
135
136   Standard_EXPORT void SetPlane (const gp_Ax2& thePlane)
137   {
138     myPlane    = thePlane;
139     myHasPlane = Standard_True;
140   }
141
142   Standard_EXPORT const gp_Ax2& GetPlane() const { return myPlane; }
143
144   Standard_EXPORT Standard_Boolean HasPlane() const { return myHasPlane; }
145
146   Standard_EXPORT Standard_Boolean HasPoints() const { return (!myPnts.IsNull() && myPnts->Length() > 0); }
147
148   //! Set graphical presentation for object
149   Standard_EXPORT void SetPresentation(const TopoDS_Shape& thePresentation, 
150     const Handle(TCollection_HAsciiString)& thePresentationName)
151   {
152     myPresentation = thePresentation;
153     myPresentationName = thePresentationName;
154   }
155
156   //! Returns graphical presentation of the object
157   Standard_EXPORT TopoDS_Shape GetPresentation() const
158   {
159     return myPresentation;
160   }
161
162    //! Returns graphical presentation of the object
163   Standard_EXPORT Handle(TCollection_HAsciiString) GetPresentationName() const
164   {
165     return myPresentationName;
166   }
167
168   //! Returns true, if the object has descriptions
169   Standard_EXPORT Standard_Boolean HasDescriptions() const
170   {
171     return (myDescriptions.Length() > 0);
172   }
173
174   //! Returns number of descriptions
175   Standard_EXPORT Standard_Integer NbDescriptions() const
176   {
177     return myDescriptions.Length();
178   }
179
180   //! Returns description with the given number
181   Standard_EXPORT Handle(TCollection_HAsciiString) GetDescription(const Standard_Integer theNumber) const
182   {
183     if (theNumber < myDescriptions.Lower() || theNumber > myDescriptions.Upper())
184       return  new TCollection_HAsciiString();
185     return myDescriptions.Value(theNumber);
186   }
187
188   //! Returns name of description with the given number
189   Standard_EXPORT Handle(TCollection_HAsciiString) GetDescriptionName(const Standard_Integer theNumber) const
190   {
191     if (theNumber < myDescriptions.Lower() || theNumber > myDescriptions.Upper())
192       return new TCollection_HAsciiString();
193     return myDescriptionNames.Value(theNumber);
194   }
195
196   //! Remove description with the given number
197   Standard_EXPORT void RemoveDescription(const Standard_Integer theNumber);
198
199   //! Add new description
200   Standard_EXPORT void AddDescription(const Handle(TCollection_HAsciiString) theDescription, const Handle(TCollection_HAsciiString) theName)
201   {
202     myDescriptions.Append(theDescription);
203     myDescriptionNames.Append(theName);
204   }
205
206   DEFINE_STANDARD_RTTIEXT(XCAFDimTolObjects_DimensionObject,Standard_Transient)
207
208 private: 
209
210   XCAFDimTolObjects_DimensionType myType;
211   Handle(TColStd_HArray1OfReal) myVal;
212   XCAFDimTolObjects_DimensionQualifier myQualifier;
213   Standard_Boolean myIsHole;
214   XCAFDimTolObjects_DimensionFormVariance myFormVariance;
215   XCAFDimTolObjects_DimensionGrade myGrade;
216   Standard_Integer myL;
217   Standard_Integer myR;
218   XCAFDimTolObjects_DimensionModifiersSequence myModifiers;
219   TopoDS_Edge myPath;
220   gp_Dir myDir;
221   Handle(TColgp_HArray1OfPnt) myPnts;
222   gp_Ax2 myPlane;
223   Standard_Boolean myHasPlane;
224   Standard_Boolean myHasPntText;
225   gp_Pnt myPntText;
226   TopoDS_Shape myPresentation;
227   Handle(TCollection_HAsciiString) myPresentationName;
228   NCollection_Vector<Handle(TCollection_HAsciiString)> myDescriptions;
229   NCollection_Vector<Handle(TCollection_HAsciiString)> myDescriptionNames;
230
231 };
232
233 #endif // _XCAFDimTolObjects_DimensionObject_HeaderFile