Integration of OCCT 6.5.0 from SVN
[occt.git] / src / UnitsAPI / UnitsAPI.cxx
1 #include <UnitsAPI.ixx>
2 #include <Units.hxx>
3 #include <Units_Unit.hxx>
4 #include <Units_Quantity.hxx>
5 #include <Units_UnitsSystem.hxx>
6 #include <Resource_Manager.hxx>
7 #include <TCollection_AsciiString.hxx>
8 #include <Standard_NoSuchObject.hxx>
9 #include <OSD_Environment.hxx>
10
11 static Handle(Resource_Manager) CurrentUnits,SICurrentUnits,MDTVCurrentUnits;
12 static Units_UnitsSystem LocalSystemUnits,SILocalSystemUnits,MDTVLocalSystemUnits;
13 static TCollection_AsciiString rstring;
14 static UnitsAPI_SystemUnits localSystem = UnitsAPI_SI;
15 static UnitsAPI_SystemUnits currentSystem = UnitsAPI_DEFAULT;
16 static OSD_Environment env1("CSF_UnitsLexicon");
17 static OSD_Environment env2("CSF_UnitsDefinition");
18 #ifdef WNT
19 static OSD_Environment env3("CSF_CurrentUnits");
20 static OSD_Environment env4("CSF_MDTVCurrentUnits");
21 #endif
22
23
24 //=======================================================================
25 //function : CheckLoading
26 //purpose  :
27 //=======================================================================
28
29 void UnitsAPI::CheckLoading (const UnitsAPI_SystemUnits aSystemUnits)
30 {
31   if( currentSystem != aSystemUnits || CurrentUnits.IsNull()) {
32     TCollection_AsciiString slexiconfile(env1.Value());
33     if( slexiconfile.Length() > 0 )
34       Units::LexiconFile(slexiconfile.ToCString());
35     else {
36       OSD_Environment CasRootEnv("CASROOT");
37       TCollection_AsciiString CasRootString(CasRootEnv.Value());
38       if (CasRootString.Length() > 0 )  {
39         CasRootString += "/src/UnitsAPI/Lexi_Expr.dat" ;
40         Units::LexiconFile(CasRootString.ToCString());
41       }
42       else {
43         Standard_NoSuchObject::Raise("environment variable CSF_UnitsLexicon undefined");
44       }
45     }
46     TCollection_AsciiString sunitsfile(env2.Value());
47     if( sunitsfile.Length() > 0 )
48       Units::UnitsFile(sunitsfile.ToCString());
49     else {
50       OSD_Environment CasRootEnv("CASROOT");
51       TCollection_AsciiString CasRootString(CasRootEnv.Value());
52       if (CasRootString.Length() > 0 ) {
53         CasRootString += "/src/UnitsAPI/Units.dat";
54         Units::UnitsFile(CasRootString.ToCString());
55       }
56       else {
57         Standard_NoSuchObject::Raise("environment variable CSF_UnitsDefinition undefined");
58       }
59     }  
60     switch (aSystemUnits) {
61       case UnitsAPI_DEFAULT :
62         if( !CurrentUnits.IsNull() ) break;
63       case UnitsAPI_SI :  
64         currentSystem = UnitsAPI_SI; 
65         if( SICurrentUnits.IsNull() ) {
66 #ifdef WNT
67           TCollection_AsciiString csfcurrent (env3.Value());
68           if( csfcurrent.Length() > 0 )
69                 SICurrentUnits = new Resource_Manager(csfcurrent.ToCString());
70           else
71                 SICurrentUnits = new Resource_Manager("CurrentUnits");
72 #else
73                 SICurrentUnits = new Resource_Manager("CurrentUnits");
74 #endif
75         }
76         CurrentUnits = SICurrentUnits;
77         LocalSystemUnits = SILocalSystemUnits;
78         break;
79       case UnitsAPI_MDTV :  
80         currentSystem = UnitsAPI_MDTV; 
81         if( MDTVCurrentUnits.IsNull() )  {
82 #ifdef WNT
83           TCollection_AsciiString csfmdtvcurrent (env4.Value());
84           if( csfmdtvcurrent.Length() > 0 )
85                 MDTVCurrentUnits = new Resource_Manager(csfmdtvcurrent.ToCString());
86           else
87                 MDTVCurrentUnits = new Resource_Manager("MDTVCurrentUnits");
88 #else
89                 MDTVCurrentUnits = new Resource_Manager("MDTVCurrentUnits");
90 #endif
91         }
92         CurrentUnits = MDTVCurrentUnits;
93         if( MDTVLocalSystemUnits.IsEmpty() ) {
94           MDTVLocalSystemUnits.Specify("LENGTH","mm");
95           MDTVLocalSystemUnits.Specify("AREA","mm\xB2");
96           MDTVLocalSystemUnits.Specify("VOLUME","mm\xB3");
97           MDTVLocalSystemUnits.Specify("INERTIA","mm**4");
98           MDTVLocalSystemUnits.Specify("SPEED","mm/s");
99           MDTVLocalSystemUnits.Specify("ACCELERATION","mm/s\xB2");
100           MDTVLocalSystemUnits.Specify("VOLUMIC MASS","kg/mm\xB3");
101           MDTVLocalSystemUnits.Specify("VOLUME FLOW","mm\xB3/s");
102           MDTVLocalSystemUnits.Specify("CONSUMPTION","mm\xB2");
103           MDTVLocalSystemUnits.Specify("QUANTITY OF MOVEMENT","kg*mm/s");
104           MDTVLocalSystemUnits.Specify("KINETIC MOMENT","kg*mm\xB2/s");
105           MDTVLocalSystemUnits.Specify("MOMENT OF INERTIA","kg*mm\xB2");
106           MDTVLocalSystemUnits.Specify("FORCE","kg*mm/s\xB2");
107           MDTVLocalSystemUnits.Specify("LINEIC FORCE","kg/s\xB2");
108           MDTVLocalSystemUnits.Specify("MOMENT OF A FORCE","kg*mm\xB2/s\xB2");
109           MDTVLocalSystemUnits.Specify("PRESSURE","kg/(mm*s\xB2)");
110           MDTVLocalSystemUnits.Specify("DYNAMIC VISCOSITY","kg/(mm*s)");
111           MDTVLocalSystemUnits.Specify("KINETIC VISCOSITY","mm\xB2/s");
112           MDTVLocalSystemUnits.Specify("TENSION SUPERFICIELLE","mm/s\xB2");
113           MDTVLocalSystemUnits.Specify("ENERGY","kg*mm\xB2/s\xB2");
114           MDTVLocalSystemUnits.Specify("POWER","kg*mm\xB2/s\xB3");
115           MDTVLocalSystemUnits.Specify("LINEIC POWER","kg*mm/s\xB3");
116           MDTVLocalSystemUnits.Specify("SURFACIC POWER","kg/s\xB3");
117           MDTVLocalSystemUnits.Specify("VOLUMIC POWER","kg/(mm*s\xB3)");
118           MDTVLocalSystemUnits.Specify("THERMICAL CONDUCTIVITY","kg*mm/(s\xB3*\xB0K)");
119           MDTVLocalSystemUnits.Specify("THERMICAL CONVECTIVITY","kg/(s\xB3*\xB0K)");
120           MDTVLocalSystemUnits.Specify("THERMICAL MASSIC CAPACITY","mm\xB2/(s\xB2*\xB0K)");
121           MDTVLocalSystemUnits.Specify("ENTROPY","kg*mm\xB2/(s\xB2*\xB0K)");
122           MDTVLocalSystemUnits.Specify("ENTHALPY","kg*mm\xB2/s\xB2");
123           MDTVLocalSystemUnits.Specify("LUMINANCE","cd/mm\xB2");
124           MDTVLocalSystemUnits.Specify("LUMINOUS EFFICACITY","s\xB3*Lu/(kg*mm\xB2)");
125           MDTVLocalSystemUnits.Specify("ELECTRIC FIELD","V/mm");
126           MDTVLocalSystemUnits.Specify("ELECTRIC CAPACITANCE","s**4*A\xB2/(kg*mm\xB2)");
127           MDTVLocalSystemUnits.Specify("MAGNETIC FIELD","A/mm");
128           MDTVLocalSystemUnits.Specify("MAGNETIC FLUX","kg*mm\xB2/(s\xB2*A)");
129           MDTVLocalSystemUnits.Specify("INDUCTANCE","kg*mm\xB2/(s\xB2*A\xB2)");
130           MDTVLocalSystemUnits.Specify("RELUCTANCE","s\xB2*A\xB2/(kg*mm\xB2)");
131           MDTVLocalSystemUnits.Specify("RESISTIVITY","O*mm");
132           MDTVLocalSystemUnits.Specify("CONDUCTIVITY","S/mm");
133           MDTVLocalSystemUnits.Specify("MOLAR MASS","kg/mol");
134           MDTVLocalSystemUnits.Specify("MOLAR VOLUME","mm\xB3/mol");
135           MDTVLocalSystemUnits.Specify("CONCENTRATION","kg/mm\xB3");
136           MDTVLocalSystemUnits.Specify("MOLAR CONCENTRATION","mol/mm\xB3");
137           MDTVLocalSystemUnits.Specify("ACCOUSTIC INTENSITY","mm/A\xB2");
138           MDTVLocalSystemUnits.Specify("DOSE EQUIVALENT","mm\xB2/s\xB2");
139           MDTVLocalSystemUnits.Specify("ABSORBED DOSE","mm\xB2/s\xB2");
140           MDTVLocalSystemUnits.Specify("FLUX OF MAGNETIC INDUCTION","kg*mm\xB2/(s\xB2*A)");
141           MDTVLocalSystemUnits.Specify("ROTATION ACCELERATION","rad/s\xB2");
142           MDTVLocalSystemUnits.Specify("TRANSLATION STIFFNESS","kg/s\xB2");
143           MDTVLocalSystemUnits.Specify("ROTATION STIFFNESS","kg*mm\xB2/(s\xB2*rad)");
144           MDTVLocalSystemUnits.Activates();
145         }
146         LocalSystemUnits = MDTVLocalSystemUnits;
147         break;
148     }
149   }
150 }
151
152
153 //=======================================================================
154 //function : CurrentToLS
155 //purpose  :
156 //=======================================================================
157
158 Standard_Real UnitsAPI::CurrentToLS(const Standard_Real aData,
159                                     const Standard_CString aQuantity)
160 {
161   Standard_Real aValue = aData;
162   CheckLoading (localSystem); 
163   if( CurrentUnits->Find(aQuantity) ) {
164     TCollection_AsciiString current(CurrentUnits->Value(aQuantity));
165     aValue = Units::ToSI(aData,current.ToCString());
166     aValue = LocalSystemUnits.ConvertSIValueToUserSystem(aQuantity,aValue);
167   }
168   else {
169     cout <<"Warning: UnitsAPI,the quantity '" << aQuantity << "' does not exist in the current units system" << endl;
170   }
171
172   return aValue;
173 }
174
175
176 //=======================================================================
177 //function : CurrentToSI
178 //purpose  :
179 //=======================================================================
180
181 Standard_Real UnitsAPI::CurrentToSI(const Standard_Real aData,
182                                     const Standard_CString aQuantity)
183 {
184   Standard_Real aValue = aData;
185   CheckLoading (UnitsAPI_DEFAULT); 
186   if( CurrentUnits->Find(aQuantity) ) {
187     TCollection_AsciiString current(CurrentUnits->Value(aQuantity));
188     aValue = Units::ToSI(aData,current.ToCString());
189   }
190   else {
191     cout<<"Warning: UnitsAPI,the quantity '" << aQuantity << "' does not exist in the current units system" << endl;
192   }
193
194   return aValue;
195 }
196
197
198 //=======================================================================
199 //function : CurrentFromLS
200 //purpose  :
201 //=======================================================================
202
203 Standard_Real UnitsAPI::CurrentFromLS(const Standard_Real aData,
204                                       const Standard_CString aQuantity)
205 {
206   Standard_Real aValue = aData;
207   CheckLoading (localSystem); 
208   if( CurrentUnits->Find(aQuantity) ) {
209     TCollection_AsciiString current(CurrentUnits->Value(aQuantity));
210     aValue = LocalSystemUnits.ConvertUserSystemValueToSI(aQuantity,aData);
211     aValue = Units::FromSI(aValue,current.ToCString());
212   }
213   else {
214     cout<<"Warning: UnitsAPI,the quantity '" << aQuantity << "' does not exist in the current units system" << endl;
215   }
216
217   return aValue;
218 }
219
220
221 //=======================================================================
222 //function : CurrentFromSI
223 //purpose  :
224 //=======================================================================
225
226 Standard_Real UnitsAPI::CurrentFromSI(const Standard_Real aData,
227                                       const Standard_CString aQuantity)
228 {
229   Standard_Real aValue = aData;
230   CheckLoading (UnitsAPI_DEFAULT); 
231   if( CurrentUnits->Find(aQuantity) ) {
232     TCollection_AsciiString current(CurrentUnits->Value(aQuantity));
233     aValue = Units::FromSI(aData,current.ToCString());
234   }
235   else {
236     cout<<"Warning: UnitsAPI,the quantity '" << aQuantity << "' does not exist in the current units system" << endl;
237   }
238
239   return aValue;
240 }
241
242
243 //=======================================================================
244 //function : CurrentToAny
245 //purpose  :
246 //=======================================================================
247
248 Standard_Real UnitsAPI::CurrentToAny(const Standard_Real aData,
249                                      const Standard_CString aQuantity,
250                                      const Standard_CString aUnit) {
251   Standard_Real aValue = aData;
252   CheckLoading (UnitsAPI_DEFAULT); 
253   if( CurrentUnits->Find(aQuantity) ) {
254     TCollection_AsciiString current(CurrentUnits->Value(aQuantity));
255     aValue = AnyToAny(aData,current.ToCString(),aUnit);
256   }
257   else {
258     cout<<"Warning: UnitsAPI,the quantity '" << aQuantity << "' does not exist in the current units system" << endl;
259   }
260
261   return aValue;
262 }
263
264
265 //=======================================================================
266 //function : CurrentFromAny
267 //purpose  :
268 //=======================================================================
269
270 Standard_Real UnitsAPI::CurrentFromAny(const Standard_Real aData,
271                                        const Standard_CString aQuantity,
272                                        const Standard_CString aUnit)
273 {
274   Standard_Real aValue = aData;
275   CheckLoading (UnitsAPI_DEFAULT); 
276   if( CurrentUnits->Find(aQuantity) ) {
277     TCollection_AsciiString current(CurrentUnits->Value(aQuantity));
278     aValue = AnyToAny(aData,aUnit,current.ToCString());
279   }
280   else {
281     cout<<"Warning: UnitsAPI,the quantity '" << aQuantity << "' does not exist in the current units system" << endl;
282   }
283
284   return aValue;
285 }
286
287
288 //=======================================================================
289 //function : AnyToLS
290 //purpose  :
291 //=======================================================================
292
293 Standard_Real UnitsAPI::AnyToLS(const Standard_Real aData,
294                                 const Standard_CString aUnit)
295 {
296   Standard_Real aValue = aData;
297   CheckLoading (localSystem); 
298   Handle(Units_Dimensions) aDim;
299   aValue = Units::ToSI(aValue,aUnit,aDim);
300   if(aDim.IsNull())
301     return aValue;
302   Standard_CString quantity = aDim->Quantity();
303   if( quantity ) {
304     aValue = LocalSystemUnits.ConvertSIValueToUserSystem(quantity,aValue);
305   }
306   else
307     cout<<"Warning: BAD Quantity returns in UnitsAPI::AnyToLS(" << aData << "," << aUnit << ")" << endl;
308   return aValue;
309 }
310
311
312 //=======================================================================
313 //function : AnyToLS
314 //purpose  :
315 //=======================================================================
316
317 Standard_Real UnitsAPI::AnyToLS(const Standard_Real aData,
318                                 const Standard_CString aUnit,
319                                 Handle(Units_Dimensions) &aDim)
320 {
321   Standard_Real aValue = aData;
322   CheckLoading (localSystem); 
323   aValue = Units::ToSI(aValue,aUnit,aDim);
324   Standard_CString quantity = aDim->Quantity();
325   if(aDim.IsNull())
326     return aValue;
327   if( quantity ) {
328     aValue = LocalSystemUnits.ConvertSIValueToUserSystem(quantity,aValue);
329   }
330   else
331     cout<<"Warning: BAD Quantity returns in UnitsAPI::AnyToLS(" << aData << "," << aUnit << "," << aDim << ")" << endl;
332   return aValue;
333 }
334
335
336 //=======================================================================
337 //function : AnyToSI
338 //purpose  :
339 //=======================================================================
340
341 Standard_Real UnitsAPI::AnyToSI(const Standard_Real aData,
342                                 const Standard_CString aUnit)
343 {
344   Standard_Real aValue;
345   CheckLoading (UnitsAPI_DEFAULT); 
346   aValue = Units::ToSI(aData,aUnit);
347   return aValue;
348 }
349
350
351 //=======================================================================
352 //function : AnyToSI
353 //purpose  :
354 //=======================================================================
355
356 Standard_Real UnitsAPI::AnyToSI(const Standard_Real aData,
357                                 const Standard_CString aUnit,
358                                 Handle(Units_Dimensions) &aDim)
359 {
360   Standard_Real aValue;
361   CheckLoading (UnitsAPI_DEFAULT);
362   aValue = Units::ToSI(aData,aUnit,aDim);
363   return aValue;
364 }
365
366
367 //=======================================================================
368 //function : AnyFromLS
369 //purpose  :
370 //=======================================================================
371
372 Standard_Real UnitsAPI::AnyFromLS(const Standard_Real aData,
373                                   const Standard_CString aUnit)
374 {
375   Standard_Real aValue = aData;
376   CheckLoading (localSystem); 
377   Handle(Units_Dimensions) aDim;
378   aValue = Units::FromSI(aValue,aUnit,aDim);
379   Standard_CString quantity = aDim->Quantity();
380   if( quantity ) {
381     aValue = LocalSystemUnits.ConvertUserSystemValueToSI(quantity,aValue);
382   }
383   else
384     cout<<"Warning: BAD Quantity returns in UnitsAPI::AnyToLS(" << aData << "," << aUnit << ")" << endl;
385
386   return aValue;
387 }
388
389
390 //=======================================================================
391 //function : AnyFromSI
392 //purpose  :
393 //=======================================================================
394
395 Standard_Real UnitsAPI::AnyFromSI(const Standard_Real aData,
396                                   const Standard_CString aUnit)
397 {
398   Standard_Real aValue;
399   CheckLoading (UnitsAPI_DEFAULT); 
400   aValue = Units::FromSI(aData,aUnit);
401   return aValue;
402 }
403
404
405 //=======================================================================
406 //function : AnyToAny
407 //purpose  :
408 //=======================================================================
409
410 Standard_Real UnitsAPI::AnyToAny(const Standard_Real aData,
411                                  const Standard_CString aUnit1,
412                                  const Standard_CString aUnit2)
413 {
414   Standard_Real aValue = aData;
415   CheckLoading (UnitsAPI_DEFAULT); 
416   aValue = Units::Convert(aValue,aUnit1,aUnit2);
417   return aValue;
418 }
419
420
421 //=======================================================================
422 //function : LSToSI
423 //purpose  :
424 //=======================================================================
425
426 Standard_Real UnitsAPI::LSToSI(const Standard_Real aData,
427                                const Standard_CString aQuantity)
428 {
429   Standard_Real aValue = aData;
430   CheckLoading (localSystem); 
431   if( CurrentUnits->Find(aQuantity) ) {
432     aValue = LocalSystemUnits.ConvertUserSystemValueToSI(aQuantity,aData);
433   }
434   else {
435     cout<<"Warning: UnitsAPI,the quantity '" << aQuantity << "' does not exist in the current units system" << endl;
436   }
437
438   return aValue;
439 }
440
441
442 //=======================================================================
443 //function : SIToLS
444 //purpose  :
445 //=======================================================================
446
447 Standard_Real UnitsAPI::SIToLS(const Standard_Real aData,
448                                const Standard_CString aQuantity)
449 {
450   Standard_Real aValue = aData;
451   CheckLoading (localSystem); 
452   if( CurrentUnits->Find(aQuantity) ) {
453     aValue = LocalSystemUnits.ConvertSIValueToUserSystem(aQuantity,aValue);
454   }
455   else {
456     cout<<"Warning: UnitsAPI,the quantity '" << aQuantity << "' does not exist in the current units system" << endl;
457   }
458
459   return aValue;
460 }
461
462
463 //=======================================================================
464 //function : SetLocalSystem
465 //purpose  :
466 //=======================================================================
467
468 void UnitsAPI::SetLocalSystem(const UnitsAPI_SystemUnits aSystemUnits)
469 {
470   CheckLoading (aSystemUnits); 
471   localSystem = currentSystem; 
472 }
473
474
475 //=======================================================================
476 //function : LocalSystem
477 //purpose  :
478 //=======================================================================
479
480 UnitsAPI_SystemUnits UnitsAPI::LocalSystem()
481 {
482   return localSystem; 
483 }
484
485
486 //=======================================================================
487 //function : SetCurrentUnit
488 //purpose  :
489 //=======================================================================
490
491 void UnitsAPI::SetCurrentUnit(const Standard_CString aQuantity,
492                               const Standard_CString anUnit)
493 {
494   CheckLoading(localSystem);
495   CurrentUnits->SetResource(aQuantity,anUnit);
496 }
497
498
499 //=======================================================================
500 //function : Save
501 //purpose  :
502 //=======================================================================
503
504 void UnitsAPI::Save()
505 {
506   CheckLoading(localSystem);
507   CurrentUnits->Save();
508 }
509
510
511 //=======================================================================
512 //function : Reload
513 //purpose  :
514 //=======================================================================
515
516 void UnitsAPI::Reload()
517 {
518   currentSystem = UnitsAPI_DEFAULT;
519   CheckLoading(localSystem);
520 }
521
522
523 //=======================================================================
524 //function : CurrentUnit
525 //purpose  :
526 //=======================================================================
527
528 static TCollection_AsciiString astring;
529 Standard_CString UnitsAPI::CurrentUnit(const Standard_CString aQuantity)
530 {
531   CheckLoading(localSystem);
532   astring = CurrentUnits->Value(aQuantity);
533   return astring.ToCString();
534 }
535
536
537 //=======================================================================
538 //function : Dimensions
539 //purpose  :
540 //=======================================================================
541
542 Handle(Units_Dimensions) UnitsAPI::Dimensions(const Standard_CString aType)
543 {
544  return  Units::Dimensions(aType);
545 }
546
547
548 //=======================================================================
549 //function : DimensionLess
550 //purpose  :
551 //=======================================================================
552
553 Handle(Units_Dimensions) UnitsAPI::DimensionLess()
554 {
555   return Units_Dimensions::ALess();
556 }
557
558
559 //=======================================================================
560 //function : DimensionMass
561 //purpose  :
562 //=======================================================================
563
564 Handle(Units_Dimensions) UnitsAPI::DimensionMass()
565 {
566  return Units_Dimensions::AMass();
567 }
568
569
570 //=======================================================================
571 //function : DimensionLength
572 //purpose  :
573 //=======================================================================
574
575 Handle(Units_Dimensions) UnitsAPI::DimensionLength()
576 {
577  return  Units_Dimensions::ALength();
578 }
579
580
581 //=======================================================================
582 //function : DimensionTime
583 //purpose  :
584 //=======================================================================
585
586 Handle(Units_Dimensions) UnitsAPI::DimensionTime()
587 {
588  return Units_Dimensions::ATime() ;
589 }
590
591
592 //=======================================================================
593 //function : DimensionElectricCurrent
594 //purpose  :
595 //=======================================================================
596
597 Handle(Units_Dimensions) UnitsAPI::DimensionElectricCurrent()
598 {
599  return Units_Dimensions::AElectricCurrent() ;
600 }
601
602
603 //=======================================================================
604 //function : DimensionThermodynamicTemperature
605 //purpose  :
606 //=======================================================================
607
608 Handle(Units_Dimensions) UnitsAPI::DimensionThermodynamicTemperature()
609 {
610  return Units_Dimensions::AThermodynamicTemperature();
611 }
612
613
614 //=======================================================================
615 //function : DimensionAmountOfSubstance
616 //purpose  :
617 //=======================================================================
618
619 Handle(Units_Dimensions) UnitsAPI::DimensionAmountOfSubstance()
620 {
621  return Units_Dimensions::AAmountOfSubstance();
622 }
623
624
625 //=======================================================================
626 //function : DimensionLuminousIntensity
627 //purpose  :
628 //=======================================================================
629
630 Handle(Units_Dimensions) UnitsAPI::DimensionLuminousIntensity()
631 {
632  return Units_Dimensions::ALuminousIntensity();
633 }
634
635
636 //=======================================================================
637 //function : DimensionPlaneAngle
638 //purpose  :
639 //=======================================================================
640
641 Handle(Units_Dimensions) UnitsAPI::DimensionPlaneAngle()
642 {
643  return Units_Dimensions::APlaneAngle();
644 }
645
646
647 //=======================================================================
648 //function : DimensionSolidAngle
649 //purpose  :
650 //=======================================================================
651
652 Handle(Units_Dimensions) UnitsAPI::DimensionSolidAngle()
653 {
654  return Units_Dimensions::ASolidAngle();
655 }
656
657
658 //=======================================================================
659 //function : Check
660 //purpose  :
661 //=======================================================================
662
663 Standard_Boolean UnitsAPI::Check(const Standard_CString aQuantity, 
664                                  const Standard_CString /*aUnit*/)
665 {
666   Standard_Boolean status = Standard_False;
667   CheckLoading (UnitsAPI_DEFAULT); 
668   if( CurrentUnits->Find(aQuantity) ) {
669     TCollection_AsciiString current(CurrentUnits->Value(aQuantity));
670 //    aValue = AnyToAny(aData,current.ToCString(),aUnit);
671 //    aValue = Units::Convert(aValue,aUnit1,aUnit2);
672   }
673
674   return status;
675 }