SOLIDWORKS Klassen in C# erstellen

Im folgenden Artikel wird beschrieben, wie mit Visual Studio und C# eine Klasse für alle SOLIDWORKS Dateien erstellt werden kann, welche mit weiteren Funktionen beliebig erweitert werden kann. Dies soll die Handhabung mit Klassen verdeutlichen und verständlicher machen. Hierzu wird ein Projekt erstellt und anschliessend eine Klasse erstellt. Anschliessend wird gezeigt, wie diese instanziiert und mit Eigenschaften und Methoden befüllt wird.

1 Einführung

Werden Anwendungen für SOLIDWORKS geschrieben, kann es schnell dazu kommen, dass der Code einfach in einer Klasse geschrieben wird oder der Code doppelt vorkommt. Was wiederum dazu führt, dass dieser irgendwann von niemandem mehr gelesen werden kann. Eine grundlegende Funktion hierfür wäre das Erstellen einer Klasse, welche alle zusammengehörigen Informationen und Funktionen bündelt und somit alles an einem Ort verwaltet.

2 Was ist eine Klasse?

Eine Klasse ist in C# eine Ansammlung von Eigenschaften und Methoden. Dies kann man sich z.B. so vorstellen: Eine Klasse für ein Auto besteht aus den Eigenschaften

  • Farbe,
  • Anzahl der Türen
  • und dem Verkaufspreis
  • sowie allem was noch zu einem Auto gehört.

Eine Methode wiederum wäre z.B. das Beschleunigen oder das Bremsen des Autos. Übertragen auf eine SOLIDWORKS Datei wären die Eigenschaften also  z.B. der Dateipfad oder welche Art von Datei (Teil, Baugruppe oder Zeichnung) vorliegt. Methoden könnten das Verschieben oder Kopieren der Datei sein oder auch eine Bearbeitung der Datei.

3 Projekt erstellen

Zuerst wird ein neues Projekt erstellt, sodass ein leeres (es geht natürlich auch ein bereits vorhandenes) Projekt vorliegt. Dieses Projekt könnte aussehen, wie unser Beispiel in Abbildung 1. Dieses Projekt besteht aktuell aus einer leeren Form und einer Programm-Klasse, welches diese Form startet.

Abbildung 1: Leeres Projekt

Um die Dateien geordnet zu halten, wird ein Ordner erstellt (Rechtsklick auf das Projekt – Hinzufügen – Neuer Ordner). Dieser wird z.B. Models genannt. In diesem wird eine neue Klasse erstellt (Rechtsklick auf den Ordner – Hinzufügen – Klasse). Der Name dieser Klasse könnte z.B. SolidworksFile sein. Ist dies gemacht sollte das Projekt aussehen wie in Abbildung 2.

Abbildung 2: Hinzugefügte Klasse

4 Klasse Instanziieren

Nun wurde eine Klasse erstellt und diese kann bereits verwendet werden. Hierzu müssen wir dorthin wechseln, wo diese Funktion verwendet werden soll. In diesem Beispiel wurde von der Form das Event benutzt, wenn diese geladen wurde. Dies wird in Abbildung 3 ersichtlich.

Um nun diese Klasse zu nutzen, wird einfach der Name der Klasse geschrieben, gefolgt von einem beliebigen Objektnamen. In diesem Fall „MySolidworksFile“. Anschliessend wird gleich eine neue Instanz davon erstellt, indem

  • das Schlüsselwort „new
  • gefolgt von dem Namen der Klasse
  • und zwei Klammern

ergänzt wird. Sollte es nicht bereits automatisch geschehen sein, muss ein “using” zur neuen Klasse hinzugefügt werden.

Abbildung 3: Instanz der Klasse

5 Klasse mit Eigenschaften füllen

Nun ist es möglich mit der Instanz zu arbeiten, jedoch fehlt es noch an Eigenschaften und Methoden. Hierzu wird unsere in Abschnitt 3 erstellte Klasse geöffnet. Als erstes erfolgt die Überlegung, was alles gespeichert werden soll. Um zu starten, wird der Pfad der Datei, sowie dessen Typ gespeichert. Der Pfad wird dabei in einem String gespeichert und der Typ könnte als int-Wert gespeichert werde. Dabei könnte folgende Zuordnung stattfinden:

