Die V5Automation API stellt dem Entwickler Klassen und Methoden zur Verfügung, um verschiedene Aufgaben in CATIAV5 zu automatisieren. Sie stellt daher die Basis für die Entwicklung von V5-Makros dar. In diesem Artikel wird beschrieben, wie diese über eine externe .NET Applikation angesprochen werden kann.
Warum nicht CATVBA?
Es gibt mehrere Möglichkeiten die V5Automation API anzusprechen. Die einfachste Methode ist direkt in CATIA den Visual Basic Editor zu öffnen und ein CATVBA zu erstellen. Hier steht die V5Automation API natürlich ohne weitere Konfiguration zur Verfügung und es kann damit begonnen werden Makros zu schreiben. In den meisten Fällen ist CATVBA mehr als ausreichend und auch in Hinblick auf das einfache Deployment die richtige Wahl.
Nun gibt es aber Anforderungen, für die CATVBA nicht mehr ausreichend sein kann. Ich denke hier an größere Applikationen, die mit REST-APIs kommunizieren, große JSONs parsen oder Informationen in Datenbanken schreiben müssen. Diese Dinge sind zwar nicht unmöglich in CATVBA, jedoch in .NET-Sprachen wesentlich einfacher umzusetzen.
VB.NET vs. C#
Das .NET Framework kann über verschiedenen Sprachen angesprochen werden. Im CATIAV5 Kontext werden .NET Applikationen in der Regel in VB.NET oder C# geschrieben. Grundsätzlich ist die Wahl eher Geschmacksache, da sich die Sprachen im Funktionsumfang sehr ähnlich sind.
VB.NET hat aufgrund der syntaktischen Ähnlichkeit zu CATVBA im CATIAV5-Umfeld einen gewissen Vorteil, da vorhandene CATVBA-Applikationen relativ einfach migriert werden können. Andererseits ist in den letzten Jahren zu erkennen, dass Microsoft C# in Bezug auf Weiterentwicklung des Funktionsumfangs leicht zu bevorzugen scheint.
Nachfolgende beziehe ich mich ausschließlich auf VB.NET.
CATIA in VB.NET einbinden
COM-Schnittstellen referenzieren
Um die V5Automation API in einem VB.NET Projekt ansprechen zu können müssen zuerst die entsprechenden COM Schnittstellen im Projekt referenziert werden.
Eigenschaften – Verweise – Hinzufügen

Auf der linken Seite muss COM gewählt werden, anschließend im Suchfenster oben rechts „CATIA V5“ eingegeben werden, um die Liste zu filtern.
Als Minimum muss die Library „InfInterfaces“ ausgewählt werden. Je nachdem welche Funktionen der V5Automation API für die Applikation verwendet werden sollen, müssen weitere COM-Schnittstellen referenziert werden.
Verwendung der COM-Schnittstelle
Um die eingebundene COM-Schnittstelle nun verwenden zu können, kann diese ganz normal als Assembly importiert werden. Der eigentliche Name des Assemblys ist auch unter „Verweise“ im Projektexplorer ersichtlich.

Codebeispiel
Imports INFITF
Module TestModul
Sub Main()
Dim catia As Application = Nothing
Try
catia = GetObject(, "CATIA.Application")
Catch ex As Exception
Dim errorMsg As String = "Fehler bei der Kommunikation mit CATIA:" & vbNewLine & ex.Message
Console.WriteLine(errorMsg)
Environment.Exit(1)
End Try
Dim activeDocName As String = catia.ActiveDocument.Name
Console.WriteLine("Geöffnetes Dokument: " & activeDocName)
End Sub
End Module
Code-Sprache: PHP (php)
In Zeile 1 wird das zuvor referenzierte COM-Objekt INFITF importiert. Dadurch haben wir den Objekttyp „Application“ zur Verfügung, welche für eine laufende CATIA-Instanz steht.
In Zeile 5 versuchen wir nun eine laufende CATIA-Instanz zu finden. Das Ganze wird in einem Try-Block ausgeführt, da bei nicht gestartetem CATIA eine Exception geworfen wird, die wir abfangen wollen. In diesem Fall wird eine entsprechende Fehlermeldung in der Konsole ausgegeben.
Läuft die Applikation hingegen weiter, kann die Variable „catia“ wie gewohnt verwendet wird. Im konkreten Beispiel geben wir einfach den Namen des aktiv geöffneten Fensters aus.