Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Macros extern über VB

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:  Macros extern über VB (10987 mal gelesen)
Michel_11
Mitglied
Technischer Zeichner


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

Beiträge: 22
Registriert: 14.08.2004

erstellt am: 14. Aug. 2004 18:58    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 ich habe erfolgreich Catia über Microsoft Access VBA starten können.. das System verhält sich ähnlich wie Word in der Programmierung.
Ich habe leider derzeit die Catia-APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)-Doku nicht ... existeriert eine PDF oder Excelliste wie bei SolidWorks für die APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)??
suche derzeit verzweifelt wie ich ein Catia-Macro analog dem Notepad starten kann...siehe:
CATIA.SystemService.ExecuteBackgroundProcessus ("c:\winnt\system32\notepad.exe")
Kennt jemand den equivalenten Syntax für das starten eines Macros??
vermutlich lautet der Syntax so etwa:
CATIA.SystemService.ExecuteMacro ("c:\projekte\catia\VBA\macro.name")

Ich bastel derzeit an einer Lösung über Access oder VB6-Programm Catia "fernzusteuern"; besonders in Verbindung mit einer Datenbank-Engine lassen sich ja tolle Sachen verwirklichen....

------------------
Bin schon gespannt wer alles antwortet

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

hasim
Mitglied



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

Beiträge: 14
Registriert: 06.05.2004

erstellt am: 16. Aug. 2004 10:20    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 Michel_11 10 Unities + Antwort hilfreich

Hi,

ich habe ein Beispiel im Buch gefunden, kannst ja mal probieren ob es bei dir funktioniert:

Dim E As CATBSTR
Dim SServ As SystemService
Set SServ = CATIA.SystemService
E = SServ.ExecuteScript ("C:\Temp", "Name.CATScript")

C:\Temp ist der Pfad des Macros.
Der Inhalt der Variablen "E" ist nach einem Aufruf der externen Funktion "50"

Gruß
Hasim

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Michel_11
Mitglied
Technischer Zeichner


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

Beiträge: 22
Registriert: 14.08.2004

erstellt am: 16. Aug. 2004 11:53    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

Danke für den Tipp,

scheint aber nicht zu funktionieren:

ich habe noch folgende Funktionsaufrufe gefunden (es scheint, daß man bei Catia mit ein und dem selben Befehl mehrere Aktionen auslösen zu können)

Dein Vorschlag : E = SServ.ExecuteScript ("C:\Temp", "Name.CATScript")

alternative Lösungen aus anderen Quellen:

E = SServ.ExecuteScript ("library_name.catvba",catScriptLibraryTypeVBAProject,"macro_name.vba","CATMain", params)
--> bezogen auf Aufruf einer Function aus einem VBAProjekt??

oder :
E = SServ.ExecuteScript (functionspath, ScriptLibraryTypeDirectory, "function.catvbs", "ExterneFunktion", trans)
--> bezogen auf Aufruf eines Catia-VBScript???

und sicher gibt es noch die Variante ein ´'normales' Catia-Skript aufzurufen????

Besonders interessieren mich die Parameter??? oder sind es Werte vom Typ Long???
catScriptLibraryTypeVBAProject + params
ScriptLibraryTypeDirectory + trans
(ohne diese Kenntnis scheiter der Aufruf der Funktion z.B. aus ACCESS oder VB6 heraus ... VB meint es seien Parameter...??? aber wie soll man die definieren und mit welchen Werten???)

auch im Objektbowser von Catia V5 (R9) ist der Funktionsaufruf analog den letzten Beispielen beschrieben.

Vielleicht gibt es jemand der mir die Parameter erläutern kann?
evtl. gibt es ja auch irgendwo eine hilfreiche Doku, welche die Varianten diesen Funktion erläutert.

Merkwürdig ist auch, daß Catia keinerlei Fehlermeldungen produziert, wenn 'fehlerhafte-Funktionen' aufgerufen werden. Die Variable E bleibt leer???

------------------
Bin schon gespannt wer alles antwortet

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BADU
Mitglied
Konstrukteur


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

Beiträge: 124
Registriert: 02.07.2003

Catia V5R19 x64
Win7 x64

erstellt am: 21. Okt. 2004 09:43    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 Michel_11 10 Unities + Antwort hilfreich


fehler.jpg

 
Hallo Zusammen,

Ich versuche über CATSkript mein VBA Makro aufzurufen.
So wie ich sehe wird zwar das Projekt gefunden aber nicht das Makro (siehe Bild).

Das Makro ist ein Modul und heisst Test

------------------
Gruss BADU

