uiuiui! Da fehlt ja das gaaaaanze COM-Hintergrundwissen!
Dann werden wir da mal ein bisschen aufholen müssen:
"Component Object Model" ist eine Windows Technologie, für den gegenseitigen Zugriff auf reservierten Speicher.
Warum?
Der Speicherbereich den eine Anwnedung reserviert hat, ist vor anderen Programmen geschützt. Das ist für uns insfern schlecht, weil wir ja, um CATIA Befehle zu geben, auf diesen Bereich zugreifen müssen und COM macht das möglich.
Wie?
Ein COM-Server, in diesem Fall CATIA, veröffentlicht über die Registry Schnittstellen, die uns erlauben in Form von Objekten auf CATIA zuzugreifen.
Wir erstellten mit VB einen COM-Client, der die Aufgabe hat, diese Objekte im eigenen Programm anzulegen und damit zu arbeiten (sehr vereinfacht ausgedrückt!).
Damit das funktioniert, müssen wir also unserem Programm erst mal sagen wo es Schnittstellenbeschreibungen und Programmbibliotheken gibt, damit es weiß, was es für Möglichkeiten hat. Das machen wir (nachdem wir unser Projekt in VB angelegt haben) mit einem Rechtsklick auf das Projekt(im Projektmappenexplorer von VB) dann wählen wir Eigenschaften->Verweise->Im Pull Down Menü "Hinzufügen" die Option "Verweis..." -> COM und dann sind da alle COM-Bibliotheken, die auf der Maschine verfügbar sind. Da sucht man sich die benötigten aus und fügt Sie den Projekt hinzu.
In der Liste "Verweise" sieht man dann, welche Bibliotheken eingebunden sind, welchen Typ sie haben (sehr sehr wichtig!) und den Pfad. Dann kann man das speichern und wieder schließen.
Jetzt schreiben wir oberhalb der Klassendeklaration:
Imports INFITF (den Namensbereich der gewünschte CATIA Bibliothek einbinden)
Imports System.IO (kann man immer brauchen, einfach bei MSDN reinschauen)
Public Class FormX
Dim CATIA As INFITF.Application 'sobald du jetzt nach INFITF den Punkt machst, kommen auch
'schon haufenweise Vorschläge was es da so alles gibt.
Private Sub FormX_Load(...)...
CATIA = CreateObject("CATIA.APPLICATION") 'OHNE SET!!!! set gehört nicht zum Sprachumfang von
'VB.NET!
'und jetzt kannst du im Prinzip sehr bequem mit der Autovervollständigung arbeiten
'prüfen wir dochmal wo unser CATIA liegt:
MsgBox(CATIA.Path)
Dim myPart As INFITF.Document 'Der Objekttyp ist natürlich in der Bibliothek
myPart = CATIA.Documents.Add("Part") 'und jetzt gehts weiter gemäß V5Automation.chm
'...
End Sub
End Class
Wenn du jetzt weitere Funktionen brauchst, findest du diese in den anderen CATIA Libs. MECMODE ist z.B. für die Erstellung von Solids zuständig.
Kurz noch:
Wenn man CATScripts schreibt, passiert in CATIA selber nichts anderes. Der Unterschied ist, das ein s.g. ScriptingHost (SH) diese Scripts liest und die Befehle an CATIA gibt. Darum muss man bei CATScripts die Konventionen dieses SH befolgen, wozu z.B. die Anweisungen "Set", "CATMain()" usw. gehören. VB.NET reagiert auf diese Anweisungen maximal mit Fehlermeldungen!
Generell können COM-Server mit jeder Programmiersprache gesteuert werden, aber Kandidaten wie CATIA, Office udgl. sind mit VB am einfachsten zu bedienen, da sie auf die VB Konventionen aufbauen. Andere Programme nutzen z.B. JavaScript und so.
Wenn ihr euch in die Welt ausserhalb des Standart-SH einer Anwendung begebt, schreibt ihr selber richtige Software. Ich lege jedem nahe, sich generell mit dem Thema COM, und den Grundlagen seiner Programmierprachen und Werkzeuge vertraut zu machen. In Summe spart man sich sehr viel Zeit, wenn man voher ein Buch ließt und sich dann drauf stürzt.
Ein heißer Tipp: http://www.galileocomputing.de/openbook
Auf jeden Fall mal die ersten 7 Kapitel von "Einstieg in Visual Basic 2010" durchackern, dann lichten sich die Nebel in Bezug auf VB.NET.
Wünsche allerseits noch frohe Ostern!
[Diese Nachricht wurde von variable am 06. Apr. 2012 editiert.]
[Diese Nachricht wurde von variable am 06. Apr. 2012 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP