PrimaryUnitsPrecision Property (ActiveX)

Specifies the number of decimal places displayed for the primary units of a dimension or tolerance.

Supported platforms: Windows only

Signature

VBA:

object.PrimaryUnitsPrecision
object

Type: DimAligned, DimArcLength, DimDiametric, DimOrdinate, DimRadial, DimRadialLarge, DimRotated

The objects this property applies to.

Property Value

Read-only: No

Type: acDimPrecision enum

Remarks

Note: This property overrides the value of the DIMDEC system variable for the given dimension.

Examples

VBA:

Sub Example_PrimaryUnitsPrecision()
    ' This example creates an aligned dimension in model space and
    ' uses PrimaryUnitsPrecision to allow the user to change
    ' the number of decimal places displayed for the primary units and tolerance
    ' units of the dimension.

    Dim dimObj As AcadDimAligned
    Dim point1(0 To 2) As Double, point2(0 To 2) As Double
    Dim location(0 To 2) As Double
    Dim oldPrecision As String, newPrecision As String
    
    ' Define the dimension
    point1(0) = 0: point1(1) = 5: point1(2) = 0
    point2(0) = 5.12345678: point2(1) = 5: point2(2) = 0
    location(0) = 5: location(1) = 7: location(2) = 0
    
    ' Create an aligned dimension object in model space
    Set dimObj = ThisDrawing.ModelSpace.AddDimAligned(point1, point2, location)
    
    ' Enable and setup tolerance display
    dimObj.ToleranceDisplay = acTolSymmetrical
    dimObj.ToleranceLowerLimit = -0.0001
    dimObj.ToleranceUpperLimit = 0.005
    
    ThisDrawing.Application.ZoomAll

    ' Store old precision value as default for input box
    oldPrecision = dimObj.PrimaryUnitsPrecision
    
    ' Allow the user to change the precision for the dimension and dimension tolerance
    newPrecision = InputBox("Enter a new precision for the dimension and tolerances.  The value must range from 0 to 8.", "Change Precision", oldPrecision)
    
    Select Case newPrecision
        Case 0: newPrecision = acDimPrecisionZero
        Case 1: newPrecision = acDimPrecisionOne
        Case 2: newPrecision = acDimPrecisionTwo
        Case 3: newPrecision = acDimPrecisionThree
        Case 4: newPrecision = acDimPrecisionFour
        Case 5: newPrecision = acDimPrecisionFive
        Case 6: newPrecision = acDimPrecisionSix
        Case 7: newPrecision = acDimPrecisionSeven
        Case 8: newPrecision = acDimPrecisionEight
        Case Else
            MsgBox "The precision has not been changed."
            Exit Sub
    End Select
    
    ' Change the dimension and tolerance precision
    dimObj.TolerancePrecision = newPrecision
    dimObj.PrimaryUnitsPrecision = newPrecision
    
    ThisDrawing.Regen acAllViewports
    
    ' Read back and display the dimension and dimension tolerance precision
    newPrecision = dimObj.PrimaryUnitsPrecision
    MsgBox "The precision has been set to " & newPrecision & " decimal places"
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_PrimaryUnitsPrecision()
    ;; This example creates an aligned dimension in model space and
    ;; uses PrimaryUnitsPrecision to allow the user to change
    ;; the number of decimal places displayed for the primary units and tolerance
    ;; units of the dimension.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; Define the dimension
    (setq point1 (vlax-3d-point 0 5 0)
          point2 (vlax-3d-point 5.12345678 5 0)
          location (vlax-3d-point 5 7 0))
    
    ;; Create an aligned dimension object in model space
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq dimObj (vla-AddDimAligned modelSpace point1 point2 location))
    
    ;; Enable and setup tolerance display
    (vla-put-ToleranceDisplay dimObj acTolSymmetrical)
    (vla-put-ToleranceLowerLimit dimObj -0.0001)
    (vla-put-ToleranceUpperLimit dimObj 0.005)
    
    (vla-ZoomAll acadObj)

    ;; Store old precision value as default for input box
    (setq oldPrecision (vla-get-PrimaryUnitsPrecision dimObj))
    
    ;; Allow the user to change the precision for the dimension and dimension tolerance
    (setq newPrecision (vla-GetInteger (vla-get-Utility doc) "\nEnter a new precision for the dimension and tolerances (0 - 8): "))
    
    (setq newPrecision (cond
                           ((= 0 newPrecision) acDimPrecisionZero)
                           ((= 1 newPrecision) acDimPrecisionOne)
                           ((= 2 newPrecision) acDimPrecisionTwo)
                           ((= 3 newPrecision) acDimPrecisionThree)
                           ((= 4 newPrecision) acDimPrecisionFour)
                           ((= 5 newPrecision) acDimPrecisionFive)
                           ((= 6 newPrecision) acDimPrecisionSix)
                           ((= 7 newPrecision) acDimPrecisionSeven)
                           ((= 8 newPrecision) acDimPrecisionEight)
                           (nil)
                       ))
    
    ;; Change the dimension and tolerance precision
    (if (/= newPrecision nil)
        (progn
            (vla-put-TolerancePrecision dimObj newPrecision)
            (vla-put-PrimaryUnitsPrecision dimObj newPrecision)
    
            (vla-Regen doc acAllViewports)
    
            ;; Read back and display the dimension and dimension tolerance precision
            (setq newPrecision (vla-get-PrimaryUnitsPrecision dimObj))
            (alert (strcat "The precision has been set to " (itoa newPrecision) " decimal places"))
        )
        (alert "The precision has not been changed.")
    )
)