Is het moeilijk om over te stappen van pyRevit naar C#? Ik leer mijzelf de laatste tijd pyRevit en ik maak gebruik van de cursussen van Erik Frits. Maar uiteindelijk wil ik wel switchen naar C#. Geen beperkingen van IronPython. En volgens mij is de stap niet zo heel groot als je eenmaal de concepten snapt van het programmeren in het algemeen. Ik legde de vraag voor aan Claude en ik kreeg dit antwoord terug, niet gek toch?
Minimaal C# Revit add-in
Wat je nodig hebt
-
Visual Studio Community (gratis) met workload “.NET desktop development”
-
Revit SDK (zit in de Revit installatiemap, of via Autodesk)
-
Twee dll’s als referentie:
-
RevitAPI.dll -
RevitAPIUI.dll -
Locatie:
C:\Program Files\Autodesk\Revit 2025\
-
Stap 1: Project aanmaken
In Visual Studio: File > New Project > Class Library (.NET Framework)
Kies .NET Framework 4.8 (niet .NET 6/7/8, Revit gebruikt nog het oude framework).
Stap 2: Referenties toevoegen
In Solution Explorer: rechtermuisknop op References > Add Reference > Browse
Voeg toe:
-
RevitAPI.dll -
RevitAPIUI.dll
Zet daarna bij beide referenties Copy Local = False. Anders kopieert VS de dll’s mee, wat problemen geeft.
Stap 3: De minimale command
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace MijnEersteAddin
{
[Transaction(TransactionMode.Manual)]
public class MijnCommand : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
TaskDialog.Show("Hallo", "Dit werkt!");
return Result.Succeeded;
}
}
}
Toelichting
-
[Transaction(TransactionMode.Manual)]is een attribute, vergelijkbaar met een decorator in Python. Revit vereist dit op elke command. -
IExternalCommandis een interface. Je belooft aan Revit dat jouw class eenExecutemethode heeft met exact die signatuur. -
ExternalCommandDatageeft toegang totApplication,UIApplication, en het actieve document viacommandData.Application.ActiveUIDocument.Document.
Stap 4: Het .addin manifest
Dit is een XML-bestand dat Revit vertelt dat jouw dll bestaat. Locatie:
C:\ProgramData\Autodesk\Revit\Addins\2025\
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Name>Mijn eerste add-in</Name>
<Assembly>C:\pad\naar\jouw\MijnEersteAddin.dll</Assembly>
<FullClassName>MijnEersteAddin.MijnCommand</FullClassName>
<ClientId>VERVANG-DIT-DOOR-EEN-GUID</ClientId>
<VendorId>MMBIM</VendorId>
<VendorDescription>Mark Maas BIM advies</VendorDescription>
</AddIn>
</RevitAddIns>
Voor de ClientId heb je een unieke GUID nodig. In Visual Studio: Tools > Create GUID.
Stap 5: Builden en testen
-
Build de solution (
Ctrl+Shift+B) -
Start Revit
-
Je command verschijnt onder
Add-ins > External Tools
Vergelijking met pyRevit
| pyRevit | C# add-in | |
|---|---|---|
| Bestandstype | .py script |
gecompileerde .dll |
| Compile-stap | nee | ja |
| Manifest nodig | nee | ja (.addin XML) |
| Feedback tijdens ontwikkeling | direct | na elke build |
| Toegang tot Revit API | volledig | volledig |
In pyRevit werkt een script meteen na opslaan. Bij C# heb je een compile-stap en een manifest nodig. Dat voelt omslachtiger, maar geeft je betere performance, type-safety en een makkelijker te structureren codebase bij grotere projecten.
Handige volgende stap
RevitTemplates van Nice3point: een Visual Studio project template die het basiswerk voor je doet en meteen een nettere projectstructuur opzet.