Je vais partager ici des exemples de code par fonction qui m’ont été utile pour mes scripts. Je le compléterai au fur et à mesure et je vous invite à m’envoyer les vôtres afin d’avoir un document le plus complet possible. Il vous suffit de copier les lignes dans la console RevitPythonShell avant de l’exécuter.
***
Collecter des éléments
Création d’une liste des dimensions des accessoires de gaines:
#Je crée une liste vide python
DA_size = []
#Je créer une liste Revit des accessoires de gaine qui utilse la synthaxe de l'API
DAs = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_DuctAccessory)\
.WhereElementIsNotElementType().ToElements()
#Pour chaque accessoires de gaine dans la liste je collecte les dimensions que je copie
#dans ma liste python
for DA in DAs:
#Size - Instance Parameter
size = DA.get_Parameter(BuiltInParameter.RBS_CALCULATED_SIZE)
DA_size.append(size.AsString())
#J'affiche ma liste de dimensions d'accessoires de gaine que je pourrais utiliser
#plus loin dans mon script.
print(DA_size)
Pour collecter les paramètre de type il y a une ligne de code à ajouter :
#Je créer une liste vide pour stocker les noms des familles
DA_family_name = []
for DA in DAs:
#C'est la ligne à ajouter pour lire les paramètres de type
DA_type = doc.GetElement(DA.GetTypeId())
# Family Name - Type Parameter
family_name = DA_type.get_Parameter(
BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM)
DA_family_name.append(family_name.AsString())
***
Nom des paramètres
Nous appellerons paramètres visibles ceux que nous voyons dans l’interface utilisateur Revit (front end) et paramètres internes ceux utilisés par le language de programmation pour piloter le logiciel (back end).
Pour connaitre le nom des paramètres interne afin de communiquer avec Revit il vous suffit de lancer ce code qui vous donnera les paramètres de type et les paramètres d’instance. Pour cela j’ouvre un nouveau fichier Revit et j’insère l’élément dont je veux connaitre les paramètres.
#Récupère les paramètres de type
PA1 = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_PipeAccessory)\
.WhereElementIsElementType().FirstElement()
for p in PA1.Parameters:
print p.Definition.Name
try:
print p.GUID
except:
print p.Definition.BuiltInParameter
print '-'*20
#Récupère les paramètres d'instance
PA2 = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_PipeAccessory0)\
.WhereElementIsNotElementType().FirstElement()
for p in PA2.Parameters:
print p.Definition.Name
try:
print p.GUID
except:
print p.Definition.BuiltInParameter
print '-'*20
Nous obtenons en minuscule le nom du paramètre visible dans Revit suivi en majuscule du paramètre interne :

***
Paramètre partagé
Pour utiliser un paramètre partagé dans votre code il faut utiliser la fonction Guid.
from System import Guid
num_equip = Guid(r'f463541e-6891-4d37-a171-ee91b3c956ef')
Nous aurons au préalable récupérer l’identifiant du paramètre partagé en ayant suivi les instructions du chapitre « Nom des paramètre ».
***
Sélectionner des éléments
from System.Collections.Generic import List
from Autodesk.Revit import UI
### Collecte les Pipe Accessories ###
PAs = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_PipeAccessory)\
.WhereElementIsNotElementType().ToElements()
#Créer une liste vide d'élements Revit
id_list = List[ElementId]()
#Ajoute des éléments avec leur Id (ici des Pipe Accessories) à la liste
for PA in PAs:
id_list.Add(PA.Id)
#Sélectionne les éléments
uidoc.Selection.SetElementIds(id_list)
#Zoom sur les éléments
UI.UIDocument.ShowElements(uidoc, id_list)
Bien sûr ce code seul n’a que peu d’intérêt mais imaginez que vous pouvez l’associer à n’importe quelle valeur d’un paramètre ! Par exemple vous pouvez chercher/trouver le code GMAO d’une vanne en un click et sans passer par un Schedule. Très utile quand vous avez 1000 équipements !
***
Types de donnée
#Chaîne de caractères
family_name.AsString()
#Variable numérique
length.AsDouble()
***