[Diese Nachricht wurde von BADU am 21. Okt. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Michel_11
Mitglied
Technischer Zeichner


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

Beiträge: 22
Registriert: 14.08.2004

erstellt am: 21. Okt. 2004 11:22    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

kann das jpg nicht lesen, ist leider alles verschwommen, da zu kleine Auflösung.

Bitte auch mal ein kleines Beispiel mir geben welche Zeilen im Code zu dieser Fehlermeldung führen. wird innerhalb Catia der Code abgearbeitet oder wie ich es versuche z.B. über Access und einem Objektaufruf für Catia?

------------------
Bin schon gespannt wer alles antwortet

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BADU
Mitglied
Konstrukteur


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

Beiträge: 124
Registriert: 02.07.2003

Catia V5R19 x64
Win7 x64

erstellt am: 21. Okt. 2004 12:13    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 Michel_11 10 Unities + Antwort hilfreich


fehlermeldung.jpg

 
Hallo

ich habe das Bild mal vergrössert. Wenn du ca. 3 Sekunden mit Mauszeiger im Bild bleibst, erscheint eine Schaltfäche und wenn du draufklicks wird das Bild in der tatsächliche Grösse angezeigt.

Skript (besteht nur aus eine Zeile (ist nur ein Test)):

'_____________________________________________________________
Sub CATMain()
Dim params()
CATIA.SystemService.ExecuteScript "S:\catia_v5\Testumgebung\09_Administration\06_MAKROS\test.catvba", catScriptLibraryTypeVBAProject, "test.vba", "CATMain", params
End Sub

'_____________________________________________________________

------------------
Gruss BADU

   

[Diese Nachricht wurde von BADU am 21. Okt. 2004 editiert.]

[Diese Nachricht wurde von BADU am 21. Okt. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Michel_11
Mitglied
Technischer Zeichner


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

Beiträge: 22
Registriert: 14.08.2004

erstellt am: 21. Okt. 2004 17:24    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

Ufff,
ich hab den Tanz gewonnen!

Wirklich tricke wie das bei Catia abläuft!

Habe nun folgende Varianten aus ACCESS97 - Catia V5, R12, SP2 herausgetüftelt.

a) Starten eines VB-Makros (.catvbs)
b) Starten einer Funktion aus einem VB-Project (.catvba)
c) Starten einer Funktion aus einem VB-Project mit Übergabeparameter!

es gibt aber noch mehr Varianten:
z.B. habe ich noch nicht getestet
d) Starten eines VB-Makros eingebettet in ein Catia-Part;
  wird vermutlich bei Simulationsgeschichten verwendet

das was vermutlich die Schwierigkeit ist sind die Übergabeparameter des Catia-Aufrufs
CATIA.SystemService.ExecuteScript Var1, Var2, Var3, Var4, Var5

var1 (File oder Path)
    bei Ansprechen eines VB-Projects :
    z.B."d:\users\Huber\Sat_Parameter.catvba",
    bei Ansprechen eines VB-Skripts :
    z.B."d:\users\Huber" (ohne Backslash inten an!)

var2 (Steuerparameter Catia für Funktionsaufruf)
    z.B. catScriptLibraryTypeVBAProject
          catScriptLibraryTypeDirectory usw.
    Man findet den Wert dieser Variablen indirekt mit einer kleinen
    Routine in einem Test-VBProjekt:
    z.B.
    function test
      Msgbox "SystemVariable :" & catScriptLibraryTypeProject
    end test
    In meiner Access-VB-Umgebung habe ich dann analog
    Konstanten deklarieret:
    z.B.
      Const catScriptLibraryTypeProject = 2

Var3 ist entweder der Name der Makrodatei (ohne Pfad!)
    oder der Modulname innerhalb des VB-Projects

Var4 ist der Funktionsname im Project oder Skriptdatei (CATMain)

var5 ist vom Typ "saugemein"

    hat eine Funktion keine Übergabeparameter
    so ist der Code lapidar
    Dim param()

    Das Array param wird ohne 'as' deklariert
    also nicht dim param() as variant
          oder  dim param() as integer
          usw.
    Catia wurstelt intern weiter mit dem Type CATSafeArrayVariant
    Wie das funktioniert wissen evtl. Informatiker
    Eigentlich wollte ich das Array 'sauber' deklarieren und
    übergeben... aber hier geht es nur so???

    hat eine Function Übergabeparameter, so muß exact die
    Dimensionierung dieses ominösen Feldes stimmen

    z.B. function test(Nr as Integer, txt as String)
    in Modul1, VBProject blabla.catvba

    Dim param(1)
    param(0) = 100
    Param(1) = "Bitte warten..."

Alles ganz einfach...
Aber die Catia-Programmiere könnte ich schon abwatschen.
In der Online Hilfe werden die einzelnen globalen Systemkonstanten
nicht beschrieben. Nur gut daß im Internet einige Demoquelltexte
zu finden waren, mit den undokumnetierten cat..Konstanten.
Vielleicht weiß ja jemand wo man eine Liste dieser Systemvariablen
bekommt und bei welchen Funktionen diese verwendet werden.

Wer Interesse an meiner kleinen DEMO-Access-Datei hat soll mir mailen.
Hoffe es sind nicht zu viel...

------------------
Bin schon gespannt wer alles antwortet

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

stengel
Mitglied


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

Beiträge: 7
Registriert: 12.11.2003

erstellt am: 12. Mai. 2005 21:34    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 Michel_11 10 Unities + Antwort hilfreich

