L’essentiel de votre travail s’effectuera sur Visual Studio, assurez vous-donc de l’avoir installé et qu’il soit à jour.

Il existe deux types de plug-in sur REVIT :

  1. un relatif à un document/projet REVIT seulement présent lorsqu’on travaille sur ce même projet
  2. un autre directement intégré à l’application REVIT

Dans cet article nous tâcherons de détailler comment rajouter un plug-in à la barre d’outils de REVIT donc un plug-in intégré à l’application REVIT. Nous allons ici partir de zéro, donc bien détailler la programmation. Nous allons créer un onglet HelloWorld dans REVIT qui, lorsqu’on clique sur le bouton, affiche un message.

Étapes de création du plug-in

Avant tout, il faut savoir que pour que votre plug-in fonctionne ( et apparaisse sur REVIT ), REVIT à besoin de 2 fichiers :

  • .dll , il contient tout le contenu du plug-in
  • .addin , il contient tous les paramètres du plug-in

Sans l’un d’eux, votre plug-in ne pourra fonctionner dans REVIT.

Création du projet

Avant de créer ce plug-in, il est préférable de lire les articles () avant de lire celui-ci.

Note : REVIT 2019 a besoin d’une version de Visual Studio qui supporte le .NET Framework 4.7.2. Il faut donc utiliser la dernière version de Visual Studio. Nous utiliserons donc celle de Visual Studio 2019.

Après avoir ouvert Visual Basic 2019, il faut créer un nouveau projet. Vous devez choisir votre langage, ainsi que votre type de plateforme et de projet. Nous avons choisi de prendre Bibliothèque de classes (.NET Framework). C’est codé en C#. Si vous n’avez pas les bases ou les notions adéquates de ce langage, nous vous conseillons de regarder cet article avant de continuer plus loin dans la lecture de l’article.

Choix du type de plug-in

Pour la configuration du projet, vous pouvez le nommer comme vous le voulez. Nous avons décidé de le nommer HelloWorldBox. Puis vous pouvez choisir son emplacement. Et le plus important, vous devez choisir le framework .NET Framework 4.7.2 .

La feuille s’ouvre avec le code ci-dessous :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloWorldBox
{
public class Class1
{
}
}

Initialisations des paramètres

Tout d’abord, avant d’écrire du code, il faut effectuer quelques manipulations.

Vous devez ajouter les références adéquates au projet. Pour cela, à droite, dans Explorateur de solutions/Références vous allez pouvoir ajouter ces références. Il faut effectuer un clic-droit sur Références, puis cliquez sur ajouter une références/Parcourir/Windows(C:)/ProgramData/Autodesk/Revit/Addins puis ajouter RevitAPI.dll et RevitAPIUI.dll.

Si vous ne trouvez pas RevitAPI.dll et RevitAPIUI.dll en suivant ce chemin vous les trouverez dans le dossier d’installation de Revit (ici C:)/Autodesk/Revit 2019.

Note: Si ProgramData ne s’affiche pas, vous devez au préalable dans votre gestionnaire de dossier afficher les dossier cachés. Il faut aller dans Affichage puis cocher Éléments masqués.

On va utiliser d’autres bibliothèques pour ce projet. Il faut écrire au début à la suite de using System.Threading.Tasks :

  • using Autodesk.Revit.UI
  • using System.Reflection
  • using System.Windows.Media.Imaging
  • using Autodesk.Revit.DB.

Vous devez aussi éditer le chemin de sortie. C’est l’endroit où la solution va être stockée. Pour cela, aller dans properties/Build/Chemin de sortie/Parcourir/Windows(C:)/ProgramData/Autodesk/Revit/Addins/2019 .

Il est possible que Systeme.Windows.Media ne soit pas reconnu. Dans ce cas assurez vous que les Références PresentationCore, System, et System.Core apparaissent dans l’onglet référence de l’explorateur de solutions. Si ces références n’apparaissent pas vous les trouverez dans Assemblys/Framework dans le gestionnaire de référence.

Code

Maintenant, nous allons pouvoir coder.

