C’est avec plaisir que je vous présente aujourd’hui mon premier bandeau pyRevit que j’ai mis au point pendant mon séjour dans les services techniques d’un grand campus scientifique.
pyRevit est une extension gratuite pour Revit® qui vous permet de créer des commandes personnalisées via la langage Python. Vous pouvez visiter le site ici : https://pyrevitlabs.notion.site/
J’ai donc travaillé plusieurs années dans un bureau d’étude intégré à la maitrise d’ouvrage dans lequel j’ai modélisé sur Revit® des avant projets détaillés, suivi et contrôlé les modèles des prestataires et intégré ceux-ci dans nos processus de maintenance.
J’ai rapidement été confronté à des tâches répétitives qu’il m’a apparu évident de traiter par la programmation. Après une formation sur Python je me suis donc lancé dans cette aventure.
L’un des principal sujet a été la codification GMAO des équipements. Un modèle Revit® pouvait contenir plusieurs centaines de codes qu’ils étaient difficile de contrôler manuellement. J’ai commencé par exporter les données au format CSV pour les analyser mais je me suis rendu compte que traiter l’information directement dans Revit® me ferait gagner du temps.
J’ai commencé par créer une commande me permettant de trouver un équipement selon son code GMAO car contrairement à AutoCAD® qui permet des recherches textuelles via la commande FIND, Revit® ne propose étrangement pas cette fonction nativement. Nous pouvons passer par une nomenclature mais ce n’est pas aussi efficace.
Je vous laisse découvrir l’ensemble des commandes avec leur description sur l’image jointe.
Je vais également vous partager quelques lignes de codes sur les configurations des Tés et Piquages que je trouvais fastidieuses de changer manuellement. Sur un même réseau de gaines ou de tuyauterie nous pouvons avoir l’un ou l’autre et tout ce qui casse le rythme de modélisation nous fait perdre du temps.
En cliquant sur le bouton Té ou Piquage, le script va passer tous les types de gaine ou de tuyauterie dans l’un ou l’autre type de connexion. Je n’ai pas voulu avoir à sélectionner le type de gaine / tuyauterie car cela aurait ralenti le flux de travail. Je me dis simplement « je veux créer un Té ou un Piquage », je clique sur la commande puis je modélise.
En espérant que cela vous sera utile !

Tap Duct Connect
__doc__ = "Change le type de jonction des gaines en piquage"
__title__ = 'Tap Duct\nConnect'
__author__ = 'Yoann OBRY'
#PreferredJunctionDuctTap v1.0
#Import des librairies
from Autodesk.Revit.DB import (FilteredElementCollector, BuiltInCategory, Transaction, PreferredJunctionType)
doc = __revit__.ActiveUIDocument.Document
#Collecte les types de gaines
DCs = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_DuctCurves).WhereElementIsElementType().ToElements()
#Change le type de jonction
t = Transaction(doc, 'change_to_tap')
t.Start()
for DC in DCs:
DC.RoutingPreferenceManager.PreferredJunctionType = PreferredJunctionType.Tap
t.Commit()
Tee Duct Connect
__doc__ = "Change le type de jonction des gaines en té"
__title__ = 'Tee Duct\nConnect'
__author__ = 'Yoann OBRY'
#PreferredJunctionDuctTee v1.0
#Import des librairies
from Autodesk.Revit.DB import (FilteredElementCollector, BuiltInCategory, Transaction, PreferredJunctionType)
doc = __revit__.ActiveUIDocument.Document
#Collecte les types de gaines
DCs = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_DuctCurves).WhereElementIsElementType().ToElements()
#Change le type de jonction
t = Transaction(doc, 'change_to_tee')
t.Start()
for DC in DCs:
DC.RoutingPreferenceManager.PreferredJunctionType = PreferredJunctionType.Tee
t.Commit()
Tap Pipe Connect
__doc__ = "Change le type de jonction des tuyaux en piquage"
__title__ = 'Tap Pipe\nConnect'
__author__ = 'Yoann OBRY'
#PreferredJunctionPipeTap v1.0
#Import des librairies
from Autodesk.Revit.DB import (FilteredElementCollector, BuiltInCategory, Transaction, PreferredJunctionType)
doc = __revit__.ActiveUIDocument.Document
#Collecte les types de gaines
PCs = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_PipeCurves).WhereElementIsElementType().ToElements()
#Change le type de jonction
t = Transaction(doc, 'change_to_tap')
t.Start()
for PC in PCs:
PC.RoutingPreferenceManager.PreferredJunctionType = PreferredJunctionType.Tap
t.Commit()
Tee Pipe Connect
__doc__ = "Change le type de jonction des tuyaux en té"
__title__ = 'Tee Pipe\nConnect'
__author__ = 'Yoann OBRY'
#PreferredJunctionPipeTee v1.0
#Import des librairies
from Autodesk.Revit.DB import (FilteredElementCollector, BuiltInCategory, Transaction, PreferredJunctionType)
doc = __revit__.ActiveUIDocument.Document
#Collecte les types de gaines
PCs = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_PipeCurves).WhereElementIsElementType().ToElements()
#Change le type de jonction
t = Transaction(doc, 'change_to_tee')
t.Start()
for PC in PCs:
PC.RoutingPreferenceManager.PreferredJunctionType = PreferredJunctionType.Tee
t.Commit()
