Setting Project Units - set Accuracy

Hi Guys,

As of API 2022, I was able to implement it as follows. But I couldn’t put the rounding.
Something related to FormatOptions.Accuracy.

Anyone know how to implement it?

Sorry for the translation.
Thanks

import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument

if IN[0]:
	TransactionManager.Instance.EnsureInTransaction(doc)
	unit = doc.GetUnits()
	format = FormatOptions(UnitTypeId.Centimeters)
	unit.SetFormatOptions(SpecTypeId.Length,format)
	doc.SetUnits(unit)
	TransactionManager.Instance.TransactionTaskDone()
	OUT = "length unit changed to centimeters"
else:
	OUT = "Set IN[0] to true!"

Hello,
here an example

import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

#import Revit API
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
uidoc = uiapp.ActiveUIDocument
app = uiapp.Application
sdk_number = int(app.VersionNumber)

def setmeterUnit():
	TransactionManager.Instance.EnsureInTransaction(doc)
	unit = doc.GetUnits()
	if sdk_number < 2021:
		format = FormatOptions(DisplayUnitType.DUT_METERS)
		format.Accuracy = 0.01
		unit.SetFormatOptions(UnitType.UT_Length,format)
	else:
		format = FormatOptions(Autodesk.Revit.DB.UnitTypeId.Meters)	
		format.Accuracy = 0.01
		unit.SetFormatOptions(SpecTypeId.Length,format)
	doc.SetUnits(unit)
	TransactionManager.Instance.TransactionTaskDone()
	
setmeterUnit()
3 Likes

Thank you! I was looking for this