Autor
|
Thema: Modul aus madul ausführen (1371 mal gelesen)
|
sam09x Mitglied Ingenieur
Beiträge: 4 Registriert: 23.03.2011
|
erstellt am: 23. Mrz. 2011 12:43 <-- editieren / zitieren --> Unities abgeben:
HAllo alle zusammen, ich möchte aus einem Modul ein anderes ausführen. Das klappt auch einwandfrei: Sub CATMain()
dim pam(4) dim ss pam(0)="141" pam(1)="1422" pam(3)="14" pam(4)="12" Dim SService Set SService = CATIA.SystemService call SService.ExecuteScript(foldername & load_user&"Makros/",catScriptLibraryTypeDirectory,"aufruf.catvbs", "CATMain", pam) dd=(msgbox "pam(0)= " & pam(0)) end sub '----------dieses Modul wird aufgeführt
Sub CATMain(wert1,wert2,wert3,wert4,wert5) dd=msgbox ("wert1="&wert1) wert1="4" dd=msgbox ("wert1="&wert1) End Sub Die Variable Wert1 hat erstaml den wert 141 (Wert1=pam(0)). Dann wird der Wert "4" der Varaible wert1 zugewiesen. Das Problem ist, dass dieser Wert nicht dem ausführenden Modul zurückgegeben wird pam(0)<>wert1, pam(0) bekommt seinen Ausgangswert wieder. Gibt es eine Möglichkeit, dass die neue Werte der Variablen den ausführenden Module zurückgeben werden? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Mrz. 2011 12:55 <-- editieren / zitieren --> Unities abgeben: Nur für sam09x
Servus Willkommen Im Forum. Bitte Systeminfo ausfüllen. Ich vermute dass es mit der Übergabe mit ByRef (siehe Internetsuche deines Vertrauens) klappen könnte: Sub CATMain(ByRef wert1,ByRef wert2,ByRef wert3,ByRef wert4,ByRef wert5)Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sam09x Mitglied Ingenieur
Beiträge: 4 Registriert: 23.03.2011
|
erstellt am: 23. Mrz. 2011 13:05 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Mrz. 2011 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für sam09x
Servus Da passt was nicht zusammen. Das eine Makro erwartet vier Werte mit Komma getrennt, aber beim Aufruf übergibst du nur einen Array. Wundert mich dass nicht eine Fehlermeldung ausgelöst wird (Typen unverträglich). Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sam09x Mitglied Ingenieur
Beiträge: 4 Registriert: 23.03.2011
|
erstellt am: 23. Mrz. 2011 13:21 <-- editieren / zitieren --> Unities abgeben:
das passtschon. wenn man von einem modul ein anderes aufrufst geht es nur mit array. die zahl der variablen musst mit der zahl des array übereinstimmen: pam(4)--> pam(0)=wert1; pam(1)=wert2... hat jamand eine Ahnung wie dem aufrufenden Modul der Wert neue wert der Variable wiedergegeben wird? :-((((((((((((((( Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sam09x Mitglied Ingenieur
Beiträge: 4 Registriert: 23.03.2011
|
erstellt am: 23. Mrz. 2011 16:16 <-- editieren / zitieren --> Unities abgeben:
|
| Praktikum - Hardware Engineering Machine Safety - REF56709Y | Continental entwickelt wegweisende Technologien und Dienste für die nachhaltige und vernetzte Mobilität der Menschen und ihrer Güter. Das 1871 gegründete Technologieunternehmen bietet sichere, effiziente, intelligente und erschwingliche Lösungen für Fahrzeuge, Maschinen, Verkehr und Transport. Continental erzielte 2022 einen Umsatz von 39,4 Milliarden Euro und beschäftigt aktuell rund 200.000 Mitarbeiterinnen und Mitarbeiter in 57 Ländern und Märkten.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 23. Mrz. 2011 16:38 <-- editieren / zitieren --> Unities abgeben: Nur für sam09x
Hallo, du hast einen grundsätzlichen Gedankenfehler. So wie du die Werte übergibst, arbeitest du in dieser gestarteten Funktion automatisch mit anderen Variablen. Entweder machst du daraus eine Function und gibst ein Array mit return zurück oder du musst mit Referenzen (ByRef) arbeiten. Ich pers. finde deinen Programmierstil etwas komisch, da du das Programm von anderen Makros abhängig machst. So etwas geht natürlich auch, dann macht man das aber in der Regel mit Deklarationen und den dazu gehörigen DLL´s. In deinem Fall würde ich aber eher eine Routine innerhalb des gleichen Makros machen. Außerdem würde ich niemals unterschiedliche Vorgehensweisen wählen. Entweder übergebe ich ein Array an ein Array oder ich übergebe einen Wert an eine Variable. Das dieser Wert auch aus einem Array stammen kann, ist eine andere Sache. Aber derartige Übergaben führen in größeren Programmen zu einer schlechten Lesbarkeit. (nur so am Rande) Die Schlüsselwörter sind also "VBA Function" und "VBA ByRef"... Damit kannst du mal den Herrn Google befragen, der kennt die Antwort ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |