| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: IF-Beziehung (10126 mal gelesen)
|
asigrist Mitglied Konstrukteur/Entwickler
Beiträge: 57 Registriert: 14.06.2005 Creo Parametric 3.0 M080
|
erstellt am: 13. Dez. 2012 15:38 <-- editieren / zitieren --> Unities abgeben:
Liebe Pro/E-Gemeinde Ich gelang mal wieder mit einem kleineren Pro/E-blem an euch. Ich bin mir sicher, dass ihr mir weiterhelfen könnt. Ich habe schon heute eine halben Tag alle Foren und das Internet nach einer Lösung durchforstet, jedoch nicht fündig geworden. Folgende Anforderung: Wenn der Schaftdurchmesser zwischen 1.0mm und 2.4mm liegt, muss die Schaftlänge 18mm sein. Wenn der Schaftdurchmesser zwischen 2.5mm und 2.9mm liegt, muss die Schaftlänge 23mm sein. Wenn der Schaftdurchmesser zwischen 3.2mm und 4.0mm liegt, muss die Schaftlänge 33mm sein. Ich möchte dies mit einer IF-Beziehung regeln, folgendes habe ich bereits geschrieben: IF Dx>1.0|Dx<2.4 L2=18 ENDIF IF Dx>2.4|Dx<2.9 L2=23 ENDIF IF Dx>3.2|Dx<4.0 L2=33 ENDIF Diese Beziehung gibt keine Fehlermeldung heraus. Jedoch wenn ich im Modell das Mass doppelklicke, erschein die Meldung: Bemaßung in part.prt wird von Beziehung L2=33 gesteuert. Diese Meldung erscheint immer, auch wenn ich den Durchmesser z.B. auf 1.5mm oder 2.5mm oder 3.5mm ändere. Ich glaube, dass es einfach ein kleiner Fehler ist, welcher ich übersehe oder einfach nicht kenne. Ich bedanke mich im Voraus für die vielen Lösungsvorschläge. Gruss asigrist Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 13. Dez. 2012 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
Hallo asigrist, ich würde das so machen: L2 = 18 if Dx > 2.4 L2 = 23 endif if Dx > 2.9 L2 = 33 endif Zitat: Jedoch wenn ich im Modell das Mass doppelklicke, erschein die Meldung: Bemaßung in part.prt wird von Beziehung L2=33 gesteuert.
Das ist ja auch so! Dein Maß wird über die Beziehung gesteuert und kann so nicht mehr manuell geändert werden. Edith die Zweite: Du verwendest ein logisches ODER! Es müsste jedoch ein UND sein. Letzendlich sind alle deine Wert kleiner als 4.0 und daher wird L2 = 33 gesetzt. Edith die Dritte: Zudem sind bei deiner Beziehung für die Werte <= 1.0, 2.4 und >= 2.9 sowie <=3.2 nicht definiert und könnten auch zu nicht erwartenden Werten führen. ------------------ Grüße Nico \o/ Don't be geizig! [Diese Nachricht wurde von NicoFTB am 13. Dez. 2012 editiert.] [Diese Nachricht wurde von NicoFTB am 13. Dez. 2012 editiert.] [Diese Nachricht wurde von NicoFTB am 13. Dez. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
Beiträge: 10560 Registriert: 14.11.2001 CREO 4 M120 (+Geniustool für Creo 6.0.2) PDMLink 11.0 M030 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit (20H2)
|
erstellt am: 13. Dez. 2012 15:54 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
|
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
Beiträge: 10560 Registriert: 14.11.2001 CREO 4 M120 (+Geniustool für Creo 6.0.2) PDMLink 11.0 M030 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit (20H2)
|
erstellt am: 13. Dez. 2012 16:00 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
Zitat: Original erstellt von NicoFTB: L2 = 18if Dx > 2.4 L2 = 23 endif if Dx > 2.9 L2 = 33 endif
Geht auch. Aber ich würde trotzdem die erste Zuweisung mit einer IF-Bedingung verknüpfen, weil man dort die Grenzen besser sieht. @asigrist Bei Deinen obigen Beziehungen wäre der Wert L2 nicht gesteuert, wenn Dx genau 2.4 ist.
------------------ Gruß Udo Keine Panik, Du arbeitest mit Pro/E! Und Du hast cad.de gefunden! Neu hier? Verwundert über die Antworten? Dann schnell nachfolgende Links durchlesen. • Richtig Fragen • Nettiquette • Suchfunktion • System-Info • Pro/E-Konfig • 7er-Regel • Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
asigrist Mitglied Konstrukteur/Entwickler
Beiträge: 57 Registriert: 14.06.2005 Creo Parametric 3.0 M080
|
erstellt am: 13. Dez. 2012 16:22 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen @Nico: Besten Dank, es funktioniert @Udo: Das stimmt, die Grenzen sind dann nicht definiert, ich bräuchte diese auch in den Beziehungen, gibt es eine Möglichkeit dass ich "grössergleich" schreiben kann? @Udo: was müsste ich dann in "meiner" Funktion ändern, damit es funktioniert? Gruss asigrist Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
Beiträge: 10560 Registriert: 14.11.2001 CREO 4 M120 (+Geniustool für Creo 6.0.2) PDMLink 11.0 M030 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit (20H2)
|
erstellt am: 13. Dez. 2012 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
|
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 14. Dez. 2012 06:33 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
|
asigrist Mitglied Konstrukteur/Entwickler
Beiträge: 57 Registriert: 14.06.2005 Creo Parametric 3.0 M080
|
erstellt am: 14. Dez. 2012 09:04 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Ich bedanke mich recht herzlich für eure Unterstützung. Auch besten dank für das Dokument mit der Zusammenfassung der Beziehungen ist sehr gut zu verwenden. Es funktioniert nun tadellos. Meine volständigen Beziehungen: /*------------------IF-Beziehung------------------ IF (Dx>=1.0)&(Dx<=2.4) L2=18 ENDIF IF (Dx>=2.5)&(Dx<=2.9) L2=23 ENDIF IF (Dx>=3.2)&(Dx<=4.0) L2=33 ENDIF IF (Dx>=4.2)&(Dx<=4.3) L2=38 ENDIF IF (Dx>=4.5)&(Dx<=4.9) L2=43 ENDIF IF (Dx>=5.0)&(Dx<=7.0) L2=48 ENDIF /*------------------IF-Beziehung------------------
[Diese Nachricht wurde von asigrist am 14. Dez. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 14. Dez. 2012 09:10 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
Zitat: IF (Dx>=5.0)&(Dx<=7.0) L2=33 ENDIF /*------------------IF-Beziehung------------------
33? Mit einem Startwert L2 könnte man die Lücken füllen und so spätere Beziehungsprobleme abfangen, wenn's gewollt ist. Z.B. ist kein Wert für Dx = 3.0 oder Dx = 4.4 definiert. ------------------ Grüße Nico \o/ Don't be geizig! [Diese Nachricht wurde von NicoFTB am 14. Dez. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
asigrist Mitglied Konstrukteur/Entwickler
Beiträge: 57 Registriert: 14.06.2005 Creo Parametric 3.0 M080
|
erstellt am: 14. Dez. 2012 09:27 <-- editieren / zitieren --> Unities abgeben:
Natürlich hat sich da noch ein kleiner Schreibfehler eingeschlichen, welcher ich bereits beim testen und regenerieren herausgefunden hatte, ist nun aber schon bereinigt. Die Units habe ich euch beiden auch bereits verteilt. Danke Udo und Nico. Gruss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
Beiträge: 10560 Registriert: 14.11.2001 CREO 4 M120 (+Geniustool für Creo 6.0.2) PDMLink 11.0 M030 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit (20H2)
|
erstellt am: 14. Dez. 2012 09:39 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
Zitat: Original erstellt von asigrist: ... Es funktioniert nun tadellos. ...
Nein, tut es noch nicht. Was passiert, wenn der Durchmesser kleiner 1 wird? Was passiert, wenn der Durchmesser 2,45 wird? Was passiert, wenn der Durchmesser 3 wird? ... Was passiert, wenn der Durchmesser größer 7 wird? Klar, gibt es sicher aus Deiner Sicht die Notwendigkeit nicht, diese 'Fehlerwerte' abzufangen. Wahrscheinlich gibt es irgendwo eine Vorgabe, dass die von mir angesprochenen Werte nicht vorkommen sollen. Aber besser wäre es, wenn das Modell auch auf diese Falscheingaben eine entsprechende Antwort hat. ------------------ Gruß Udo Keine Panik, Du arbeitest mit Pro/E! Und Du hast cad.de gefunden! Neu hier? Verwundert über die Antworten? Dann schnell nachfolgende Links durchlesen. • Richtig Fragen • Nettiquette • Suchfunktion • System-Info • Pro/E-Konfig • 7er-Regel • Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
asigrist Mitglied Konstrukteur/Entwickler
Beiträge: 57 Registriert: 14.06.2005 Creo Parametric 3.0 M080
|
erstellt am: 14. Dez. 2012 09:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo Das ist schon korrekt. Dann korrigier ich das mal. Es ist drum ein Modell für eine Norm, für welche ich eine Zeichnung und eine Beschreibung dazu habe. Und jetzt, wo du ich darauf gebracht hast habe ich herausgefunden, dass es in der Beschreibung tatsächlich keine Lücken aufweist. Ich melde mich dann wieder. gruss Andy Edit: Beziehung eingefügt, Nun funktionieren auch die Grenzwerte.
/*-------------------------------------------------------------------------------- IF (Dx<=2.4) L2=18 ENDIF IF (Dx>2.4)&(Dx<=3.0) L2=23 ENDIF IF (Dx>3.0)&(Dx<=4.0) L2=33 ENDIF IF (Dx>4.0)&(Dx<=4.4) L2=38 ENDIF IF (Dx>4.4)&(Dx<=4.9) L2=43 ENDIF IF (Dx>4.9)&(Dx<=7.0) L2=48 ENDIF /*-------------------------------------------------------------------------------- [Diese Nachricht wurde von asigrist am 14. Dez. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 14. Dez. 2012 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
|
arni1 Ehrenmitglied V.I.P. h.c.
Beiträge: 3875 Registriert: 17.12.2002 Pro/E seit Version 11 Creo6 HP Z210 Intel Xeon 3.3GHz; 20 GB RAM NVIDIA Quadro 2000 HP ZR30w Win10 64bit
|
erstellt am: 14. Dez. 2012 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
|
ReinhardN Mitglied Dipl.Ing.
Beiträge: 1285 Registriert: 03.05.2005 XP Prof SP3 FX 1500 WF4 M100
|
erstellt am: 14. Dez. 2012 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
es gilt der zuletzt verwendete Wert da er nicht über die Beziehung geändert wird. Da macht die Fehlersuche richtig Freude. Die Bedingungen werden nacheinander abgearbeitet. Die Beziehung von Nico aus dem zweiten Beitrag ist kurz und enthält keine logischen Löcher. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 14. Dez. 2012 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
Das hier sollte eindeutig sein. Code: L2=18IF Dx>2.4 L2=23 ENDIF IF Dx>3.0 L2=33 ENDIF IF Dx>4.0 L2=38 ENDIF IF Dx>4.4 L2=43 ENDIF IF Dx>4.9 L2=48 ENDIF
@Reinhard, dem ist eigentlich nichts hinzuzufügen. UND bzw. ODER-Verknüpfungen nutz man dann, wenn man diese auch braucht. Hier dienen sie nur dazu unnötige Grenzen zu setzen. Man baut normal auch keinen Gartenzaun zum Nachbarn, wenn dort schon einer steht.
------------------ Grüße Nico \o/ Don't be geizig! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
absolut1982 Mitglied
Beiträge: 91 Registriert: 18.12.2012 i7-3630QM/8GB/mit NVIDIA® GeForce® GT 640M/Windows 8 WF 4.0
|
erstellt am: 29. Jan. 2013 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
Hallo, sind If-Anweisungen im Pro/Programm in der folgenden Form zu realisieren: INPUT RS NUMBER PH NUMBER IF RS > PH "Bitte einen kleineren Radius RS oder eine größere Steigung PH eingeben" INPUT RS PH END INPUT ENDIF END INPUT Super wäre eine Schleife, dass man durch Eingabeaufforderung für die Modellgenerierung korrekte Parametereingabe erzwingt. Hoffe habs verständlich rübergebracht, bitte keine Beiträge mit C und Co. Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
Beiträge: 10560 Registriert: 14.11.2001 CREO 4 M120 (+Geniustool für Creo 6.0.2) PDMLink 11.0 M030 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit (20H2)
|
erstellt am: 29. Jan. 2013 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
|
taiga1982 Mitglied Student
Beiträge: 2 Registriert: 17.12.2012
|
erstellt am: 29. Jan. 2013 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für asigrist
Habe ich, aber vielleicht geht es ja doch irgendwie !!! ??? INPUT D2_KMK NUMBER D3_KMK NUMBER WS_KMK NUMBER PH NUMBER DELTAPH NUMBER THETA_SV NUMBER W NUMBER RN NUMBER S NUMBER B NUMBER IF RN>PH/2 RN NUMBER "Bitte einen kleineren Radius RS oder eine größere Steigung PH eingeben" END IF END INPUT Das habe ich im Hilfe-Center gefunden: INPUT INCLUDE_HOLE YES_NO "Soll Bohrung eingeschlossen werden?:" IF INCLUDE_HOLE == YES HOLE_DIA NUMBER "Durchmesser für Bohrung eingeben" ELSE ... ENDIF ... END INPUT Ansatz: Es wäre ein Operator innerhalb des Inputs notwendig, der die Parameter vergleicht ??? [Diese Nachricht wurde von taiga1982 am 29. Jan. 2013 editiert.] [Diese Nachricht wurde von taiga1982 am 29. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |