Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Case Verzweigung

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:  Case Verzweigung (1819 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: 23. Jul. 2009 07: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

Hallo,

mein kleines Problem ist zwar wahrscheinlich auch mit der Hilfe von anderen Forum-Einträgen zu lösen, da die Suchmaschine aber immer noch offline ist, hoffe ich, dass mir so auch schnell geholfen wird.

Hab einen Parameter (Typ Boolean) in meinem Part erstellt und will jetzt mit nem Makro ne Case-Verzweigung abfragen, das funktioniert aber nicht so wie ich es will. Die Abfrage springt immer in die CaseElse-Anweisung, egal wie ich den Parameter einstelle, bzw. was ich ins Makro schreibe. Ok, das stimmt nicht ganz, in manchen Fällen kommt auch ne Fehlermeldung.  Hier ist mal mein Code (in einer Variante ohne Fehlermeldung):

---------------------
Sub CATMain()
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("DIN 6935")
Var4 = Para1.Value

Select Case Var4
Case Var4 = true
MsgBox (Var4)
Case Else
MsgBox ("blöd")
End Select
End Sub
---------------------

Gruß Betty

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 23. Jul. 2009 08:33    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

Servus
Müsste es nicht:
Code:

Sub CATMain()
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("DIN 6935")
Var4 = Para1.Value

Select Case Var4
Case True
MsgBox (Var4)
Case Else
MsgBox ("blöd")
End Select
End Sub



heißen?

Gruß
Bernd

PS: Mit Google funktioniert die Suche immer noch zB "case catia site:cad.de" oder allgmein nur nach "VB case"

------------------
Warum einfach, wenn es auch kompliziert geht.

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: 23. Jul. 2009 09: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

Danke für deine Antwort. Leider funktioniert es immer noch nicht. Hab inzwischen auch mal bei "google" gesucht... kein Erfolg!
Hab jetzt ne Vermutung:
Kann es sein, dass man keinen Parameter mit dem Typ Boolean in ner Case-Anweisung abfragen kann? Denn wenn ich einen anderen Parametertyp (length) abfrage, dann bekomm ich die Case-Verzweigung einwandfrei hin, bzw. wenn ich meinen Code wie folgt schreibe, dann kommt gar keine Ausgabe mehr.
---------------------
Sub CATMain()
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("DIN 6935")
Var4 = Para1.Value

Select Case Var4
Case true
MsgBox (Var4)
Case false
MsgBox ("blöd")
End Select
End Sub
---------------------

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


Ex-Mitglied

erstellt am: 23. Jul. 2009 09:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Bettina,
für die Fehlersuche oft hilfreich ist den Wert der
Variablen zu überprüfen. Da ein Debugger in CATIA fehlt,
ist die Msgbox ein gutes Mittel

Was enthält Var4 ?

Sub CATMain()
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("DIN 6935")
Var4 = Para1.Value

MsgBox (Var4)

Select Case Var4
Case true
MsgBox (Var4)
Case false
MsgBox ("blöd")
End Select
End Sub

Gruß Martin

------------------
mb 

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: 23. Jul. 2009 09:39    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,

Danke, dass ihr euch mit meinem Problem beschäftigt.

Leider hab ich den Anstoss von Martin auch schon probiert und bin dadurch zu keinem Ergebnis gekommen. Bei einer Überprüfung des Wertes kommt: 'wahr' heraus. Hab deswegen auch versucht, den Code mit wahr/unwahr, "wahr"/"unwahr", "true"/"false" zum Laufen zu bekommen -> funktioniert aber alles nicht.

Langsam am verzweifeln, denn: das ist bestimmt total banal! 
Viele Grüße
Betty

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


Ex-Mitglied

erstellt am: 23. Jul. 2009 09:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

was kommt so raus ?

Sub CATMain()
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("DIN 6935")
Var4 = Para1.Value

MsgBox (Var4)

If Var4 Then
  MsgBox "wahr  " & Var4
Else
  MsgBox "blöd" & Var4
End If

End Sub


Gruß Martin

------------------
mb 

BigCheese
Mitglied
Dipl-Ing


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

Beiträge: 130
Registriert: 12.05.2004

CATIA V5R19 SP3

erstellt am: 23. Jul. 2009 10:02    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

Guten Morgen Betty,

es ist in der Tat recht banal...  

Code:
Case "True"

sollte es tun. Einfach die Abfrage in Anführungszeichen setzen.
Ich schätze, dass der Rückgabewert des Parameters einfach als String zu behandeln ist.

Grüße, Alex

Mist, zu langsam 

[Diese Nachricht wurde von BigCheese am 23. Jul. 2009 editiert.]

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: 23. Jul. 2009 10:27    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

@ BigCheese: Danke auch für deine Antwort. Leider hab ich das probiert und es funktioniert nicht (siehe weiter oben)

@ marbat: Also die If-verzweigung funktioniert, auch wenn ich nicht ganz verstehe warum. In der If-Abfrage steht doch nur 'Wenn Var4 Dann' ... woher weiß der jetzt, ob er auf wahr oder falsch prüfen soll? (Wär allein für mein Verständnis hilfreich. Ich hätte nämlich wieder 'If Var4 = true Then' oder Ähnliches probiert. Das funktioniert aber natürlich wieder nicht... und ich dachte, dass ich die If-Verzweigungen verstanden hätte.)
Da deine If-Verzweigung aber funktioniert, hab ich versucht, das auf das Case anzuwenden:

Select Case Var4
Case Var4
MsgBox ("gut")
Case Else
MsgBox ("blöd")
End Select

In dem Fall wird aber immer nur "gut" angezeigt, egal ob der Parameter auf 'true' oder 'false' eingestellt ist. 

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


Ex-Mitglied

erstellt am: 23. Jul. 2009 10:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

If Var4  ist gleichbedeutend wie If Var4=True

die Werte für Boolean-Variabeln sind True=-1 und False=0

probier mal das aus

Select Case Var4
  case -1
       MsgBox "wahr  " & Var4
  case 0
      MsgBox "falsch  " & Var4
End Select

vermutlich hat @BigChees recht und Var4 ist ein String

wenn das so ist, versuch einmal nach
Var4 = Para1.Value
Var4=Ucase(Var4)

und prüfe dann auf WAHR oder FALSCH

------------------
mb  

[Diese Nachricht wurde von marbat am 23. Jul. 2009 editiert.]

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: 23. Jul. 2009 11:23    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

Ha! Ist also doch banal, zumindest wenn man es weiß (wie immer). Das mit den Werten für die Boolean-Variablen funktioniert, zumindest wenn man für True = 1 setzt.
Wenn man das Ganze mit Upcase versucht kommt ne Fehlermeldung: "Typen unverträglich 'Upcase'"

So, ich hoffe, dass das vielleicht auch noch ein paar anderen Leuten hilft. Danke an alle, die was gepostet haben und marbat bekommt natürlich ein paar Unities für die Lösung und das Durchhalten bei so nem "banalen" Problem 

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

BigCheese
Mitglied
Dipl-Ing


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

Beiträge: 130
Registriert: 12.05.2004

CATIA V5R19 SP3

erstellt am: 23. Jul. 2009 11:33    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

Nochmals hallo,

ich habe mir die Sache nun nochmals angeschaut und stelle fest, dass CATIA mich immer wieder überraschen kann...
Anscheinend macht es auch noch einen Unterschied, ob Du mit VBA oder catvbs programmierst.
Mit VBA würde es so funktionieren, wie ich es oben beschrieben habe.

In catvbs habe ich es wie folgt zum Laufen bekommen:

Code:
Sub CATMain()
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.Item("DIN 6935")
Var4 = Para1.Value
MsgBox Var4
Select Case Var4
Case "Wahr"
    MsgBox (Var4)
Case "Falsch"
    MsgBox ("blöd")
End Select
End Sub

Man beachte dabei unbedingt die Groß/Kleinschreibung: "wahr" <> "Wahr"....
catvbs holt sich den Zustand wohl in deutsch...

Meiner Meinung nach ist für die Abfrage einer booleschen Variablen eine Select-Case Anweisung etwas übertrieben. Ich würde da eher zur vorgeschlagenen If-Then-Abfrage tendieren.

Grüße, Alex

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: 23. Jul. 2009 11:41    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

Ach ne... Groß- und Kleinschreibung! Also jetzt funktioniert es bei mir auch. Da hätte ich ja auch echt selber drauf kommen können... 

Ich mach nicht nur so ne einfache Abfrage... da kommt schon noch mehr rein. Es ist aber halt schon an dem kleinen Problem gescheitert.

Danke.

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 23. Jul. 2009 13: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 Nur für BettinaRauch 10 Unities + Antwort hilfreich

Ich glaube was Alex meint, ist dass es bei einer boolean-Variable sowieso immer nur 2 Werte gibt und das mit einer IF-Abfrage problemlos gelöst werden kann, egal wie umfangreich dein zusätzlicher Code ist.
Select Case Abfragen werden eher für Funktionen eingesetzt, in denen eine Variable (viel) mehr Werte annehmen kann.

Grüße Dominik

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: 23. Jul. 2009 13:45    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, aber wenn ich zum Beispiel zwei Boolean-Werte mit einer And-Anweisung koppel, dann hab ich doch schon vier verschiedene Abfragen:
Wahr-Wahr
Wahr-Falsch
Falsch-Wahr
Falsch-Falsch
Oder ist es dann mit einer If-Anweisung immer noch einfacher? Dann müsste ich doch ne verschachtelte If-Anweisung basteln, oder?

Noch ne andere Frage: Wenn ich mit case 'größer als' oder 'kleiner als' abfragen will, wie macht man das?
Hab es mit 'Case Is > 2', 'Case >2', 'Case Is >"2"', 'Case >"2" ', ... probiert.

Heute ist echt so n Tag, da funktioniert noch nicht so viel... will nach Hause...

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 23. Jul. 2009 14:16    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

Da das ganze nicht mehr viel mit CATIA zu tun hat, sondern eher mit Programmier-Grundlagen, habe ich folgenden Link für dich:
http://www.vb-seminar.de/vb_21.htm

Grüße Dominik

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


Ex-Mitglied

erstellt am: 23. Jul. 2009 14:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Bettina,
hier ein Auszug aus

http://msdn.microsoft.com/de-de/library/2f43da0y(VS.80).aspx

Visual Basic-Sprachreferenz
Select...Case-Anweisung (Visual Basic)
Führt je nach dem Wert eines Ausdrucks eine von mehreren Anweisungsgruppen aus.

Select [ Case ] testexpression
    [ Case expressionlist
        [ statements ] ]
    [ Case Else
        [ elsestatements ] ]
End Select Bestandteile

testexpression Erforderlich.
Ausdruck. Muss einem der elementaren Datentypen entsprechen (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong oder UShort).

expressionlist
In einer Case-Anweisung erforderlich. Eine Liste von Ausdrucksklauseln, die Vergleichswerte für testexpression darstellen. Mehrere Ausdrucksklauseln werden durch Komma voneinander getrennt. Eine Klausel kann folgendermaßen strukturiert sein:

expression1 To expression2

[ Is ] comparisonoperator expression

expression

Mit dem To-Schlüsselwort geben Sie die Begrenzungen eines Bereichs von Vergleichswerten für testexpression an. Der Wert von expression1 muss kleiner oder gleich dem Wert von expression2 sein.

Verwenden Sie das Is-Schlüsselwort mit einem Vergleichsoperator (=, <>, <, <=, > oder >=) um eine Einschränkung der Vergleichswerte für testexpression anzugeben. Wenn das Is-Schlüsselwort nicht angegeben wird, wird es automatisch vor comparisonoperator eingefügt.

Die Variante, nur expression anzugeben, wird als Sonderfall der Is-Variante behandelt, bei dem comparisonoperator das Gleichheitszeichen (=) ist. Diese Variante wird als testexpression = expression ausgewertet.

Die Ausdrücke in expressionlist können einen beliebigen Datentyp aufweisen, vorausgesetzt, sie können implizit in den Datentyp von testexpression konvertiert werden, und der entsprechende comparisonoperator ist für die beiden verwendeten Datentypen gültig.

statements
Optional. Eine oder mehrere Anweisungen nach Case, die ausgeführt werden, wenn testexpression mit einer beliebigen Klausel in expressionlist übereinstimmt.

elsestatements
Optional. Eine oder mehrere Anweisungen nach Case Else, die ausgeführt werden, wenn testexpression mit keiner Klausel in der expressionlist einer der Case-Anweisungen übereinstimmt.

End Select
Beendet die Definition der Select...Case-Konstruktion.


Deine Frage zu If Then:

Prinzip

If A and B then

ElseIf A and NOT B then

ElseIf NOT A and B then

Else    das wäre dann (NOT A and NOT B)

End If

------------------
mb 

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: 23. Jul. 2009 16:25    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,

Danke für eure Inforamtionen. Leider muss ich gestehen, dass ich damit nicht wirklich weitergekommen bin. Ich hab auch noch ein paar Bücher zur Makroprogrammierung auf meinem Tisch liegen, aber funktionieren tut es trotzdem nicht.
Hier mal mein erstes Problem:
Hab einen Parameter erzeugt (length). Dann hab ich ne If-Anweisung geschrieben. Das funktioniert auch:
--------------------
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("Radius")
Var1 = Para1.Value

If Var1 > "0" Then
MsgBox ("Das Tool wird angewendet")
ElseIf Var1 = "0" Then
MsgBox ("Das Tool kommt zu keiner Lösung")
Else
MsgBox ("Eingabe stimmt nicht!")
End If
--------------------

Jetzt wollte ich das Ganze in eine Case-Anweisung schreiben. Da kommt die Fehlermeldung: 'Syntaxfehler'. Mein Code sieht bis jetzt so aus:

--------------------
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("Radius")
Var1 = Para1.Value

Select Case Var1
Case Is > "0" '<- hier wird schon gemeckert!
MsgBox ("Das Tool wird angewendet")
Case "0"
MsgBox ("Das Tool kommt zu keiner Lösung")
Case Else
MsgBox ("Eingabe stimmt nicht!")
End Select
--------------------

Ist das mit Case in dem Fall gar nicht so einfach? Ich dachte eigentlich, dass "Select-Case-Else" leistungsfähiger ist als "If-Then-Else" (zumindest steht das in einem meiner schlauen Bücher). Wenn dem nicht so ist, dann verstehe ich den Sinn von Case wohl doch noch nicht richtig.
Vor allem íst das noch nicht alles. Jetzt kommt nämlich erst noch was richtig Tolles.
Zweites Problem:
Hab jetzt 3 Parameter (length, length, Boolean).
Das funktioniert als If-Anweisung auch wieder ganz perfekt, als Case-Anweisung bekomm ich das natürlich auch nicht hin, wobei ich nicht glaub, dass es da nur an dem ersten Problem hängt, sondern auch daran, wie ich in einer Case-Abfrage mehrere Variablen Selektieren kann. Da wird zumindest schon gemeckert, wenn ich es mit ner Kommatrennung probiere.
Hier erstmal das Ganze als If-Code:
--------------------
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("Radius")
Var1 = Para1.Value
Set Para2 = Parameter.item ("Abstand")
Var2 = Para2.Value
Set Para3 = Parameter.item ("DIN")
Var3 = Para3.Value

If Var1 > "0" AND Var2 > "0" AND Var3 = "Wahr" Then
MsgBox ("Das Tool wird angewendet")
ElseIf (Var1 = "0" OR Var2 = "0") AND Var3 = "Wahr" Then
MsgBox ("Das Tool kommt zu keiner Lösung")
Else
MsgBox ("Eingabe stimmt nicht!")
End If
--------------------

Als Case-Code hab ich es so geschrieben (auch wenn ich das erste Problem noch nicht gelöst hab.)

--------------------
Set Parameter = CATIA.ActiveDocument.Part.Parameters
Set Para1 = Parameter.item ("Radius")
Var1 = Para1.Value
Set Para2 = Parameter.item ("Abstand")
Var2 = Para2.Value
Set Para3 = Parameter.item ("DIN")
Var3 = Para3.Value

Select Case Var1, Var2, Var3 ‘<- Das gefällt anscheinend schon nicht!
Case Is > "0" AND > "0" AND = "WAHR"
MsgBox ("Das Tool wird angewendet")
Case "0" OR "0" AND = "WAHR"
MsgBox ("Das Tool kommt zu keiner Lösung")
Case Else
MsgBox ("Eingabe stimmt nicht!")
End Select
--------------------

Könnt ihr mit dem ganzen Zeug was anfangen? Bzw. könnt ihr nachvollziehen, was mein Problem ist?

Schönen Abend noch.
Betty

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 23. Jul. 2009 18:38    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,

ich muss dir leider sagen, dass die Compiler berechtigt an den angegebenen Zeilen meckern, weil die einfach falsch sind.
Ein Select-Case ist in manchen Fällen effektiver als if-then-else, in vielen Büchern wird aber gerade bei VB von Select-Case abgeraten, da es langsamer ist als if-then-elseif-else.
Bei Case darf man nicht mehrere Variable übergeben, woher sollte das Programm auch wissen, wie die Informationen kombiniert werden sollten. Ich schätze, größer/kleiner oder sowas darf es auch nicht geben, eigentlich nur "aufzählbare" Sachen wie Integer oder Enums, vielleicht noch Strings (wobei letzteres nicht in jede Sprache unterstüzt wird).
Einen Boolean würde ich nie über Select-Case prüfen.

Anbei ein Beispiel für die richtige Anwendung von Select-Case und dasselbe dahinter mit If-Then-Else

Code:
dim i as integer
select case i
  case 1
    msgbox("1")
  case 2 to 5
    msgbox("2-5")
  case 6
    msgbox("6")
  case else
    msgbox("sonst was")
end select

if i=1 then
    msgbox("1")
elseif (i<=2 and i>=5) then
    msgbox("2-5")
elseif i=6 then
    msgbox("6")
else
    msgbox("sonst was")
end if


Gruß,
Zoltan

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: 24. Jul. 2009 07:18    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. Hat meine Gehirnzellen um einiges bereichert... Dann werde ich mich jetzt mal um meine ganzen If-Abfragen kümmern 

MfG Betty

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


Ex-Mitglied

erstellt am: 24. Jul. 2009 08:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Bettina,
ich möchte dazu noch anmerken,es ist sicher gut, wenn man sich zuerst darüber einigt von was man "spricht".
Ist CATIA in deutscher od. engl. Version
Was wird verwendet, CATScript, MS Vbscript od. catvba
dadurch ergibt sich dann auch bei Boolean
ist es wahr, Wahr oder doch True
ist True nun 1 od. -1

Sonst kann ich Zoltan nur beipflichten.
Select case eignet sich vor allem bei "aufzählbarem"

z. B. enthält Var Klein- od. Großbuchstaben
  case "a" to "z"
  case "A" to "Z"
  case 1 to 100
usw.

Gruß Martin

------------------
mb 

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: 29. Jul. 2009 11:00    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,

ja, sorry, dass ich das nicht beachtet hab. Also ich schreib eigentlich grad alles nur in VBscript und meine Catia Oberfläche ist eigentlich auf Englisch eingestellt. Dennoch nimmt er bei den Makros manchmal deutsche Bezeichnungen (wie zum Bsp. "Wahr" und "Falsch" - gehe daher mal davon aus, dass das halt doch ne deutsche Version ist.
Werde das beim nächsten Mal gleich mit reinschreiben.

Gruß Betty

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