public class HelloWorldRibbon : IExternalApplication
{
// Méthodes obligatoires pour création d'un plugin
public Result OnStartup(UIControlledApplication application)
{
// Ajoute un nouvel onglet à Revit
application.CreateRibbonTab("HelloWorldBox");
// Ajoute un ruban associé à l'onglet
RibbonPanel BonjPanel = application.CreateRibbonPanel("HelloWorldBox", "Bonjour");
// Création des paramètres du bouton associé aux différentes macros
string thisAssemblyPath = Assembly.GetExecutingAssembly().Location;
// associé à "HelloWorld"
PushButtonData buttonData = new PushButtonData("cmdHello",
"Hello", thisAssemblyPath, "HelloWorldBox.HelloWorld");
// On crée le bouton et on l'ajout au ruban
PushButton pushButton = BonjPanel.AddItem(buttonData) as PushButton;
// On définit le texte affiché au survol
pushButton.ToolTip = "Affiche bonjour en anglais";
// Icone du bouton
Uri uriImage = new Uri("pack://application:,,,/HelloWorldBox;component/Ressources/UKFlag.PNG");
BitmapImage largeImage = new BitmapImage(uriImage);
pushButton.LargeImage = largeImage;
// Obligatoire ici
return Result.Succeeded;
}
public Result OnShutdown(UIControlledApplication application)
{
// nothing to clean up in this simple case
return Result.Succeeded;
}
}

Veuillez recopier le code ci-dessus à la place de celui-là.

public class Class1
{
}

Ce code permet d’afficher et d’éditer un nouveau onglet sur Revit quand on ouvre l’application. On peut aussi déterminer le nombre de rubans et de boutons associés à cet onglet. Pour afficher les icônes de chaque bouton, il faut créer un dossier Resources. Allez dans l’Explorateur de solutions, clic-droit sur HellWorldBox/Ajouter/Nouveau Dossier. Puis clic droit sur le nouveau dossier Ressources/Ajouter/Élément existant et récupérez l’image souhaité. Ici, on veut utiliser l’image UKFlag.PNG. Vous devez ensuite aller dans les propriétés de l’image et définir son action comme une ressource et non comme un contenu, sinon l’image ne sera pas enregistrée avec le fichier .dll.

Note: Pour une meilleur qualité, vous devez choisir des images en format PNG 32*32.

A la suite de ce code, nous allons écrire la macro qui permet d’afficher le message. Il est quasiment identique à celui vu dans cet article.

// Début de la classe "HelloWorld" associé au bouton précédent
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class HelloWorld : IExternalCommand
{
// Code exécuté en cas de clic
public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit, ref string message,ElementSet elements)
{
TaskDialog td = new TaskDialog("HelloWorld");
td.MainInstruction = "Hello World";
td.Show();
return Autodesk.Revit.UI.Result.Succeeded;
}
}

Il ne manque plus qu’une étape : il faut créer HelloWorldBox.addin. Vous devez écrire sur un bloc note le texte ci-dessous et le sauvegarder en .addin dans Windows(C:)/ProgramData/Autodesk/Revit/Addins/2019 .

<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
  <AddIn Type="Application">
    <Name>HelloWorldBox</Name>
    <FullClassName>HelloWorldBox.HelloWorldRibbon</FullClassName>
    <Text>HelloWorldBox</Text>
    <Description>Outils de gestion/contrôle pour Outil pour hackerspace</Description>
    <VisibilityMode>AlwaysVisible</VisibilityMode>
    <Assembly>C:\ProgramData\Autodesk\Revit\Addins\2019\HelloWorldBox.dll</Assembly>
    <AddInId>503fe383-2648-4e98-adf8-5e6047f9dc34</AddInId>
    <VendorId>INSA</VendorId>
    <VendorDescription>INSA Rouen Normandie - Departement GCCD</VendorDescription>
  </AddIn>
</RevitAddIns>

Quand vous allez ouvrir Revit, on vous demandera si vous voulez charger les compléments. Il faut donc toujours charger.

Et voilà comment s’affichera Revit.

Revit avec notre plug-in

L’onglet HelloWorldBox sera différent de celui que vous obtiendrez car nous avons fais des modifications dans le code pour afficher plusieurs rubans et onglets.


Annexes

Liens utiles

Articles connexes


0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *