Autor
|
Thema: Syntax von if-Abfragen (12015 mal gelesen)
|
Zapatito Mitglied
Beiträge: 13 Registriert: 24.11.2008
|
erstellt am: 26. Nov. 2008 16:38 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich möchte gerne eine Fläche abhängig von der Größe eines Paramters aktivieren/deaktivieren, bekomme im Regeleditor aber ständig Syntax-Fehlermeldungen. Könnt ihr mir mal ne korrekte Beispielsyntax für eine Abfrage in dem Stil: if (Paramter1 <= 0,1) { Parameter2 = Unwahr} posten? Bitte habt Nachsicht, dass das eine etwas popelige Frage ist, aber mein Buch gibt in der Richtung nix her und im Forum hab ich leider auch keine passende Antwort gefunden. Danke, Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
logan Mitglied MSc Distributed Computing Systems Engineering Dipl.-Ing. (FH) Softwaretechnik
Beiträge: 111 Registriert: 07.02.2005 NX 8.0.1.5 WinXP 32 Bit / WinXP 64 Bit Dell Precision M4500 / HP Z400 4GB / 12GB Nvidia Quadro 512MB / Nvidia Quadro 4000
|
erstellt am: 26. Nov. 2008 17:38 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo Zapatito, falls Parameter1 vom Typ Länge (Length) ist, solltest Du 0,1mm schreiben. Punkt/Komma bei Dezimalzahlen kann auch zu Problemen führen. Habe leider gerade kein CATIA V5 zur Hand. Viele Grüße, Logan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 26. Nov. 2008 20:59 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
|
denyo_1 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: 27. Nov. 2008 08:37 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo, das liegt eindeutig am dem Parameter "Unwahr". Obwohl du wahrscheinlich eine deutsche Sprachumgebung hast heißt di einterne Bezeichnung für einen booleschen Paramter "false". "Unwahr" wir IMHO als String betrachtet. Das führt unweigerlich zu einem Syntax-Fehler. Man kann sich die Syntaxfehler in einer Rule auch anzeigen lassen (siehe Screenshots) Beispiel: Code:
if ( `Hauptkörper\Skizze.7\Länge.23\Länge` > 80mm) {`Geometrisches Set.1\Ebene.1\Aktivität` = false }
Edit: Bild eingefügt. ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin [Diese Nachricht wurde von denyo_1 am 27. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zapatito Mitglied
Beiträge: 13 Registriert: 24.11.2008
|
erstellt am: 27. Nov. 2008 10:09 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Danke für Eure Antworten. LEIDER spuckt mir der Editor immernoch Syntaxfehler vor die Füße. Hier der Code: if ( `Geometrisches Set.1\Skizze.16\Länge.45\Länge` < 0,01mm ) {`Geometrisches Set.2\Rotieren.1\Aktivität` = false} und hier der Fehler: Syntaxfehler in Zeile 1: ungültige Struktur: syntax error (Annäherungsschlüsselwort: < , > ) @Logan: Habe Punkt und Komma probiert, keine Verbesserung. Grüße, Stefan 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: 27. Nov. 2008 10:13 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Servus Gemäß Fehlermeldung ist aber das Komma das Problem: In Fomeln immer "." verwenden. Bist du im "normalen" Formeleditor oder bearbeitest du eine Rule? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zapatito Mitglied
Beiträge: 13 Registriert: 24.11.2008
|
erstellt am: 27. Nov. 2008 10:36 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Nov. 2008 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
|
Zapatito Mitglied
Beiträge: 13 Registriert: 24.11.2008
|
erstellt am: 27. Nov. 2008 10:53 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
Beiträge: 4755 Registriert: 27.09.2000 Dell precision M4300, 4GB Arbeitsspeicher NVidia FX360M Windows XP professional SP3 CATIA V5 R16SP9, R17SP8, R18SP8, R19SP4 Adobe Acrobat 8 Linux: Ubuntu 8.04LTS
|
erstellt am: 27. Nov. 2008 17:59 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo zusammen, Zitat: Original erstellt von bgrittmann:
AFAIK kann man im Regeleditor (fog) keine if Schleifen bilden. geht nur mit einem Rule (KW-Lizenz erforderlich)
Damit liegst du leider etwas daneben. Auch wenn viele den Eindruck haben. Ich habe in einem Bauteil sowas: if (FormalSchenkelLaenge< 100mm){FormalLochabstand=10} else {FormalLochabstand=15} Diese Rule wird mit einer Formel ausgewertet, die die Verknüpfung zwischen der Rule und dem Bauteil herstellt. Die Formel sieht dann so aus: Lochabstand_horizontal=`Relations\Relations.Umschaltung_Lochabstände\Auswertung_Schenkellaengen`.Evaluate(Laenge_Schenkel_vertikal/1mm) * 1mm Damit schalte ich zwischen zwei Lochabständen um. Die formalen Parameter sind interne Parameter in der Rule, die dort erzeugt werden und wie Variablen wirken. Ich habe (noch) keine KWA-Lizenz. Viele Grüße, CEROG
------------------ Meine Firma | Website zum Buch Technisches Zeichnen mit CATIA V5 Wie stelle ich meine Fragen richtig? 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: 27. Nov. 2008 18:02 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
|
denyo_1 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: 28. Nov. 2008 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
|
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27
|
erstellt am: 10. Dez. 2008 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo! @CEROG: Könntest Du bitte mal ein kleines Beispielpart hier veröffentlichen - ich komm damit nämlich noch nicht ganz klar. P.S. Bitte mit R16 oder früher erstellt - sonst hab ich wieder andere Probleme... Danke schon mal im voraus!!! Gruß Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 10. Dez. 2008 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo Martin, hier mal ein ganz einfaches Part (R16), das die Vorgehensweise verdeutlichen soll. Das Problem ist meiner Meinung nach, das man mit Evaluate nur reelle Zahlen in die Regel übergeben kann. D.h. man kann sich keinen Textparameter mit mehreren Werten (z.B. klein, mittel, groß) definieren und diesen auswerten lassen. Aber mit 1, 2, 3 funktioniert es auch. Dann sollte man es halt in den Commant reinschreiben damit der Anwender auch weiß was er tut ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27
|
erstellt am: 10. Dez. 2008 13:30 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo! Ich hab jetzt rumprobiert und es auch lauffähig hinbekommen. Eine Frage hab ich aber noch: Wie ist Vorgehensweise bei der Erzeugung der Parameter? Ich hab jetzt: a) einen Parameter (Typ: Reelle Zahl, Name: Steuerungsparameter) erstellt b) die Regel (fog) erstellt c) bei der Bohrung "Formel bearbeiten" gemacht. Ist das ok so - oder kann der Parameter auch direkt in der Regel (fog) erstellt werden? Falls ich das so mache, erscheint aber kein Paramter im Strukturbaum. P.S. Danke für den Anhang! Gruß Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 10. Dez. 2008 13:47 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo Martin, ja die Vorgehensweise ist die richtige. Innerhalb der Regel kannst du keine "globalen" Parameter definieren (erstellen) denn alle Parameter die du im rechten Feld der Regel erstellst, sind formale Parameter die nur innerhalb der Regel selber existieren. ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27
|
erstellt am: 10. Dez. 2008 14:25 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo! Danke für die Info! Was mir da etwas komisch erscheint, das man den formalen Parameter in der Regel mit dem globalen Parameter ausserhalb der Regel steuern kann. Und das offensichtlich nur dadurch, das der Name gleich ist... Gruß Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
Beiträge: 4755 Registriert: 27.09.2000 Dell precision M4300, 4GB Arbeitsspeicher NVidia FX360M Windows XP professional SP3 CATIA V5 R16SP9, R17SP8, R18SP8, R19SP4 Adobe Acrobat 8 Linux: Ubuntu 8.04LTS
|
erstellt am: 10. Dez. 2008 18:00 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
|
CATIA-V5-User Mitglied
Beiträge: 14 Registriert: 15.10.2009
|
erstellt am: 06. Aug. 2013 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Zitat: Hallo zusammen, Zitat:Original erstellt von bgrittmann: AFAIK kann man im Regeleditor (fog) keine if Schleifen bilden. geht nur mit einem Rule (KW-Lizenz erforderlich) Damit liegst du leider etwas daneben. Auch wenn viele den Eindruck haben. Ich habe in einem Bauteil sowas: if (FormalSchenkelLaenge< 100mm){FormalLochabstand=10} else {FormalLochabstand=15} Diese Rule wird mit einer Formel ausgewertet, die die Verknüpfung zwischen der Rule und dem Bauteil herstellt. Die Formel sieht dann so aus: Lochabstand_horizontal=`Relations\Relations.Umschaltung_Lochabstände\Auswertung_Schenkellaengen`.Evaluate(Laenge_Schenkel_vertikal/1mm) * 1mm Damit schalte ich zwischen zwei Lochabständen um. Die formalen Parameter sind interne Parameter in der Rule, die dort erzeugt werden und wie Variablen wirken. Ich habe (noch) keine KWA-Lizenz. Viele Grüße, CEROG
Hallo CEROG,
ich bin auf der Suche nach einer Möglichkeit unter bestimmten Bedingungen unterschiedliche Formeln anzusteuern, auf deinen Beitrag gestoßen. Diese habe ich versucht nachzustellen um sie nachvollziehen zu können. Ich denke dass ich sie weitestgehend nachvollziehen konnte, bis auf einen Teil: Relations.Umschaltung_Lochabstände in Lochabstand_horizontal=`Relations\Relations.Umschaltung_Lochabstände\Auswertung_Schenkellaengen`.Evaluate(Laenge_Schenkel_vertikal/1mm) * 1mm - Die Evolutionsregel habe ich erstellt. - Die entsprechenden Parameter inkl. Verknüpfungen ebenfalls. Was ich nicht hinbekomme ist die Verknüpfung zwischen der Evolutionsregel (fog) und dem Bauteil. Kannst du mir hier auf die Sprünge helfen? Viele Grüße, CATIA-V5-User Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tim2007 Mitglied Konstrukteur
Beiträge: 143 Registriert: 02.01.2007 Catia V5R19SP3 XP64<P>"Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean." Sir Isaac Newton
|
erstellt am: 11. Feb. 2015 14:46 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo zusammen, wollte das gerade testen, geht auch, jedoch kann ich meine Parameter - welche ich im fog erstellt habe - nicht im Baum sehen. Ebenso kann ich keine Parameter von außerhalb des Fog verwenden. Irgendwelche Lösungen? 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: 11. Feb. 2015 17:43 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
|
Tim2007 Mitglied Konstrukteur
Beiträge: 143 Registriert: 02.01.2007 Catia V5R19SP3 XP64<P>"Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean." Sir Isaac Newton
|
erstellt am: 12. Feb. 2015 09:35 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo Bernd, danke für den Link. Ich habe das genauso verwendet, habe jedoch das Porblem, das die Parameter FormalSchenkellaenge und FormalLochabstand nur Formale Parameter sind, welche ich auch nur innerhalb des LAWs sehen und anfassen kann. Diese sind nicht im Part-Baum sichtbar und können auch nicht beim erstellen neuer Parameter gesichtet werden. Ist das ab einer bestimmten Version blockiert worden? Nachtrag: Ok, mit Relations\Law.1 ->Evaluate(Parameter ) definierst du den "Baumparameter" als input für die "LAW-Parameter" und als Ergebnis dient die Funktion an sich selbst. Da muss man mal drauf kommen. Danke dir.
[Diese Nachricht wurde von Tim2007 am 12. Feb. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CharPainter Mitglied CAD
Beiträge: 9 Registriert: 16.11.2012 Catia V5 R24 SP1 Windows 7 Prof. 64-bit 16GB RAM NVIDIA Quadro 2000
|
erstellt am: 12. Jan. 2016 14:06 <-- editieren / zitieren --> Unities abgeben: Nur für Zapatito
Hallo liebe Community! Ich hatte mich auch schon mal vor geraumer Zeit kurzzeitig mit der Regelerstellung beschäftigt. Bin damals aber auch nicht sehr weit gekommen. Aktuell habe ich das vorhaben, unsere CAD-Vorlagen in der Firma zu aktualisieren und auch zu überarbeiten. Bei einer Vorlage zur Aufnahme eines Blechteils ist es nun so, dass ich hier auch gerne wieder alles über Parameter steuern möchte, d.h. man lädt sich die Vorlage in seine Konstruktion, platziert diese über vorgegebene Geometrien und füllt eine Hand voll Parameter aus und die Aufnahme entspricht dem wie es sein soll. Nun ist es so, dass ich die Höhe der Aufnahme steuern möchte. Und zwar darf diese nur immer so hoch sein wie die Blechstärke abzüglich der Minustoleranz der Blechstärke aber jedoch mindestens 1mm. Falls letzteres der Fall ist (mindestens 1mm) muss an einem anderen Part (Klemmstecker) eine Aussparung eingebracht werden. Dies steuere ich ebenfalls über Parameter mit true/false. Mein Problem ist nun, dass ich die Regel zur Steuerung der Aufnahmenhöhe nicht realisiert bekomme. Ich hatte mir das in etwa so gedacht: if ('Höhe_Raute'>=1mm) {`Buchse_TZ 1\TZ\Block.1\Begrenzung1\Länge`='Höhe_Raute'} else {`Buchse_TZ 1\TZ\Block.1\Begrenzung1\Länge`=1mm} Der Parameter 'Höhe_Raute' berechnet sich aus den Parametern 'Blechstärke' minus 'Minustoleranz_Blech', welche man händisch eingeben muss. Eine weitere Regel über die Steuerung der Aussparung im Klemmstecker werde ich dann wohl auch noch erstellen müssen, aber eins nach dem anderen... Ich hoffe, hier werde ich geholfen...eine KWA-Lizenz liegt mir leider nicht vor. Hoffe meine Spinnereien können über "fog" realisiert werden. Danke schon mal für eure Unterstützung! Greetz Michel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |