Autor
|
Thema: Newbie needs help: Goto und Function realisieren (1647 mal gelesen)
|
LordFuture Mitglied
Beiträge: 21 Registriert: 16.03.2004 V5 R14 (Unix) (nur auf der Arbeit) (ohne Administrative Rechte) (User...)
|
erstellt am: 16. Mrz. 2004 16:20 <-- editieren / zitieren --> Unities abgeben:
Hi, hat mal jemand 5 Minuten Zeit nen Newbie auf die Beine zu helfen? Ich hab bisher VB gemacht und versuche mich jetzt in VBscript für V5R10 reinzuarbeiten und scheitere an 2 Grundlegenden Dingen. 1. Krieg ichs nicht gebacken GoTo zu realisieren. Habs Probiert mit VB-Style: sprungmarke: msgbox "Bin gesprungen" if wasweisich = 1 then GoTo sprungmarke end if Nix geht, Fehlermeldung 2. Dass selbe mit Funktionen: Function Name(person) eingabewert = person & " ging durch die Funktion" return rückgabewert End Function In Beiden Fällen werde ich vom CAD mit Fehlermeldungen beworfen (Hab ich auf Arbeit, könnt ich ggf. "Nachposten") Deshalb nun zur Frage: Würde sich mir jemand erbarmen und kurz posten was ich falsch mache bzw. die Beispiele richtig stellen? Denke dass es halt ein Formfehler ist wo von VB6 abweicht. Danke schon mal für alle Zuschriften!
------------------ Software is like sex - its better when ist free! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001
|
erstellt am: 16. Mrz. 2004 19:10 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
Also das Goto würde ich mal vergessen, das ist sowieso ein schlechter Programmierstil. Stell das Programm um mit "do while", "do until" oder "if then else" Als zweites würde ich dir raten, Dir die Hilfe für vbs von MS runterzuladen, da findest du die richtige Syntax. Für Function steht darin folgendes: [Public [Default] | Private] Function name [(arglist)] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function Arguments Public Indicates that the Function procedure is accessible to all other procedures in all scripts. Default Used only with the Public keyword in a Class block to indicate that the Function procedure is the default method for the class. An error occurs if more than one Default procedure is specified in a class. Private Indicates that the Function procedure is accessible only to other procedures in the script where it is declared or if the function is a member of a class, and that the Function procedure is accessible only to other procedures in that class. name Name of the Function; follows standard variable naming conventions. arglist List of variables representing arguments that are passed to the Function procedure when it is called. Commas separate multiple variables. statements Any group of statements to be executed within the body of the Function procedure. expression Return value of the Function. The arglist argument has the following syntax and parts: [ByVal | ByRef] varname[( )] Arguments ByVal Indicates that the argument is passed by value. ByRef Indicates that the argument is passed by reference. varname Name of the variable representing the argument; follows standard variable naming Axel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LordFuture Mitglied
Beiträge: 21 Registriert: 16.03.2004 V5 R14 (Unix) (nur auf der Arbeit) (ohne Administrative Rechte) (User...)
|
erstellt am: 16. Mrz. 2004 22:22 <-- editieren / zitieren --> Unities abgeben:
1. Hab ich auch so gelöst, manchmal ist es aber ein GoTo einfach nur Praktisch. 2. Diese MS Hilfe, kannst du mir da vielleicht nen Link Posten? Hört sich verdammt interessant an und wenn ich in Google suche bekomm ich wunderbare links zu allen Möglichen VBS-Viren angeboten. 3. Danke für die Hilfe! Werde Morgen nochmal versuchen die Funktionen umzusetzen! ------------------ Software is like sex - its better when ist free! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LordFuture Mitglied
Beiträge: 21 Registriert: 16.03.2004 V5 R14 (Unix) (nur auf der Arbeit) (ohne Administrative Rechte) (User...)
|
erstellt am: 17. Mrz. 2004 10:57 <-- editieren / zitieren --> Unities abgeben:
OK, jetzt hab ich aber Trotzdem dass Problem GoTo zu brauchen. On Error GoTo De_buging . . . . . De_buging: msgbox "Jetzt wird der Fehler mit eigener Meldung ausgegeben und verarbeitet" Resume Next Mit dieser Prozedur möchte ich RunTimeFehler des Scriptes Abfangen und in einer selbs Formulierten Meldung ausgeben (Teilen sie diesen Fehler bitte dem und dem unter der und der Telefonnummer etc. mit) oder so ähnlich. In VB6 so kein Problem nur Catia motz mich an. Kann mir doch jemand den GoTo-Befehl posten oder mir ne Alternatividee zukommen lassen? PS: Wenn mir jemand nen Link zu guten OnlineReferenzen oder Tutorials zukommen lassen kann wäre ich sehr dankbar! Kann nämlich selbst net so recht in den wirren des Internets was finden. Ach ja, danke für die Antwort Axel. Habs mittlerweile gebacken gekriegt dir die Unities zukommen zu lassen ;-) ------------------ Software is like sex - its better when ist free! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stoffel Mitglied Student
Beiträge: 322 Registriert: 09.10.2002 R6/V2010
|
erstellt am: 17. Mrz. 2004 11:19 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
|
LordFuture Mitglied
Beiträge: 21 Registriert: 16.03.2004 V5 R14 (Unix) (nur auf der Arbeit) (ohne Administrative Rechte) (User...)
|
erstellt am: 17. Mrz. 2004 12:19 <-- editieren / zitieren --> Unities abgeben:
Wow, Danke! Sieht auf den ersten Blick vielversprechend und verdammt hilfreich aus. Werd mir heute daheim nach Feierabend mal verinnerlichen. DANKE! ------------------ Software is like sex - its better when ist free! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001
|
erstellt am: 17. Mrz. 2004 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
|
LordFuture Mitglied
Beiträge: 21 Registriert: 16.03.2004 V5 R14 (Unix) (nur auf der Arbeit) (ohne Administrative Rechte) (User...)
|
erstellt am: 17. Mrz. 2004 18:08 <-- editieren / zitieren --> Unities abgeben:
Hmh, schaut mir auch net schlecht aus. Vielleicht sogar besser da die Site nicht von Microsoft zu sein scheint (Muss ich mich da irgendwo Zwangsregistrieren wenn ich für 200 Euro Software kauf die dann meine vertraulichen Benutzerinformationen ins Internet sendet...?) Funktionen laufen mitlerweile Wunderbar (mehr oder weniger Leichtsinnsfehler) und mit GoTo weis ich ja jetzt wo ich nachschaun kann. Nochmals ein großes Danke für eure Hilfe! schrift.style=sehrdick >D A N K E< ------------------ Software is like sex - its better when ist free! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LordFuture Mitglied
Beiträge: 21 Registriert: 16.03.2004 V5 R14 (Unix) (nur auf der Arbeit) (ohne Administrative Rechte) (User...)
|
erstellt am: 18. Mrz. 2004 21:44 <-- editieren / zitieren --> Unities abgeben:
Hmh, jetzt müsst ich aber trotzdem nochmal auf den GoTo zu sprechen kommen. http://support.microsoft.com/default.aspx?scid=kb;en-us;190273 Wie ich des verstehe ist des eine Liste der VB-Kommandos wo in VBScript nicht funzen (seeeeeeeehr praktisch für mich alten VBler). Dort ist auch On Error GoTo aufgeführt. Heist dass ich kann keine Fehler abfangen und meine eigene Fehlerbahdnlungsroutine schreiben oder funzt des nur anders. Wenn anders, kann mir jemand mal nen Wink mit dem Zaunpfahl schreiben? PS: Hab erfolgreich meine ersten beiden Scripte fertig. Kann ich sie gleich nächste Woche bei meinem neuen Spritzgusswerkzeug verwenden. Deswegen nochmals Danke für eure Hilfe denn sonst hät ich jetzt noch fast nix! ------------------ Software is like sex - its better when ist free! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dusches Mitglied
Beiträge: 26 Registriert: 26.03.2010
|
erstellt am: 06. Mai. 2010 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
Hallo! Ich habe versucht eine do while schleife in eine funktion zu schreiben, weil ich diese öfters benötige und die Eingangsdaten sich aber ändern. Ohne Funktion klappt das ganze ohne Probleme. Bei der Funktion ist das Problem, dass der erste Messwert in die Schleife übernommen wird. Nach einem Update soll sich die Punktkoordinate und die Messung ändern. Die Werte bleiben aber gleich, sodass die Schleife nie zu einem Ende kommt. Hat mir jemand einen Tip, wie ich pro Schleifendurchlauf einen neuen Messwert bekomme? Grüße Markus __________________________________ ... ... Punktkoord_1.value = schleife(Punktkoord.value,Messung1.value) End Sub Function schleife(a,Messung)
Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part dim start start = a do while Messung > 0 a = start Part1.Update start = start + 1 loop part1.update End Function
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: 06. Mai. 2010 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
Hallo Markus, leider verstehe ich nicht ganz was genau du machen möchtest. Die Zuweisung Punktkoord_1.value = schleife(Punktkoord.value,Messung1.value) kann so nicht funktionieren. Die Funktion an sich gibt ja gar keinen Wert zurück. Beschreibe doch mal was du mit deinem Makro überhaupt machen willst. Was ich bisher rauslesen konnte ist folgendes: 1. Du hast in einem Part einen Punkt 2. Du hast in diesem Part ein "Messobjekt" das dir den Abstand des Punktes zu einem anderen Objekt zurückgibt 3. Du willst die Funktion (bzw. die Schleife) anhalten respektive beenden sobald der Abstand gleich 0 ist. Wenn ich das alles richtig geschlussfolgert habe dann willst du nach der Messung diesen Wert dem Punkt zuweisen. Der Wert des Punktes (im Zusammenhang mit dem anderen Objekt auf das sich die Messung bezieht) ist dann IMMER 0 da das dein Abbruchkriterium der Schleife ist!
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dusches Mitglied
Beiträge: 26 Registriert: 26.03.2010
|
erstellt am: 06. Mai. 2010 09:57 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
Hallo Daniel, vielen Dank für deine schnelle Antwort! Die ersten 3 Punkte hast du richtig erkannt. Aber die Schleife gibt den Koordinatenwert des Punktes zurück. Dieser Wert soll so lange verändert werden bis die Messung=0 ist. z.B. x-Koordinate:10 ; Messung = 0.3 x-Koordinate:11 ; Messung = 0.2 x-Koordinate:12 ; Messung = 0.1 x-Koordinate:13 ; Messung = 0 --> hier hört die Schleife auf und setzt die koordinaten des Punktes auf 13. Wie gesagt, ohne Funktion klappt es ohne Probleme. Bei der Funktion vermute ich, dass der erste Messwert (im Beispiel 0.3) übergeben wird und dann aber nicht mehr geändert wird. D.h. mein Abbruchkriterium Messung=0 wird nie erreicht weil der Wert des parameters Messung in der Funktion konstant bei 0.3 bleibt.
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: 06. Mai. 2010 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
|
dusches Mitglied
Beiträge: 26 Registriert: 26.03.2010
|
erstellt am: 06. Mai. 2010 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
|
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: 06. Mai. 2010 13:44 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
|
dusches Mitglied
Beiträge: 26 Registriert: 26.03.2010
|
erstellt am: 06. Mai. 2010 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
wow!vielen Dank dafür! das ist ja umfangreicher als ich dachte. Ich brauche zwar ein bisschen um das alles richtig zu verstehen, aber darauf kann ich aufbauen. Ich hatte die Messung bisher als parameter im Strukturbaum und diesen Wert dann ins Makro übernommen. mal sehen, vielleicht muss ich das umändern. danke für die Mühe! 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: 07. Mai. 2010 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für LordFuture
Hallo , es gibt bei Scripten immer Probleme wenn du auf die Werte aus den Parameters (Messung) zugreifst. Innerhalb von CATIA gibt es eine Einstellung die darüber entscheidet ob die Messungen im Part bzw. Produkt automatisch upgedatet werden oder nicht. D.h. du müsstest im Script erst einmal diese Einstellung abfragen (wenn sie auf false (nicht automatisch updaten) steht musst du sie auf true (automatisch updaten) stellen) um überhaupt ein ordentliches Ergebnis zu bekommen (ansonsten wird die Messung im Part nicht upgedatet und der Wert ändert sich wieder nicht). Nach beendigung der Verschiebung muss du die Einstellu ng natürlich wieder auf den Ursprungszustand setzen. Das sehen viele Leute aber nicht so gerne wenn man mit Scripten in IHREN Einstellungen rumpfuscht Des weiteren ist die Messung im Script selber wesentlich performanter, da du das Feature im Konstruktionsbaum nicht benötigst und somit die upzudatende Datenmenge geringer ist. ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |