0026689: Necessary to improve STEPCAFControl_Reader to read GD&T data from STEP model...
[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 <TColgp_HArray1OfPnt.hxx>
36 #include <Standard_Transient.hxx>
37 #include <Standard_Real.hxx>
38 #include <XCAFDimTolObjects_DimensionModif.hxx>
39
40 class XCAFDimTolObjects_DimensionObject;
41 DEFINE_STANDARD_HANDLE(XCAFDimTolObjects_DimensionObject, Standard_Transient)
42                             
43 //! object to store dimension
44 class XCAFDimTolObjects_DimensionObject : public Standard_Transient
45 {
46
47 public:
48   
49   Standard_EXPORT XCAFDimTolObjects_DimensionObject();
50   
51   Standard_EXPORT XCAFDimTolObjects_DimensionObject(const Handle(XCAFDimTolObjects_DimensionObject)& theObj);
52   
53   Standard_EXPORT void SetQualifier (const XCAFDimTolObjects_DimensionQualifier theQualifier);
54   
55   Standard_EXPORT XCAFDimTolObjects_DimensionQualifier GetQualifier() const;
56   
57   Standard_EXPORT Standard_Boolean HasQualifier() const;
58   
59   Standard_EXPORT void SetType (const XCAFDimTolObjects_DimensionType theTyupe);
60   
61   Standard_EXPORT XCAFDimTolObjects_DimensionType GetType() const;
62   
63   Standard_EXPORT Standard_Real GetValue() const;
64   
65   Standard_EXPORT Handle(TColStd_HArray1OfReal) GetValues() const;
66   
67   Standard_EXPORT void SetValue (const Standard_Real theValue);
68   
69   Standard_EXPORT void SetValues (const Handle(TColStd_HArray1OfReal)& theValue);
70   
71   Standard_EXPORT Standard_Boolean IsDimWithRange() const;
72   
73   Standard_EXPORT void SetUpperBound (const Standard_Real theUpperBound);
74   
75   Standard_EXPORT void SetLowerBound (const Standard_Real theLowerBound);
76   
77   Standard_EXPORT Standard_Real GetUpperBound() const;
78   
79   Standard_EXPORT Standard_Real GetLowerBound() const;
80   
81   Standard_EXPORT Standard_Boolean IsDimWithPlusMinusTolerance() const;
82   
83   Standard_EXPORT Standard_Boolean SetUpperTolValue (const Standard_Real theUperTolValue);
84   
85   Standard_EXPORT Standard_Boolean SetLowerTolValue (const Standard_Real theLowerTolValue);
86   
87   Standard_EXPORT Standard_Real GetUpperTolValue() const;
88   
89   Standard_EXPORT Standard_Real GetLowerTolValue() const;
90   
91   Standard_EXPORT Standard_Boolean IsDimWithClassOfTolerance() const;
92   
93   Standard_EXPORT void SetClassOfTolerance (const Standard_Boolean theHole, const XCAFDimTolObjects_DimensionFormVariance theFormVariance, const XCAFDimTolObjects_DimensionGrade theGrade);
94   
95   Standard_EXPORT Standard_Boolean GetClassOfTolerance (Standard_Boolean& theHole, XCAFDimTolObjects_DimensionFormVariance& theFormVariance, XCAFDimTolObjects_DimensionGrade& theGrade) const;
96   
97   Standard_EXPORT void SetNbOfDecimalPlaces (const Standard_Integer theL, const Standard_Integer theR);
98   
99   Standard_EXPORT void GetNbOfDecimalPlaces (Standard_Integer& theL, Standard_Integer& theR) const;
100   
101   Standard_EXPORT XCAFDimTolObjects_DimensionModifiersSequence GetModifiers() const;
102   
103   Standard_EXPORT void SetModifiers (const XCAFDimTolObjects_DimensionModifiersSequence& theModifiers);
104   
105   Standard_EXPORT void AddModifier (const XCAFDimTolObjects_DimensionModif theModifier);
106   
107   Standard_EXPORT TopoDS_Edge GetPath() const;
108   
109   Standard_EXPORT void SetPath (const TopoDS_Edge& thePath);
110   
111   Standard_EXPORT Standard_Boolean GetDirection (gp_Dir& theDir) const;
112   
113   Standard_EXPORT Standard_Boolean SetDirection (const gp_Dir& theDir);
114   
115   Standard_EXPORT Handle(TColgp_HArray1OfPnt) GetPoints() const;
116   
117   Standard_EXPORT void SetPoints (const Handle(TColgp_HArray1OfPnt)& thePnts);
118
119
120   DEFINE_STANDARD_RTTI(XCAFDimTolObjects_DimensionObject,Standard_Transient)
121
122 private: 
123
124   XCAFDimTolObjects_DimensionType myType;
125   Handle(TColStd_HArray1OfReal) myVal;
126   XCAFDimTolObjects_DimensionQualifier myQualifier;
127   Standard_Boolean myIsHole;
128   XCAFDimTolObjects_DimensionFormVariance myFormVariance;
129   XCAFDimTolObjects_DimensionGrade myGrade;
130   Standard_Integer myL;
131   Standard_Integer myR;
132   XCAFDimTolObjects_DimensionModifiersSequence myModifiers;
133   TopoDS_Edge myPath;
134   gp_Dir myDir;
135   Handle(TColgp_HArray1OfPnt) myPnts;
136
137 };
138
139 #endif // _XCAFDimTolObjects_DimensionObject_HeaderFile