Der Zugriff auf CATIA von außen erfolgt über eine API. Hierfür benötigt man einen entsprechenden Editor. Für die .Net Anwendung ist es in der Regel Microsoft Visual Studio.

In dieser müssen entsprechende sogenannte Libraries, welche entsprechende Objekte und Variablen zur Verfügung stellen, angezogen werden. Über die Eigenschaften des Projektes unter dem Reiter Verweise können diese ausgewählt  werden. Da ich an dieser Stelle gewisse Grundkenntnisse der .Net-Umgebung voraussetze, möchte ich nicht näher auf das Wo und Wie eingehen. Wichtig, damit die entsprechenden Libraries zur Verfügung stehen, ist, dass eine CATIA Installation installiert bzw registriert ist. Es können auch einzelne DLL´s angezogen werden, allerdings wäre ich hier sehr vorsichtig, denn meist sind diese versionsabhängig und müssen mit den anderen zusammenarbeiten.

Die wichtigste Bibliothek ist "CATIA V5 InfInterfaces Object Labrary", denn diese stellt uns die wichtigsten Objekte für die Applikation, das Fenster, Dokumente und so weiter zur Verfügung. Ohne diese ist kein Weiterkommen möglich und somit Grundvoraussetzung aller Programme, die von außen auf CATIA zugreifen sollen.

Auch wenn das mit der eigentlichen Programmierung nicht unbedingt etwas zu tun hat, hier eine Empfehlung meinerseits. Ich würde in jedem Projekt neben den Forms auch ein Modul „Functions“ und ein Modul „Globals“ hinzufügen. In Functions werden alle Funktionen und Sub´s erstellt; in Globals alle globalen Variablen und Deklarationen von „externen“ Funktionen erstellt. So hat jeder schnell und einfach einen sehr umfassenden Überblick.

Nachdem nun die „richtige“ Library angezogen ist, kann ein globales Objekt erstellt werden, welches eine CATIA Applikation darstellt.

Public CATIA As INFITF.Application 'CATIA-Application / alternativ: As Object

Dies genügt eigentlich schon, um CATIA anziehen zu können. Hierfür schreiben wir eine Funktion, die auf CATIA zugreift und einen bestimmten Status zurückgibt.

 

    Public Function Initialize_System() As Boolean

         '---------------------------------------

        ' initialize active Document and Session

        '---------------------------------------

         Dim AppCount As Integer

         On Error Resume Next

        '-Die Variable CATIA wird befüllt mit den Inhalten einer CATIA.Applikation-

        CATIA = CreateObject("CATIA.Application")

         '-Auslesen, wie viele CNEXT-Prozesse geöffnet sind und in AppCount schreiben-

        AppCount = Process.GetProcessesByName("CNEXT").Length

         '-Prüfen, ob mehrere CATIA Instanzen geöffnet sind-

        If AppCount > 1 Then

            MsgBox("Es wurden mehrere CATIA Intanzen gefunden." & vbLf & _

                   "Die Verarbeitung wird abgebrochen.", MsgBoxStyle.Critical, "Es darf nur ein CATIA geöffnet sein!")

            '-Gibt zurück, dass die Verbindung nicht funktioniert hat-

            Return False

         '-Prüfen, ob überhaupt eine CATIA Instanz geöffnet ist-

        ElseIf AppCount = 0 Then

            MsgBox("Es ist kein CATIA geöffnet." & vbLf & _

                   "Die Verarbeitung wird abgebrochen.", MsgBoxStyle.Critical, "CATIA steht nicht zur Verfügung!")

            '-Gibt zurück, dass die Verbindung nicht funktioniert hat-

            Return False

         '-Ansonsten kann nur eine geöffnet sein und wird sauber zugewiesen-

        Else

            CATIA = GetObject(, "CATIA.Application")

             '-Prüfen ob die Zuweisung fehlerhaft war-

            If Err.Number <> 0 Then

                MsgBox("CATIA reagiert nicht." & vbLf & _

                       "Die Verarbeitung wird abgebrochen.", MsgBoxStyle.Critical, "CATIA steht nicht zur Verfügung!")

                Err.Number = 9999

                Err.Clear()

                '-Gibt zurück, dass die Verbindung nicht funktioniert hat-

                Return False

            End If

        End If

         '-Gibt zurück, dass alles funktioniert hat-

        Return True

     End Function

 

Bis hierhin sollte der Zugriff von Außen funktionieren.

Damit wir nun prüfen können, ob alles funktioniert hat, fügen wir im Mainform zumindest mal ein Textfeld hinzu, welches aus dem CATIA heraus befüllt werden soll. Dieses nennen wir „txtCATIAAppName“. Zusätzlich einen button für „Ok“ zum Anstoßen des Lesens und einen Button „Abbrechen“ zum Schließen des Programms und Freigeben der Ressourcen.

Dem Button zum Ausführen fügen wir entsprechend den Code hinzu, um einen Parameter auslesen zu können.

Public Class frmMain

     Private Sub cmdRun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRun.Click

         Dim RetCode As Boolean

         Try

             RetCode = Initialize_System()

             '-Wenn CATIA geladen wurde, fahre mit der Verarbeitung fort-

            If RetCode = True Then

                 txtCATIAAppName.Text = CATIA.Application.FullName

             End If

         Catch ex As Exception

             MsgBox(ex.ToString, MsgBoxStyle.Critical, "Fehler in FormFunction: cmdRun_Click")

         End Try

     End Sub

 End Class

 

Dem Button zum Beenden entsprechend den Code zum Beenden.

 

    Private Sub cmdCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancel.Click

         Try

            Me.Close()

            CATIA = Nothing

        Catch ex As Exception

             MsgBox(ex.ToString, MsgBoxStyle.Critical, "Fehler in FormFunction: cmdCancel_Click")

         End Try

     End Sub

 

Im Anhang finden Sie ein komplettes Beispiel.

 

 HelloCATIA.Zip

Zum Seitenanfang