0 Teil (SLDPRT)

1 Baugruppe (SLDASM)

2 Zeichnung (SLDDRW)

In Abbildung 4 sehen Sie wie die Eigenschaften aussehen können. Hier wird ein String für den Pfad und ein int für den Typ erstellt. Diese erhalten das Schlüsselwort „private“, da es nicht möglich sein soll, die Werte nach belieben zu ändern, sondern höchstens mit Methoden in dieser Klasse

Abbildung 4: Eigenschaften der Klasse

6 Klasse mit Methoden füllen

Eine ganz besondere Methode ist der Konstruktor. Dieser wird immer als aller erstes aufgerufen. Dieser kann verwendet werden, um Werte gleich am Anfang zu berechnen. Damit ist es ebenfalls möglich gleich beim Instanziieren des Objekts einen Parameter zu übergeben.

Ein Konstruktor wird erzeugt, indem einfach eine Methode erstellt wird, welche den Namen der Klasse besitzt. Ein Rückgabewert darf diese Methode nicht erhalten und sie sollte das Schlüsselwort „public“ erhalten, damit diese weiterhin für alle Beteiligten zur Verfügung steht. Ebenfalls sollte immer beim Instanziieren ein Pfad angegeben werden, damit das Objekt, welches später erstellt wird immer den Pfad zur Verfügung hat. Dieser Parameter wird anschliessend direkt in unsere Variable geschrieben. Der Code sollte anschliessend aussehen, wie in Abbildung 5.

Abbildung 5: Konstruktor der Klasse

Als weitere Funktion soll gleich die Berechnung stattfinden, um herauszufinden, ob es sich um ein Teil, eine Baugruppe oder eine Zeichnung handelt. Hierzu wird eine bereits bestehende Methode von Microsoft benutzt, welche im Namespace System.IO verfügbar ist. Mit Path.GetExtension(String) ist es möglich die Dateiendung von einem Pfad  herauszulesen.

Dies kann z.B. in einer If oder Switch Anweisung überprüft werden. In Abbildung 6 wurde dies mit einer Switch Anweisung gelöst und die Typen wurden wie bereits definiert zugewiesen. In der Überprüfung wird die Dateiendung herausgelesen und alle Zeichen mit .ToLower() klein geschrieben. Dies dient der Vorbeugung von verschiedenen Dateiendungen wie z.B. „.sldprt“ und „.SLDPRT“. Sollte keine Zuweisung stattfinden können wird der Typ -1 festgelegt.

Abbildung 6: Berechnung des Typs der Datei

Um zu testen, ob alles funktioniert, können wir zusätzlich eine Methode einbauen, welche diesen Typ zurück gibt. Hierzu wird eine public Methode geschrieben, die den Rückgabewert int besitzt. Der Name der Methode kann frei gewählt werden. In Abbildung 7 wurde der Name GetFileType verwendet.

Abbildung 7: Rückgabe des Dateityps

7 Verwendung der Methoden

Wenn es Ihnen nicht bereits aufgefallen ist, meldet die in Abschnitt 4 durchgeführte  Instanziierung nun einen Fehler. Dies passiert, da wir in Abschnitt 6 ausdrücklich definiert haben, dass ein Parameter übergeben werden muss. Also wird nun wie in Abbildung 8 abgebildet ist, der Pfad für die Datei übergeben.

Abbildung 8: Anhabe des Parameters

Es wurde zudem auch eine MessageBox eingebaut, welche die Methode „Get-FileType()“ des Objekts aufruft und den zurückgegeben Wert anzeigt. Wird das Programm nun ausgeführt, wird zuerst der Dateityp 0 und anschliessend der Dateityp 2 angezeigt.

8 Fazit

Die nun erstellte Klasse kann um beliebig viele Methoden und Eigenschaften erweitert werden. Die Erstellung von Klassen ist sehr einfach und hilfreich, um strukturiertes und leserliches Programmieren zu gewährleisten.

In meinem nächsten Technical Tip werde ich zeigen, wie es möglich ist, diese zu vererben, sodass diese Funktionen auch in anderen Klassen zur Verfügung stehen.

Autor des Artikels

Martin Möllenhoff, R&D Developer bei Visiativ Solutions Switzerland