Autor
|
Thema: Visual Studio 2008 und CATscript/CATvbs/CATvba (3741 mal gelesen)
|
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 22. Okt. 2009 11:59 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, bin stolzer Besitzer eines Visual Studio 2008. Möchte damit Catia per CATscript/CATvbs/CATvba "fernsteuern". Habe folgende LIBs eingebunden: CATIA V5 CATAssemblyInterfaces ... CATIA V5 DraftingInterfaces ... CATIA V5 GenKnowledgeInterfaces .. CATIA V5 InfInterfaces ... CATIA V5 KnowledgeInterfaces ... CATIA V5 MecModInterfaces ... CATIA V5 NavigatorInterfaces ... CATIA V5 PartInterfaces ... CATIA V5 ProductStructureInterfaces ... Habe in einer "Konsolanwendung" versucht mit: dim CATTemp CATTemp = CATIA. und jetzt nach dem "Punkt" per Syntaxhighlighting einer der möglichen Objekte wie z.B.: "SystemService" zu bekommen. Dachte auch, dass ich, wenn ich "CATIA" anfange zu tippen, ein entsprechendes Angebot zu bekommen. !!! Nichts der Gleichen !!! Was mache ich falsch? Was verstehe ich falsch? Oder bin ich komplett auf einem Holzweg? Bitte um Hilfe - Danke Gruß Joachim
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 22. Okt. 2009 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 22. Okt. 2009 12:15 <-- editieren / zitieren --> Unities abgeben:
|
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 22. Okt. 2009 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Du musst einfach erst einmal deinem Studio den Einspringpunkt definieren. CATIA heisst nur unter CATScript innerhalb von CATIA V5 etwas. Weil CATIA V5 den Punkt schon intern hat. Ausserhalb von CATIA musst du deiner Anwendung den Blindenhund spielen und eben den Einspringpunkt angeben. ------------------ Grüße aus dem Rheinland Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... "Phase 2 in CATIA V5" - www.tobeplus.de tberger@tobeplus.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 22. Okt. 2009 12:29 <-- editieren / zitieren --> Unities abgeben:
Okay, verstanden. Gut und knackig erklärt - Danke. Wie's so ist: mit dem Essen kommt der Hunger ... Kannst Du mir auch sagen, wie ich nun aus meinem Projekt (WinApplication) zu einem CATvba komme? Danke schon im voraus und Grüße Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 22. Okt. 2009 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Gar nicht. Entweder du programmierst in CATVBA oder in VB.NET (VB 2008). Oder du musst dir den Code kopieren. Übrigens, du musst in VB2008 auch noch auf die aktive CATIA-Instanz zugreifen, sonst funktioniert dein Programm nicht. Code: Try 'Prüfen, ob CATIA verfügbar (geöffnet) ist CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") Catch ex As System.Runtime.InteropServices.COMException MessageBox.Show("Bitte CATIA V5 starten!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Exit Sub End Try
Grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 22. Okt. 2009 13:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Dominik, Danke für Deine Antwort. Die bringt mich schwer ins Schwimmen: "Gar nicht." Habe bisher mit einem Texteditor (Notepad++) CATscript/CATvbs gearbeitet (mehr oder weniger umständlich). Nachdem ich VisualStudio habe möchte ich es darin machen: 1. Habe versucht ein VB.NET-Projekt zu öffen --> kriegs nicht hin. 2. "... code kopieren". Du meinst in VS entwickeln und dann in ein CATscript/CATvbs reinkopieren? Kannst Du mich "ans Land bringen" - Danke Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 22. Okt. 2009 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Also zuerst musst du dich entscheiden, ob der End-Anwender später ein CATIA-Makro starten soll (innerhalb von CATIA) oder eine EXE-Datei (außerhalb von CATIA). Außerdem musst du noch entscheiden, ob du in deinen Makros eine Benutzer-Oberfläche haben willst oder nicht. Diese Entscheidung bringt dich entweder zu CATVBS/CATScript, CATVBA oder zu VB2008. Ich hoffe du kannst nun eine eindeutige Entscheidung treffen. grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 22. Okt. 2009 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo, du solltest dich ein bisschen mit VB.NET allgemein auseinandersetzen bevor du versuchst CATIA zu steuern. Zum Steuern eines Programms müssen nicht nur die Librarys eingebunden werden sondern auch die Objekte erzeugt werde. Da du innerhalb von VB.NET (im Zusammenhang mit CATIA) eh keinen IntelliSense hast würde ich dir kein early Binding (Dim CATIA As INFITF.Application) empfehlen sondern eher ein late Bindung (also Dim CATIA as Object, Dim myPart as Object, etc.). Den Code von Dominik würde ich wie folgt umschreiben:
Code:
Dim CATIA as Object On Error Resume next CATIA = GetObject (,"CATIA.Application") If Err.Number <> 0 then Err.Clear CATIA = CreateObject("CATIA.Application") If Err.Number <> 0 then MessageBox.Show("Bitte CATIA V5 starten!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If
Ich weiß das man es mit einem Try theoretisch auch machen könnte aber leider wirft .NET in beiden Fällen (CATIA Objekt nicht vorhanden und CATIA Objekt kann nicht erzeugt werden) zweimal die selbe Exception aus. D.h. du müsstest es in zwei Try Blöcken machen und da finde ich die On Error Anweisung einfacher ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 22. Okt. 2009 14:01 <-- editieren / zitieren --> Unities abgeben:
Konkret für mein anstehendes Thema möchte ich aus Catia heraus (hinter einem Icon) gewisse Prüfungen durchführen. Dabei wird der Anwender mit MsgBoxen benachrichtigt/abgefragt. Zu welcher Entscheidung kommen wir damit? Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 22. Okt. 2009 14:08 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hierfür ist CATvbs, bzw. CATScript völlig ausreichend, da ohne Benutzeroberfläche und innerhalb von CATIA. Ich hoffe das hilft dir. @Daniel: 1. Ich nutze in VB2008 für meine CATIA-Tools IntelliSense und bin froh über diese Funktion. 2. mit CreateObject("CATIA.Application") erzeugst du eine neue CATIA-Instanz, d.h. Catia wird neu geöffnet. Das würde aber zu Problemen führen, die richtige Projektumgebung/Release zu starten, falls mehrere auf dem PC verfügbar sind. grüße Dominik [Diese Nachricht wurde von V5Playaz am 22. Okt. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 22. Okt. 2009 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Zitat: Original erstellt von V5Playaz: Hierfür ist CATvbs, bzw. CATScript völlig ausreichend, da ohne Benutzeroberfläche und innerhalb von CATIA.Ich hoffe das hilft dir. @Daniel: 1. Ich nutze in VB2008 für meine CATIA-Tools IntelliSense und bin froh über diese Funktion. 2. mit CreateObject("CATIA.Application") erzeugst du eine neue CATIA-Instanz, d.h. Catia wird neu geöffnet. Das würde aber zu Problemen führen, die richtige Projektumgebung/Release zu starten, falls mehrere auf dem PC verfügbar sind. grüße Dominik [Diese Nachricht wurde von V5Playaz am 22. Okt. 2009 editiert.]
Hi, ja wenn du das Object über InteropServices und den Marschal erzeugst dann ist es verfügbar. Über CreateObject nicht Zu 2. Ja da gebe ich dir recht ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 22. Okt. 2009 17:33 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo auch mit CreateObject ist Intellisence verfügbar. Entscheidend ist auch hier die exakte Deklarierung der Variabeln Dim CATIA As INFITF.Application schon flutscht es ------------------ Grüße TStone "Respektiere die Macht der Worte, wähle sie mit Bedacht!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 23. Okt. 2009 07:10 <-- editieren / zitieren --> Unities abgeben:
Zitat: ... hierfür ist CATvbs, bzw. CATScript völlig ausreichend, da ohne Benutzeroberfläche und innerhalb von CATIA.
Danke Dominik. Wie komme ich nun aus/mit Visual Studio zu einer CATvbs/CATscript-Datei? Weiter oben hast Du angemerkt "... oder Du musst dir den Code kopieren". Verstehe ich das dann richtig: Ich entwickle in Visual Studio mit dessen Vorteilen und kopieren dann den Code per Drag&Drop in die jeweilige CATvbs/CATscript-Datei? Oder gibts es auch einen eleganteren Weg? Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 23. Okt. 2009 07:53 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 23. Okt. 2009 08:30 <-- editieren / zitieren --> Unities abgeben:
Hm, weiter oben habe wir heraus gefunden, dass ... ... für meine Bedürfnisse CATvbs/CATscript reicht. ... CATvba nur für EXEn bzw. ausserhalb CATIA (auch ist .NET für mich momentan kein einfaches Thema). Stimmt das so? Wenn Ja, dann weiterhin meine Frage (wie oben gestellt): Zitat: Verstehe ich das dann richtig: Ich entwickle in Visual Studio mit dessen Vorteilen und kopieren dann den Code per Drag&Drop in die jeweilige CATvbs/CATscript-Datei?Oder gibts es auch einen eleganteren Weg?
Anmerkung: Ich brauche momentan solche "Ja"/"Nein"-Aussagen. Gruß Joachim
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 23. Okt. 2009 09:06 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
CATvba -> *.catvba VB.Net -> *.exe Wie Daniel schon gesagt hat, kannst du die Makros in CATvba entwickeln (mit allen Features von CATvba) und dann einfach in ein CATscript kopieren. Vorteil ist, du brauchst die Programmiersprache nicht wechseln (da beides VB6-Code ist). Es macht also keinen Sinn in Vb.Net zu entwickeln und dann das Ergebnis in CATScript umzuwandeln (Mehraufwand, da VB6-code <> Vb.Net). grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 23. Okt. 2009 09:13 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hi, ich habe dir doch deine Frage beantwortet So jetzt nochmal: 1. Du entwickelst das Script mit dem internen Microsoft Visual Editor als CATvba in CATIA (ohne Userformen etc.) => Der Vorteil ist das du hier eine Autovervollständigung hast, Step-by-Step Debugging nutzen kannst und eine Überwachungsfunktion für Objekte und Variablen nutzen kannst 2. Wenn du fertig bist kopierst du das Script so wie es ist ein ein CATscript rein und fertig Vergiss einfach VB.NET das ist nur zum Entwickeln von komplexen Programmen die mit CATIA kommunizieren und dabei eine GUI bereitstellen bzw. komplexe Programme die bestimmt .NET Funktionen brauchen Eine Anmerkung noch: VB.NET => Entwicklung von EXEn CATscript -> interne CATIA Makro Sprache auf Basis von Microsoft Visual Basic (keine EXE) CATvbs -> interne CATIA Makro Sprache auf Basis Visual Basic Script (keine EXE) CATvba -> interne CATIA Makro Sprache auf Basis von Microsoft Visual Basic mit UserFormen etc. (KEINE EXEn) ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 23. Okt. 2009 09:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, Hallo Dominik, mit euren Antworten steht CATvba fest. Für mich stellt sich jetzt als Weiters die Frage(n): - wie lege ich in Visual Studio ein CATvba-Projekt an? bzw. - wie erzeuge ich aus Visual Studio heraus eine CATvba-Datei? Ich hoffe ich bin bald durch ... Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 23. Okt. 2009 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo Joachim, du benutzt kein VISUAL STUDIO sondern einen Microsoft Visual Basic Editor. VB.NET = Microsft Visual Studio 2008 (eigene Software) CATVba = CATIA -> Tools -> Macro -> Visual Basic Editor So jetzt zum Ablauf: 1. Tools -> Macro -> Macros 2. Ein PopUp Fenster geht auf (Macros) -> Macro Libaries 3. Ein weiteres PopUp Fenster geht auf (Macro Libraries) -> Library type = VBA Projects -> create new Libary 4. Jetzt musst du nur noch den Pfad und Namen angeben und OK drücken 5. Das neue VBA-Projekt wird zu den Libraries hinzugefügt 6. Alt + F11 öffnet den Visual Basic Editor mit der neuen Libary 7. Script hier in einem Modul schreiben 8. Ein neues CATscript anlegen und den Code aus dem VBA-Project in das CATScript kopieren Ich habe dir da mal eine kleine PP-Präsentation vorbereitet (siehe Anhang) ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 23. Okt. 2009 10:45 <-- editieren / zitieren --> Unities abgeben:
Okay, das habe ich verstanden. Bedeutet das, dass ich ... ... um meine bestehnden CATvbs/CATscript zu ändern, ... um neue CATvbs/CATscript zu erstellen, ... um CATvba zu bearbeiten, kein Visual Studio benötige? Also umsonst beschafft habe? Oder hat das ganze auch noch einen positiven Nebeneffekt? Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 23. Okt. 2009 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Genau, du benötigst für deinen Anwendungsfall kein Visual Studio. Hast du es gekauft oder die kostenlose Express-Edition runter geladen? Falls du später mal EXE-Anwendungen (nicht unbedingt CATIA-Tools) entwickeln willst, kannst du Visual Studio dann immer noch verwenden. grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |