Autor
|
Thema: Sub CatMain() in Reaktionen (2077 mal gelesen)
|
BettinaRauch Mitglied BA-Studentin, Fahrzeug-System-Engineering
Beiträge: 65 Registriert: 06.07.2009 Catia V5 R19
|
erstellt am: 20. Jul. 2009 16:11 <-- editieren / zitieren --> Unities abgeben:
Hallo, hab ein (meiner Meinung nach) schönes Makro programmiert, welches einwandfrei funktioniert. Nun will ich das Ganze über eine Reaktion, bzw. ein VB-Script ablaufen lassen. Das Problem ist jetzt, dass in meinem eigentlichen Makro einige Sachen global deklariert sind, also vor dem Sub CatMain() stehen. In der Reaktion kommt jetzt an dieser Stelle ne Fehlermeldung, weil das Sub CATMain() ja schon automatisch am Anfang steht... Heißt das, dass ich in einer Reaktion nichts global deklarieren kann? Wär toll, wenn da jemand Bescheid weiß. Gruß Betty 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: 20. Jul. 2009 18:01 <-- editieren / zitieren --> Unities abgeben: Nur für BettinaRauch
Hallo Betty, nein in einer Reaction kannst du definitiv keine globalen Variablen deklarieren und das ist auch gar nicht nötig In der Klasse SystemService gibt es die Funktion ExecuteScript, mit der man aus einem *.catscript oder einer *.catvba oder einer Reaction ein anderes Script oder eine andere *.catvba aufrufen kann. Hier mal ein kleines Beispiel: In deiner Reaction (vb script) steht folgendes: Code:
Sub main Dim Params() Set SServ = CATIA.SystemService LibPath = "C:\Test\Test.catvba" ScriptName = "Modul1" FunctionName = "CATMain" Call SServ.ExecuteScript(LibPath, catScriptLibraryTypeVBAProject, ScriptName, FunctionName, Params) End Sub
Wenn die Reaction ausgelösst wird, wird die Test.catvba geöffnet und im Modul1 die CatMain ausgeführt. Da dies eine *.catvba Datei ist kannst du hier die globalen Deklarationen machen. Ggf. könntest du sogar der CATMain aus der vba-Datei noch Parameter übergeben (die du z.B. zuerst in der Reaction ausließt) [EDIT] Hier noch ein kleines Beispiel mit nativen CATIA Dateien. Das ganze Teil ist ein selbstextrahierendes Archiv und wird unter C:\temp installiert. Anschließend muss die Library zu CATIA hinzugefügt werden und die Steuerlaenge im Steuersketch geändert werden. Hierdurch wird die Reaction ausgelösst die widerrum aus der *.catvba Library die CATMain startet. Dateien wurden mir R18 erstellt [/EDIT] ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BettinaRauch Mitglied BA-Studentin, Fahrzeug-System-Engineering
Beiträge: 65 Registriert: 06.07.2009 Catia V5 R19
|
erstellt am: 21. Jul. 2009 10:37 <-- editieren / zitieren --> Unities abgeben:
Hi, vielen Dank für deine Antwort, auch wenn ich auf was anderes gehofft hab. Es geht halt nicht immer alles so wie man will. Ich werde deine Lösung mit der Catvba-Datei auf jeden Fall mal ausprobieren, auch wenn ich mir noch nicht wirklich sicher bin, ob das den Anwendern dann gefällt. Werd mich mal erkundigen... Ansonsten lass ich mir halt mal wieder was anderes einfallen... Viele Grüße Betty 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: 21. Jul. 2009 11:08 <-- editieren / zitieren --> Unities abgeben: Nur für BettinaRauch
Hi, warum das bekommen doch die Anwender gar nicht mit. Auf die *.catvba kannst du ein Paswort vergeben dann kann auch gar keiner dran rumbasteln. Der Endanwender bekommt nur das Ergebniss zu sehen nicht aber den internen Ablauf. Von dem her verstehe ich jetzt nicht ganz das Problem . Falls nicht alle Anwender eine *.catvba ausführen können (weil kein VB-Editor installiert ist) bleibt dir immer noch die Möglichkeit deine *.catvba in ein *.catscript umzuschreiben und dieses ausführen zu lassen (falls du keine internen Basic Befehle nutzt sondern nur CATIA-Befehle abarbeitest). Wenn du das alles nicht willst bleibt dir noch die Möglichkeit OHNE Funktionen, Übergaben, Unter-Sub´s und globale Variablen zu arbeiten. Dann muss aber alles in die Main (Sub) der Reaction rein und das wird IMHO ziemlich unübersichtlich was dem Anwender auch nicht gefallen wird . ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BettinaRauch Mitglied BA-Studentin, Fahrzeug-System-Engineering
Beiträge: 65 Registriert: 06.07.2009 Catia V5 R19
|
erstellt am: 21. Jul. 2009 11:19 <-- editieren / zitieren --> Unities abgeben:
Ja, das mit den Unterfunktionen und so stimmt auf jeden Fall. Mein Problem ist, dass das Makro über eine PowerCopy gestartet werden soll. Deshalb muss ich das Ganze über eine Reaktion oder ein Cat-Script ausführen lassen. Das Problem an deiner Lösung ist (sofern ich das richtig verstanden hab - hab noch keine Zeit, dass zu probieren), dass ich die catvba-Datei ja unter einem extra Verzeichnis abspeichern muss, damit ich diese Datei dann über die Reaktion laufen lassen kann. Und irgendwelche Dateien irgendwo abspeichern ist hier nicht sehr beliebt (man könnte die ja löschen, verschieben, ...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Produktdesigner (m/w/d) | Seit unserer Gründung in 1996 wachsen wir jährlich um durchschnittlich fast 10 Mitarbeiter. Alle zwei Jahre haben wir angebaut. So schaffen wir Platz für die Ideen und den Tatendrang unserer mittlerweile 160 Mitarbeiter. Als klassischer Lohnfertigungsbetrieb stecken wir bei Deeg unsere ganze Energie in die Fertigung von allem, was mit Blechen zu tun hat. Ob Teileherstellung, Konstruktion oder Baugruppenmontage, ... | Anzeige ansehen | Produktdesign, Industriedesign |
|
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: 21. Jul. 2009 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für BettinaRauch
Hallo, nein du hast die tragweite der Funktion noch nicht verstanden. Es gibt 4 verscheidene Arten von Makro´s. 1. *.catscript (extern als eigene Datei gespeichert) 2. *.catvba (braucht eine externe eigene Library) 3. *.catvbs (extern als eigene Datei gespeichert) 4. *.catscript (innerhalb eine Part (bzw. Dokuments) gespeichert) Du brauchst den Punkt 4. Die Reaction UND das *.catscript befindet sich innerhalb des Dokuments (in dem auch dein PowerCopy ist). Du brauchst kein eigenen Speicherort, etc. Dennoch kannst du mit dieser Funktion ExecuteScript ein im Dokument gespeichertes Script aufrufen und ausführen. Geh mal in die V5Automation.chm und schau dir die Funktion an oder suche hier einfach mal im Forum. Da gibt es genügend Beispeile zu deiner Problematik ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|