Hallo,

für den Fall, dass mal jemand wieder so ein Problem hat:
Nach einem langen Marathon habe ich folgendes herausgefunden, um aus einem VB-Programm ein Makro zu starten:

Dim params()
CATIA.SystemService.ExecuteScript "D:\Makros\", catScriptLibraryTypeDirectory, "VB_gestartet.catvbs", "Test", params

Also genau anders als in anderen Texten...
Vielleicht liegt es an der Version:
Catia V5R14 SP5

Gruß
Gregor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

weissda
Mitglied
ingenieur


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

Beiträge: 48
Registriert: 04.08.2006

erstellt am: 04. Sep. 2006 15:53    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 Michel_11 10 Unities + Antwort hilfreich

Hi

Ich hätte gerne das selbe, was ihr von VB aus macht, mit der Command line gemacht. D.h. ich möchte ein Macro aus der Dos-Konsole starten und Parameter übergeben.

so etwas wie:
-run "CNEXT.exe -macro ...catvba Module1 [arg1] [arg2]"

Das Macro wird zwar gestartet aber die Argumente werden nicht übergeben/erkannt. Gibts da was Ähnliches wie dieses CATIA.Systemservice... für die command line??

Greets, Daniel.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Michel_11
Mitglied
Technischer Zeichner


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

Beiträge: 22
Registriert: 14.08.2004

erstellt am: 04. Sep. 2006 16:09    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

Wenn ich mehr Zeit hätte würde ich es mal selbst ausprobieren:

Bei DOS-Aufrufen mit Gänsefüßchen arbeiten! Dann kann man auch Dateinamen mit Leerzeichen und ggf. auch die Parameter dranhängen.

Falls das nicht klappt einfach mit Pearl oder Kicks32 (siehe NT-Resourcekit) den Aufruf über Shellexecute machen! In meinem Access-VB-Routinen läuft auch nichts anderes ab.

Vielleicht gibt es auch noch einen anderen Weg. Einfach mal die Hintergründe zum Zweck für den DOS-Aufruf hier posten!

Grüße und viel Erfolg beim Tüfteln

------------------
Bin schon gespannt wer alles antwortet

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexE78
Mitglied
Ing.


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

Beiträge: 49
Registriert: 29.08.2005

erstellt am: 05. Sep. 2006 11:58    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 Michel_11 10 Unities + Antwort hilfreich

Hallo allerseits,

meines Wissens nach kann man mit der Console nur die Macro-Datei angeben. Angaben von Funktionen/Subroutinen und/oder Argumenten werden nicht interpretiert.

Ich umgehe das, indem ich eine Art Dummy-Macro verwende, das das eigentliche Macro mit CATIA.SystemService.ExecuteMacro... startet.

Diesen Dummy kann man entweder vor jedem Aufruf neu erzeugen oder ihn mit Umgebungsvariablen (s. CATIA.SystemService.Environ) steuern.


mfg Alex

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

serrano
Mitglied
Student


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

Beiträge: 27
Registriert: 06.12.2005

erstellt am: 05. Sep. 2006 17:43    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 Michel_11 10 Unities + Antwort hilfreich

Hi,

Ich habe ein ähnliches Problem gehabt.
Ich habe die Parameter Übergabe mit hilfe einer Text-Datei (*.txt) gelöst.

Am anfang von deinem Makro sollst du zuerst die Text-Datei lesen, um die Parameter zu nehmen. Aus dieser Weise kannst du immer in deiner Text-Datei die parameter eingeben, die du brauchst.

------------------
mfg,

serrano

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadtb
Mitglied



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

Beiträge: 17
Registriert: 20.11.2008

erstellt am: 25. Nov. 2008 07:57    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 Michel_11 10 Unities + Antwort hilfreich

Bei mir funktioniert das leider nicht.
Ich habe eine .catvba - In dieser liegt ein Formular (Dialog) und 2 Module.
Das eine Modul ist eigenständig, jedoch das 2. Modul soll meinen Dialog aufrufen.
Habe es mit den
Code:
Sub Modulname()
Dim params()
..

probiert, jedoch erfolglos. Er sagt das das Modul einen Prodzedureingriffspunkt mit Sub CatMain() enthalten muss. Wenn ich den aber einfüge, meckert VB rum das das nicht unterstützt wird.

Ist es tatsächlich so schwierig einfach nur den Dialog (Play funktion in VB) zu öffnen über ein Modul?

Edit:

Ok, habs hinbekommen.
Falls einer die gleichen Probleme hat, hier die Lösung (für meinen Fall):

Code:
Sub CatMain()
Dim dlg As New Dialog
dlg.show
End Sub

In das Modul eintragen, welcher den Dialog starten soll.

Dabei heisst das Formular, also der Dialog: Dialog
Der Modulname ist egal, wird aber in Catia, sofern auf der Symbolleiste vorhanden, bei Mouseover angezeigt - also Sinnvoll benennen.

[Diese Nachricht wurde von cadtb am 25. Nov. 2008 editiert.]

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