| |
| KISTERS 3DViewStation WebViewer: Sichere 3D-Visualisierung - jederzeit und überall, eine Pressemitteilung
|
Autor
|
Thema: Macros extern über VB (11102 mal gelesen)
|
Michel_11 Mitglied Technischer Zeichner
Beiträge: 22 Registriert: 14.08.2004
|
erstellt am: 14. Aug. 2004 18:58 <-- editieren / zitieren --> Unities abgeben:
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-API -Doku nicht ... existeriert eine PDF oder Excelliste wie bei SolidWorks für die API ?? 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
Beiträge: 14 Registriert: 06.05.2004
|
erstellt am: 16. Aug. 2004 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für Michel_11
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
Beiträge: 22 Registriert: 14.08.2004
|
erstellt am: 16. Aug. 2004 11:53 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 124 Registriert: 02.07.2003 Catia V5R19 x64 Win7 x64
|
erstellt am: 21. Okt. 2004 09:43 <-- editieren / zitieren --> Unities abgeben: Nur für Michel_11
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
Beiträge: 22 Registriert: 14.08.2004
|
erstellt am: 21. Okt. 2004 11:22 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 124 Registriert: 02.07.2003 Catia V5R19 x64 Win7 x64
|
erstellt am: 21. Okt. 2004 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für Michel_11
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
Beiträge: 22 Registriert: 14.08.2004
|
erstellt am: 21. Okt. 2004 17:24 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 7 Registriert: 12.11.2003
|
erstellt am: 12. Mai. 2005 21:34 <-- editieren / zitieren --> Unities abgeben: Nur für Michel_11
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
Beiträge: 48 Registriert: 04.08.2006
|
erstellt am: 04. Sep. 2006 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für Michel_11
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
Beiträge: 22 Registriert: 14.08.2004
|
erstellt am: 04. Sep. 2006 16:09 <-- editieren / zitieren --> Unities abgeben:
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.
Beiträge: 49 Registriert: 29.08.2005
|
erstellt am: 05. Sep. 2006 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für Michel_11
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
Beiträge: 27 Registriert: 06.12.2005
|
erstellt am: 05. Sep. 2006 17:43 <-- editieren / zitieren --> Unities abgeben: Nur für Michel_11
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
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 25. Nov. 2008 07:57 <-- editieren / zitieren --> Unities abgeben: Nur für Michel_11
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 |