Erweiterbare SOLIDWORKS Add-Ins mit Delegaten und Ereignissen in C#
Autor des Artikels
Martin Bartolomé
ehem. Application Engineer bei Visiativ Switzerland
Einleitung
In der Welt der Softwareentwicklung ist das Konzept von Delegaten und Ereignissen zentral, besonders wenn es um die Erstellung von reaktiven und modularen Anwendungen geht. In der C#-Programmierung ermöglicht dieses Muster es, dass verschiedene Teile einer Anwendung miteinander kommunizieren können, ohne dass sie direkt voneinander abhängig sind. Für SOLIDWORKS Add-Ins ist dies besonders nützlich, da es die Möglichkeit bietet, auf Benutzeraktionen oder Systemereignisse zu reagieren, beispielsweise wenn ein neues Feature im Modell erstellt wird. Dies fördert eine saubere Trennung der Verantwortlichkeiten und erleichtert das Testen und Warten des Codes.
Was ist was?
Was ist ein Delegat?
Ein Delegat ist ein Typ, der sicherstellt, dass eine Methode den richtigen Prototyp hat. Man kann ihn als eine Art Vertrag zwischen dem Ereignisauslöser und dem Empfänger verstehen. Das bedeutet, dass, wenn Sie ein Ereignis abonnieren, Ihre Methode dieselbe Signatur wie der Delegat haben muss.
Was ist ein Ereignis?
Ein Ereignis ist eine Nachricht, die von einem Objekt ausgesendet wird, um anzukündigen, dass etwas passiert ist. Andere Objekte können auf dieses Ereignis «hören» und darauf reagieren, ohne genau wissen zu müssen, wer das Ereignis ausgelöst hat.
Warum wird das benötigt?
In einem SOLIDWORKS Add-In könnten Sie beispielsweise ein Ereignis haben, das ausgelöst wird, wenn User neue Features erstellen. Dies erlaubt es anderen Teilen des Programms, auf die Erstellung des Features zu reagieren, beispielsweise um weitere Berechnungen durchzuführen, die Benutzeroberfläche zu aktualisieren oder Daten in einer Datenbank zu speichern.
Wie wird es eingesetzt?
Stellen Sie sich vor, Sie möchten ein Ereignis in Ihrem SOLIDWORKS Add-In auslösen, wenn ein bestimmtes Feature in einem Modell erstellt wird. Sie könnten einen Delegaten definieren, der eine Methode repräsentiert, die aufgerufen wird, sobald das Ereignis ausgelöst wird, und dann ein Ereignis, das diesen Delegaten verwendet.
Zuerst definieren Sie einen Delegaten:

Dann erstellen Sie eine Klasse, die das Ereignis auslösen kann:

Und schliesslich abonnieren Sie das Ereignis in einer anderen Klasse und definieren die entsprechende Methode, die aufgerufen werden soll, wenn das Ereignis ausgelöst wird:

Um dies alles zusammenzufügen, würden Sie Instanzen der SolidWorksFeatureCreator und FeatureCreationSubscriber Klassen erstellen und dann das Ereignis abonnieren:

Wenn das Programm ausgeführt wird und CreateFeature aufgerufen wird, würde die Konsole die Nachricht «Ein neues Feature wurde erstellt: Bolzen» ausgeben, was bedeutet, dass das Ereignis korrekt ausgelöst und behandelt wurde. In einem echten Szenario würden Sie natürlich den SOLIDWORKS API-Code einfügen, um tatsächlich ein Feature im SOLIDWORKS-Modell zu erstellen.
Zusammenfassung
Zusammenfassend sind Delegaten und Ereignisse in C# mächtige Werkzeuge für die Entwicklung von SOLIDWORKS Add-Ins, da sie eine lose Kopplung zwischen Komponenten ermöglichen. Durch die Nutzung dieser Konstrukte kann ein Add-In flexibel und erweiterbar gestaltet werden, da Komponenten einfach hinzugefügt oder entfernt werden können, ohne den restlichen Code zu stören. Dies führt zu einer verbesserten Wartbarkeit und Skalierbarkeit des Add-Ins, was für Entwickler und Anwender gleichermassen von Vorteil ist.

