0026859: Export of GDT from XCAF to STEP
[occt.git] / src / XCAFDimTolObjects / XCAFDimTolObjects_DimensionObject.cxx
CommitLineData
9ebaae37 1// Copyright (c) 1999-2014 OPEN CASCADE SAS
2//
3// This file is part of Open CASCADE Technology software library.
4//
5// This library is free software; you can redistribute it and/or modify it under
6// the terms of the GNU Lesser General Public License version 2.1 as published
7// by the Free Software Foundation, with special exception defined in the file
8// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9// distribution for complete text of the license and disclaimer of any warranty.
10//
11// Alternatively, this file may be used under the terms of Open CASCADE
12// commercial license or contractual agreement.
13
14#include <XCAFDimTolObjects_DimensionObject.hxx>
15
16#include <Precision.hxx>
17#include <TColgp_HArray1OfPnt.hxx>
18
19
20//=======================================================================
21//function : XCAFDimTolObjects_DimensionObject
22//purpose :
23//=======================================================================
24
25XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject()
26{
27}
28
29//=======================================================================
30//function :
31//purpose :
32//=======================================================================
33
34XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject(const Handle(XCAFDimTolObjects_DimensionObject)& theObj)
35{
36 myType = theObj->myType;
37 myVal = theObj->myVal;
38 myQualifier = theObj->myQualifier;
39 myIsHole = theObj->myIsHole;
40 myFormVariance = theObj->myFormVariance;
41 myGrade = theObj->myGrade;
42 myL = theObj->myL;
43 myR = theObj->myR;
44 myModifiers = theObj->myModifiers;
45 myPath = theObj->myPath;
46 myDir = theObj->myDir;
47 myPnts = theObj->myPnts;
48}
49
50//=======================================================================
51//function : SetQualifier
52//purpose :
53//=======================================================================
54void XCAFDimTolObjects_DimensionObject::SetQualifier (const XCAFDimTolObjects_DimensionQualifier theQualifier)
55{
56 myQualifier = theQualifier;
57}
58
59//=======================================================================
60//function : GetQualifier
61//purpose :
62//=======================================================================
63XCAFDimTolObjects_DimensionQualifier XCAFDimTolObjects_DimensionObject::GetQualifier() const
64{
65 return myQualifier;
66}
67
68//=======================================================================
69//function : HasQualifier
70//purpose :
71//=======================================================================
72Standard_Boolean XCAFDimTolObjects_DimensionObject::HasQualifier() const
73{
74 return (myQualifier != XCAFDimTolObjects_DimensionQualifier_None);
75}
76
77//=======================================================================
78//function : SetType
79//purpose :
80//=======================================================================
81void XCAFDimTolObjects_DimensionObject::SetType (const XCAFDimTolObjects_DimensionType theType)
82{
83 myType = theType;
84}
85
86//=======================================================================
87//function : GetType
88//purpose :
89//=======================================================================
90XCAFDimTolObjects_DimensionType XCAFDimTolObjects_DimensionObject::GetType() const
91{
92 return myType;
93}
94
95//=======================================================================
96//function : GetValue
97//purpose :
98//=======================================================================
99Standard_Real XCAFDimTolObjects_DimensionObject::GetValue () const
100{
6595eee7 101 if (myVal.IsNull())
102 return 0;
103
104 // Simple value or value with Plus_Minus_Tolerance
105 if (myVal->Length() == 1 || myVal->Length() == 3) {
9ebaae37 106 return myVal->Value(1);
107 }
6595eee7 108 // Range
109 if (myVal->Length() == 2) {
110 return (myVal->Value(1) + myVal->Value(2)) / 2;
111 }
9ebaae37 112 return 0;
113}
114
115//=======================================================================
116//function : GetValues
117//purpose :
118//=======================================================================
119Handle(TColStd_HArray1OfReal) XCAFDimTolObjects_DimensionObject::GetValues () const
120{
121 return myVal;
122}
123
124//=======================================================================
125//function : SetValue
126//purpose :
127//=======================================================================
128void XCAFDimTolObjects_DimensionObject::SetValue (const Standard_Real theValue)
129{
130 myVal = new TColStd_HArray1OfReal(1, 1);
131 myVal->SetValue(1,theValue);
132}
133
134//=======================================================================
135//function : SetValues
136//purpose :
137//=======================================================================
138void XCAFDimTolObjects_DimensionObject::SetValues (const Handle(TColStd_HArray1OfReal)& theValue)
139{
140 myVal = theValue;
141}
142
143//=======================================================================
144//function : IsDimWithRange
145//purpose :
146//=======================================================================
147Standard_Boolean XCAFDimTolObjects_DimensionObject::IsDimWithRange() const
148{
149 if (!myVal.IsNull() && myVal->Length() == 2)
150 return Standard_True;
151 return Standard_False;
152}
153
154//=======================================================================
155//function : SetUpperBound
156//purpose :
157//=======================================================================
158void XCAFDimTolObjects_DimensionObject::SetUpperBound (const Standard_Real theUpperBound)
159{
160 if(!myVal.IsNull() && myVal->Length() > 1)
161 myVal->SetValue(2, theUpperBound);
162 else
163 {
164 myVal = new TColStd_HArray1OfReal(1, 2);
165 myVal->SetValue(1, theUpperBound);
166 myVal->SetValue(2, theUpperBound);
167 }
168}
169
170//=======================================================================
171//function : SetLowerBound
172//purpose :
173//=======================================================================
174void XCAFDimTolObjects_DimensionObject::SetLowerBound (const Standard_Real theLowerBound)
175{
176 if(!myVal.IsNull() && myVal->Length() > 1)
177 myVal->SetValue(1, theLowerBound);
178 else
179 {
180 myVal = new TColStd_HArray1OfReal(1, 2);
181 myVal->SetValue(2, theLowerBound);
182 myVal->SetValue(1, theLowerBound);
183 }
184}
185
186//=======================================================================
187//function : GetUpperBound
188//purpose :
189//=======================================================================
190Standard_Real XCAFDimTolObjects_DimensionObject::GetUpperBound () const
191{
192 if(!myVal.IsNull() && myVal->Length() == 2)
193 {
194 return myVal->Value(2);
195 }
196 return 0;
197}
198
199//=======================================================================
200//function : GetLowerBound
201//purpose :
202//=======================================================================
203Standard_Real XCAFDimTolObjects_DimensionObject::GetLowerBound () const
204{
205 if(!myVal.IsNull() && myVal->Length() == 2)
206 {
207 return myVal->Value(1);
208 }
209 return 0;
210}
211
212//=======================================================================
213//function : IsDimWithPlusMinusTolerance
214//purpose :
215//=======================================================================
216Standard_Boolean XCAFDimTolObjects_DimensionObject::IsDimWithPlusMinusTolerance() const
217{
218 return (!myVal.IsNull() && myVal->Length() == 3);
219}
220
221//=======================================================================
222//function : SetUpperTolValue
223//purpose :
224//=======================================================================
225Standard_Boolean XCAFDimTolObjects_DimensionObject::SetUpperTolValue (const Standard_Real theUperTolValue)
226{
227 if(!myVal.IsNull() && myVal->Length() == 3)
228 {
229 myVal->SetValue(3, theUperTolValue);
230 return Standard_True;
231 }
232 else if(!myVal.IsNull() && myVal->Length() == 1)
233 {
234 Standard_Real v = myVal->Value(1);
235 myVal = new TColStd_HArray1OfReal(1, 3);
236 myVal->SetValue(1, v);
237 myVal->SetValue(2, theUperTolValue);
238 myVal->SetValue(3, theUperTolValue);
239 return Standard_True;
240 }
241 return Standard_False;
242}
243
244//=======================================================================
245//function : SetLowerTolValue
246//purpose :
247//=======================================================================
248Standard_Boolean XCAFDimTolObjects_DimensionObject::SetLowerTolValue (const Standard_Real theLowerTolValue)
249{
250 if(!myVal.IsNull() && myVal->Length() == 3)
251 {
252 myVal->SetValue(2, theLowerTolValue);
253 return Standard_True;
254 }
255 else if(!myVal.IsNull() && myVal->Length() == 1)
256 {
257 Standard_Real v = myVal->Value(1);
258 myVal = new TColStd_HArray1OfReal(1, 3);
259 myVal->SetValue(1, v);
260 myVal->SetValue(2, theLowerTolValue);
261 myVal->SetValue(3, theLowerTolValue);
262 return Standard_True;
263 }
264 return Standard_False;
265}
266
267//=======================================================================
268//function : GetUpperTolValue
269//purpose :
270//=======================================================================
271Standard_Real XCAFDimTolObjects_DimensionObject::GetUpperTolValue () const
272{
273 if(!myVal.IsNull() && myVal->Length() == 3)
274 {
275 return myVal->Value(3);
276 }
277 return 0;
278}
279
280//=======================================================================
281//function : GetLowerTolValue
282//purpose :
283//=======================================================================
284Standard_Real XCAFDimTolObjects_DimensionObject::GetLowerTolValue () const
285{
286 if(!myVal.IsNull() && myVal->Length() == 3)
287 {
288 return myVal->Value(2);
289 }
290 return 0;
291}
292
293//=======================================================================
294//function : IsDimWithClassOfTolerance
295//purpose :
296//=======================================================================
297Standard_Boolean XCAFDimTolObjects_DimensionObject::IsDimWithClassOfTolerance() const
298{
299 return (myFormVariance != XCAFDimTolObjects_DimensionFormVariance_None);
300}
301
302//=======================================================================
303//function : SetClassOfTolerance
304//purpose :
305//=======================================================================
306void XCAFDimTolObjects_DimensionObject::SetClassOfTolerance (const Standard_Boolean theHole,
307 const XCAFDimTolObjects_DimensionFormVariance theFormVariance,
308 const XCAFDimTolObjects_DimensionGrade theGrade)
309{
310 myIsHole = theHole;
311 myFormVariance = theFormVariance;
312 myGrade = theGrade;
313}
314
315//=======================================================================
316//function : GetClassOfTolerance
317//purpose :
318//=======================================================================
319Standard_Boolean XCAFDimTolObjects_DimensionObject::GetClassOfTolerance (Standard_Boolean& theHole,
320 XCAFDimTolObjects_DimensionFormVariance& theFormVariance,
321 XCAFDimTolObjects_DimensionGrade& theGrade) const
322{
1c9d3225 323 theFormVariance = myFormVariance;
9ebaae37 324 if(myFormVariance != XCAFDimTolObjects_DimensionFormVariance_None)
325 {
326 theHole = myIsHole;
9ebaae37 327 theGrade = myGrade;
328 return Standard_True;
329 }
330 return Standard_False;
331}
332
333//=======================================================================
334//function : SetNbOfDecimalPlaces
335//purpose :
336//=======================================================================
337void XCAFDimTolObjects_DimensionObject::SetNbOfDecimalPlaces (const Standard_Integer theL, const Standard_Integer theR)
338{
339 myL = theL;
340 myR = theR;
341}
342
343//=======================================================================
344//function : GetNbOfDecimalPlaces
345//purpose :
346//=======================================================================
347void XCAFDimTolObjects_DimensionObject::GetNbOfDecimalPlaces (Standard_Integer& theL, Standard_Integer& theR) const
348{
349 theL = myL;
350 theR = myR;
351}
352
353//=======================================================================
354//function : GetModifiers
355//purpose :
356//=======================================================================
357XCAFDimTolObjects_DimensionModifiersSequence XCAFDimTolObjects_DimensionObject::GetModifiers () const
358{
359 return myModifiers;
360}
361
362//=======================================================================
363//function : SetModifiers
364//purpose :
365//=======================================================================
366void XCAFDimTolObjects_DimensionObject::SetModifiers (const XCAFDimTolObjects_DimensionModifiersSequence& theModifiers)
367{
368 myModifiers = theModifiers;
369}
370
371//=======================================================================
372//function : AddModifier
373//purpose :
374//=======================================================================
375void XCAFDimTolObjects_DimensionObject::AddModifier (const XCAFDimTolObjects_DimensionModif theModifier)
376{
377 myModifiers.Append(theModifier);
378}
379
380//=======================================================================
381//function : GetPath
382//purpose :
383//=======================================================================
384TopoDS_Edge XCAFDimTolObjects_DimensionObject::GetPath () const
385{
386 return myPath;
387}
388
389//=======================================================================
390//function : SetPath
391//purpose :
392//=======================================================================
393void XCAFDimTolObjects_DimensionObject::SetPath (const TopoDS_Edge& thePath)
394{
395 if(!thePath.IsNull())
396 {
397 myPath = thePath;
398 }
399}
400
401//=======================================================================
402//function : GetDirection
403//purpose :
404//=======================================================================
405Standard_Boolean XCAFDimTolObjects_DimensionObject::GetDirection (gp_Dir& theDir) const
406{
407 theDir = myDir;
408 return Standard_True;
409}
410
411//=======================================================================
412//function : SetDirection
413//purpose :
414//=======================================================================
415Standard_Boolean XCAFDimTolObjects_DimensionObject::SetDirection (const gp_Dir& theDir)
416{
417 myDir = theDir;
418 return Standard_True;
419}
420
421//=======================================================================
422//function : GetPoints
423//purpose :
424//=======================================================================
425Handle(TColgp_HArray1OfPnt) XCAFDimTolObjects_DimensionObject::GetPoints () const
426{
427 return myPnts;
428}
429
430//=======================================================================
431//function : SetPoints
432//purpose :
433//=======================================================================
434void XCAFDimTolObjects_DimensionObject::SetPoints (const Handle(TColgp_HArray1OfPnt)& thePnts)
435{
436 myPnts = thePnts;
437}