Préambule
Ce script Dynamo permet de transférer les unités d’un projet ou d’une famille depuis un fichier de référence. Il permettra notamment la conversion de l’ensemble des unités d’un fichier en système impérial vers le système métrique.
Ci-dessous une illustration de son utilisation via le Player Dynamo :

Après exécution, les unités seront les mêmes que celles du fichier de référence.

Ce script fait appel à du code python que vous pouvez retrouver ci-dessous. Prenez le soin de bien renseigner le chemin de la librairie IronPython en fonction de son emplacement sur votre disque (ligne 21).
import clr
clr.AddReference("ProtoGeometry")
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
from Revit.Elements import *
clr.AddReference ("RevitServices")
import RevitServices
from RevitServices. Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.ImportExtensions(Revit.Elements)
import System
import sys
sys.path.append(r'C:\Program Files\IronPython 2.7\Lib')
clr.AddReference("DSCoreNodes")
from DSCore import *
MustRun = IN[0]
FilePath1 = IN [1]
def defMustRun(a,b):
return a+b
mm = 1/304.8
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
doc1 = app.OpenDocumentFile(FilePath1)
if MustRun == True:
TransactionManager. Instance.EnsureInTransaction(doc)
pUnits1 = doc1.GetUnits()
pUnits = doc.GetUnits()
pUnits=pUnits1
doc.SetUnits(pUnits)
TransactionManager.Instance.TransactionTaskDone()
OUT = "Conversion OK"
else:
OUT = "Echec"
Pour télécharger le script gratuitement rendez-vous ici : Dynamo – Conversion des unités.
A bientôt sur le blog AGOBIM.