
###################
A3DUnitGetFromValue
###################

.. c:function:: A3DEUnits A3DUnitGetFromValue(A3DDouble dUnit)

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DEUnits` A3DUnitGetFromValue(:c:type:`~A3DDouble` **dUnit**\ )
   
   Converts a units representation from ``A3DDouble`` to :c:enum:`~A3DEUnits`\ . 
   
   
      14.1
   
   
   
   HOOPS Exchange stores most of its unit information as factors of millimeters, as described in :c:enum:`~A3DEUnits`\ . This function allows you to retrieve the correct unit enumeration given an input value. For example, a value of *10.* returns :c:enumerator:`~kA3DUnitCentimeter`\ .
   
   
   Behavior
   ========
   
   To properly retrieve the correct :c:enum:`~A3DEUnits` for a given ``A3DDouble`` input, HOOPS Exchange compares it with the expected float value of each unit (as returned by :c:func:`~A3DUnitGetFromEnum`\ ) given a unit-specific threshold as presented by this table:
   
   ****Enumerator**  ** \| ****Value (millimeters)**  ** \| ****Threshold**  **
   
   
   - :c:enumerator:`~kA3DUnitAngstrom`   \| 1.e-7   \| 1.e-9  
   - :c:enumerator:`~kA3DUnitAstronomical`   \| 1.495978707e14   \| 1.e2  
   - :c:enumerator:`~kA3DUnitCentimeter`   \| 10.0   \| 0.01  
   - :c:enumerator:`~kA3DUnitDecimeter`   \| 1.e2   \| 0.01  
   - :c:enumerator:`~kA3DUnitDekameter`   \| 1.e4   \| 0.01  
   - :c:enumerator:`~kA3DUnitFoot`   \| 12.0 \* 25.4   \| 0.01  
   - :c:enumerator:`~kA3DUnitGigameter`   \| 1.e12   \| 1.  
   - :c:enumerator:`~kA3DUnitHectometer`   \| 1.e5   \| 0.01  
   - :c:enumerator:`~kA3DUnitInch`   \| 25.4   \| 0.01  
   - :c:enumerator:`~kA3DUnitKilometer`   \| 1000000.0   \| 0.01  
   - :c:enumerator:`~kA3DUnitLightYear`   \| 9.4607304725808e18   \| 1.e6  
   - :c:enumerator:`~kA3DUnitMeter`   \| 1000.0   \| 0.01  
   - :c:enumerator:`~kA3DUnitMicroInch`   \| 2.54e-5   \| 1.e-7  
   - :c:enumerator:`~kA3DUnitMicron`   \| 1.e-3   \| 1.e-4  
   - :c:enumerator:`~kA3DUnitMil`   \| 0.0254   \| 1.e-4  
   - :c:enumerator:`~kA3DUnitMile`   \| 1760.0 \* 3.0 \* 12.0 \* 25.4   \| 0.01  
   - :c:enumerator:`~kA3DUnitMillimeter`   \| 1.0   \| 0.01  
   - :c:enumerator:`~kA3DUnitNanometer`   \| 1.e-6   \| 1.e-8  
   - :c:enumerator:`~kA3DUnitParsec`   \| 64800.0 / PI \* 1.495978707e14   \| 1.e7  
   - :c:enumerator:`~kA3DUnitPicas`   \| 25.4 / 6.0   \| 0.01  
   - :c:enumerator:`~kA3DUnitPoint`   \| 25.4 / 72.0   \| 0.01  
   - :c:enumerator:`~kA3DUnitUSSurveyFoot`   \| 1200000.0 / 3937.0   \| 1.e-4  
   - :c:enumerator:`~kA3DUnitUSSurveyInch`   \| 100000.0 / 3937.0   \| 1.e-5  
   - :c:enumerator:`~kA3DUnitUSSurveyMile`   \| 1760.0 \* 3600000.0 / 3937.0   \| 3937.,0.01  
   - :c:enumerator:`~kA3DUnitUSSurveyYard`   \| 3.0 \* 1200000.0 / 3937.0   \| 1.e-4  
   - :c:enumerator:`~kA3DUnitYard`   \| 3.0 \* 12.0 \* 25.4   \| 0.01  
   
   If the provided value does not fall under any of these value ranges, the function returns :c:enumerator:`~kA3DUnitUnknown`\ .
   
   
   **Parameters**
   
   
      **dUnit**\ : A unit value (in millimeter) 
   
   
   **Returns**
   
   
      An :c:enum:`~A3DEUnits` value
   
   




