Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Sub CatMain() in Reaktionen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Sub CatMain() in Reaktionen (2077 mal gelesen)
BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


Sehen Sie sich das Profil von BettinaRauch an!   Senden Sie eine Private Message an BettinaRauch  Schreiben Sie einen Gästebucheintrag für BettinaRauch

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 20. Jul. 2009 16:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BettinaRauch 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von BettinaRauch an!   Senden Sie eine Private Message an BettinaRauch  Schreiben Sie einen Gästebucheintrag für BettinaRauch

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 21. Jul. 2009 10:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BettinaRauch 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von BettinaRauch an!   Senden Sie eine Private Message an BettinaRauch  Schreiben Sie einen Gästebucheintrag für BettinaRauch

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 21. Jul. 2009 11:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 ansehenProduktdesign, Industriedesign
DanielFr.
Moderator
Manager


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BettinaRauch 10 Unities + Antwort hilfreich

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz