Introduction
Le logiciel Revit, comme tous les logiciels BIM, comporte de nombreux paramètres et options afin de répondre aux divers métiers de la construction. Afin de mieux répondre aux corps d’état du bâtiment et aux nombreuses disciplines du génie civil, Revit s’appuit sur des objets paramétriques nommés familles. Les fonctionnalités de ces familles évoluent avec les versions de Revit, et leurs étendues de possibilité sont donc croissantes. Cependant, l’usage de la programmation s’impose souvent dans un projet de personnalisation ou d’extension des fonctionnalités de Revit.
Objectif des articles de la série ‘Revit C#’.
Mon objectif est de vous montrer, pas à pas et en français, comment créer une fonction en C# pour Revit en s’appuyant sur des exemples concrets et utiles. Le but n’est pas de vous présenter des bouts de code à recopier, mais d’apprendre à se débrouiller tout seul.
“Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours”.
Pour ce faire, nous partirons d’un code minima et simpliste, pour arriver à un code plus abouti. On appel cette technique le refactoring.
Le choix du langage C#
J’ai choisi le langage C# car il permet de travailler et interagir avec de très nombreux logiciels au travers de leur API (Application Programming Interface).
Le C# (C sharp) est un langage de programmation orienté objet, commercialisé par Microsoft depuis 2002, et destiné à développer sur la plateforme Microsoft .NET. Il s’impose dans les développements professionnels par rapport à son cousin, Visual Basic. C’est donc le langage à privilégier pour tous les logiciels grands publics de Microsoft, comme Excel, Word, Access, PowerPoint, SharePoint, ainsi que la plateforme de développement web ASP.NET. Il permet d’interagir efficacement avec Windows et de créer des interfaces utilisateurs riches avec WCF notamment. Il permet également de développer des applications en natif sur téléphone portable Windows Phone. Néanmoins, il faut reconnaître que cette fonctionnalité n’a que peu d’ intérêt, face au part de marché des deux géants de la plateforme smartphone, Apple IOS et Google Android. On peut développer des applications sur ces deux plateformes au travers d’environnement Xamarin.
Parmi les poids-lourd du BIM utilisant le C#, on peut citer Tekla. Par contre, Archicad utilise le C++ et Allplan semble s’orienter vers Python.
On peut citer, également, la plate-forme de développement de jeux vidéo Unity, qui d’ailleurs permet d’importer des objets Revit et les insérer dans un monde virtuel.
Enfin et surtout, l’ensemble des logiciels Autodesk utilise une API C#.
Il est à noter que la programmation graphique Dynamo, présente également un réel intérêt pour des petits projets. Les nœuds graphiques peuvent être facilement complétés par des nœuds personnalisés C# ou Python.
La programmation en C#.
La programmation, dans un langage de programmation classique, est plus complexe que dans un outil de programmation graphique, tel que Dynamo ou Grasshopper, mais permet de développer des applications plus ambitieuses. La programmation orientée objet (POO) est en général plus difficile pour le débutant que la programmation procédurale. Cela provient peut être de notre habitude dans l’enseignement de décrire la résolution d’un problème par une suite d’opération (l’algorithmie), sans utiliser de graphe.
Hors, l’approche objet est essentiel dans un logiciel comme Revit. En effet, Revit manipule un nombre important de type de données (d’objet). Parfois, la programmation objet nous amène à écrire du code dont on ne discerne pas forcement toutes les conséquences sous-jacentes. Pour résoudre cela, on utilise les ‘Design Pattern’, que l’on pourrait traduire par ‘motif de conception’.