Dans ce premier article je vous parlerai de PyRevit et de pourquoi j’ai décidé de l’adopter pour l’utilisation de mes scripts au quotidien.
Mais avant abordons le contexte de ma venue à la programmation sur Revit. Je suis projeteur CVC sur Revit depuis 4 ans et j’ai tout de suite vu ce logiciel comme une immense base de donnée avec une interface graphique, tout ceci dans un environnement paramétrique. Les métadonnées étant largement accessible, utiliser des outils de programmation pour les piloter à souhait m’a paru assez évident en théorie.
Pour la pratique j’ai fais mes première armes avec Dynamo. La même année j’ai suivi une formation sur Python pour les non-programmeurs car j’avais vu que Revit proposait des interfaces via ce language. Ayant toujours été attiré par la programmation j’ai enfin pu m’y plonger dans un contexte professionnel, avec comme objectif de créer des scripts simples assurant des tâches qu’il aurait été fastidieux d’effectuer manuellement.
Je précise que Revit et ses extensions sont principalement codé en C# alors pourquoi Python ? Effectivement j’ai choisi ce dernier car l’apprentissage de Python me semblait déjà plus simple que celui de C#. Ensuite Python dispose d’une communauté et d’un choix de librairies important. Enfin Python est aprécié pour traiter les bases de données et Revit en ait largement constituées.
PyRevit permet aussi de créer facilement un onglet intégré à la barre des tâches avec un accès instantané à vos commandes. Alors que pour Dynamo il y a une latence lors de son ouverture. J’avais aussi tendance à délaissé Dynamo à cause des mises à jour des packages qui rendent vos scripts inutilisables et les noeuds de spagetti lorsque votre programme devient trop complexe. J’ai depuis peu réglé le premier problème comme expliqué dans l’article “Hacking Dynamo”.
Malgré tout je vous conseille de faire vos premières armes sur Dynamo pour avoir un premier aperçu de l’API Revit mais aussi pour être familier avec le nom des commandes qui sont souvent proches de PyRevit. Mais avant de passer sur PyRevit il vous faudra installer RevitPythonShell pour tester vos scripts. Il comprends une console qui permet de retrouver des commandes de l’API ainsi qu’un débogueur sommaire.
Je dois maintenant précisier que le langage utilisé dans Dynamo, RevitPythonShell et PyRevit n’est pas exactement Python mais IronPython. Ce language intégre la plupart des librairie basique de Python avec en plus un vocabulaire permettant de communiquer avec les produits Microsofts (donc Windows qui est l’unique système d’exploitation compatible avec Revit).
Ceci dit il est possible de coder en CPython (Python classique) dans PyRevit moyennant quelques réglages de redirections de fichiers et donc d’utiliser toutes les libriaires disponibles comme Panda par exemple. Mais pour l’instant je ne me suis pas encore aventurer dans cette direction, privilégiant un code facilement déployables sur d’autres machines.
Maintenant je vais vous indiquer quelques liens pour accéder à ces extensions.
PyRevit
PyRevit est développé par Ehsan Iran-Nejad et vous pouvez le télécharger ici :
https://github.com/eirannejad/pyRevit/releases
Vous pouvez l’installer en double-cliquant dessus et l’avantage est qu’il sera déployé sur toutes vos versions de Revit !
Voici également le site officiel qui propose notamment un forum:
https://www.notion.so/pyrevitlabs/pyRevit-bd907d6292ed4ce997c46e84b6ef67a0
Des vidéos tutoriel du créateur :
https://www.youtube.com/c/pyRevit
Dans cette vidéo proposé par Revit Pure vous pouvez voir à 1h09 l’exemple intéressant d’un ruban crée avec PyRevit par une entreprise d’achitecture danoise:
RevitPythonShell
RevitPythonShell est développé par Daren Thomas et vous pouvez le télécharger ici :
https://github.com/architecture-building-systems/revitpythonshell
Cette fois-ci il est par contre nécessaire d’installer l’extension pour chaque version de Revit.
Vous pouvez regarder la session 1 des tutoriel de PyRevit pour comprendre le fonctionnement de RevitPythonShell :