| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
 | BOM Assistant für Stücklistenerstellung , eine App
|
Autor
|
Thema: Dezimalstellen im Parameter (6655 mal gelesen)
|
GHar Mitglied Dipl. Ing. (FH) Maschinenbau

 Beiträge: 95 Registriert: 11.03.2001 SWX 2022 SP5.0 Windows 10 Dell Precision 7560 Intel Core i7 2,5GHz 32 GB RAM NVIDIA RTX A2000
|
erstellt am: 16. Okt. 2003 10:13 <-- editieren / zitieren --> Unities abgeben:         
Hallo allerseits, wir steuern hier verschiedene Zeichnungseinträge über Parameter. Gewicht, Rohmasse des Bauteils in der Stückliste, etc. Nun gibt es ja die Möglichkeit über ceil (wert,1) zu steuern das auf die erste Nachkommastelle gerundet werden soll. Soweit so gut. Nur wie kann ich steuern, das die Nullen am Ende nicht mit angezeigt werden? Blechdicke 1,500mm oder Gewicht 2155,200kg ist halt nicht so toll auf einer Zeichnung. Da wir aber auch Teile haben, die leicht sind z.B. 0,1kg möchte ich das Gewicht nicht grundsätzlich mit itos darstellen lassen: Gewcht 0kg ist auch nicht so spannend. Ich hoffe ihr könnt mir helfen. Gruß Gerhard P.S. Ach ja, wir haben hier ProE 2001
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
       

 Beiträge: 10679 Registriert: 14.11.2001 CREO 8.0.6.0 (+Geniustool für Creo 10.0.1) PDMLink 12.0.2.8 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit
|
erstellt am: 16. Okt. 2003 10:48 <-- editieren / zitieren --> Unities abgeben:          Nur für GHar
|
GHar Mitglied Dipl. Ing. (FH) Maschinenbau

 Beiträge: 95 Registriert: 11.03.2001 SWX 2022 SP5.0 Windows 10 Dell Precision 7560 Intel Core i7 2,5GHz 32 GB RAM NVIDIA RTX A2000
|
erstellt am: 16. Okt. 2003 15:39 <-- editieren / zitieren --> Unities abgeben:         
Hmmm, klingt ja einfach...nur so einfach ist das leider nicht. In der Zeichnung sind die Felder mit Variablen besetzt, die im Modell definiert werden. Also habe ich im Modell unter Beziehungen z.B. stehen: Dim= itos(D2)+"x"+itos(d3). So kann ich dann in der Zeichnungsvorlage die Stueckliste mit Dim füttern und kann bei verschiedenen Einzelteilen die Dimensionen einstellen. Ein Rohr hat z.B. einen andere Definition für DIM. Wo kann ich denn jetzt die Klammern mit Punkt setzen? In der Beziehung versteht Pro/E das nicht und in der Zeichnungsvorlage interprtiert er das als Text?? Gruß Gerhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
       

 Beiträge: 10679 Registriert: 14.11.2001 CREO 8.0.6.0 (+Geniustool für Creo 10.0.1) PDMLink 12.0.2.8 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit
|
erstellt am: 16. Okt. 2003 16:16 <-- editieren / zitieren --> Unities abgeben:          Nur für GHar
falls ich Dich jetzt richtig verstanden habe, hast Du eine BG mit verschiedenen Teilen. In jedem Teil hast Du bestimmte Parameter, die den gleichen Namen haben und dieser Parameter soll in der Stückliste mit auftauchen und zwar beschränkt auf bestimmte Anzahl von Dezimalstellen. Na dann mußt Du die Klammer mit der Angabe der Dezimalstellen im Wiederholbereich der Stücklistentabelle angeben. (Konnte nicht gleich antworten, da ich es erst einmal probiert habe.) Gruß U_Suess Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sadolf Mitglied VR-Projektleiter, IS-Berater, Konstrukteur
   
 Beiträge: 1440 Registriert: 27.11.2001 DeltaGen 12.1.1 VRED 2015 W7 64bit PrÖ, Katja Windchill TCE (nur unter Protest;)
|
erstellt am: 16. Okt. 2003 18:49 <-- editieren / zitieren --> Unities abgeben:          Nur für GHar
PS: ceil() oder auch floor() runden nur auf bzw. nur ab!!! Sie können für die beiden Funktionen ceil und floor ein zweites optionales Argument angeben, mit dem die Anzahl der Dezimalstellen für die Rundung festgelegt werden kann. Die Syntax für diese Funktionen, mit dem Rundungsparameter, lautet wie folgt: ceil (parameter_name oder Zahl, Anzahl_der_Dezimalstellen) floor (parameter_name oder Zahl, Anzahl_der_Dezimalstellen) Dabei ist Anzahl_der_Dezimalstellen ein optionaler Wert, der: durch eine Zahl oder einen benutzerdefinierten Parameter angegeben werden kann. Ist der Parameterwert eine reelle Zahl, werden die Nachkommastellen abgeschnitten, so dass nur der ganzzahlige Anteil übrigbleibt. der maximal 8 betragen kann. Bei Überschreitung dieses Werts wird für die zu rundende Zahl (das erste Argument) keine Rundung vorgenommen und der ursprüngliche Wert verwendet. die gleiche Funktion wie in vorherigen Versionen hat, falls er nicht angegeben wird. In den folgenden Beispielen wird für ceil und floor die Anzahl der Dezimalstellen nicht angegeben: ceil (10.2) ergibt 11 floor (–10.2) ergibt –11 In den folgenden Beispielen wird für ceil und floor die Anzahl der Dezimalstellen angegeben: ceil (10.255, 2) ergibt 10.26 ceil (10.255, 0) ergibt 11 [Dies entspricht ceil (10.255)] floor (10.255, 1) ergibt to 10.2 floor (–10.255, 2) ergibt –10.26 Sonst die Lösung von U_Suess ------------------ freundlich grüßend Sven
[Diese Nachricht wurde von sadolf am 16. Oktober 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jps1 Mitglied

 Beiträge: 29 Registriert: 24.01.2001
|
erstellt am: 17. Okt. 2003 07:52 <-- editieren / zitieren --> Unities abgeben:          Nur für GHar
Das klingt sehr schön. Geht aber nicht. Sobald "itos" zum Einsatz kommt, schneidet der Befehl die Kommastellen weg. BMW hat in der Normteilbib. eine Lösung( Ich glaube bei Sicherungsringe). Die ist allerdings ein wenig kompliziert und es entstehen zusätzliche Parameter. Wir haben den Weg ähnlich genommen und bei einer Umwandlung mit 2 Kommastellen enstehen 4 zusätzliche Parameter. /* Abmaßparameter: x=d0 /*kommaberechnung für abmasze /*Abmasz in x-Richtung
vkbx=floor(x) if x >vkbx bx=itos((x-vkbx)*100) nk1bx=extract(bx,1,1) nk2bx=extract(bx,2,1) vkbx=itos(vkbx) if nk1bx <>"0" if nk2bx <>"0" x=vkbx+","+nk1bx+nk2bx else x=vkbx+","+nk1bx endif endif else vkbx=itos(vkbx) x=vkbx endif /*Abmasze fuer Welle Abmasze="ø"+x+" x "+y
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
       

 Beiträge: 10679 Registriert: 14.11.2001 CREO 8.0.6.0 (+Geniustool für Creo 10.0.1) PDMLink 12.0.2.8 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit
|
erstellt am: 17. Okt. 2003 08:11 <-- editieren / zitieren --> Unities abgeben:          Nur für GHar
Hallo Leute, was Ihr da schreibt ist ja gut und schön, aber es hat nicht wirklich etwas mit dem Thema zu tun. Wie die Kommastellen beim Runden verschwinden hat Gerhard wohl im Griff. Es ging lediglich darum, auch die Darstellung in der Zeichnung den Wünschen anzupassen. Und das geht ohne zusätzliche Parameter und komplizierte Beziehungen. Gruß U_Suess Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GHar Mitglied Dipl. Ing. (FH) Maschinenbau

 Beiträge: 95 Registriert: 11.03.2001 SWX 2022 SP5.0 Windows 10 Dell Precision 7560 Intel Core i7 2,5GHz 32 GB RAM NVIDIA RTX A2000
|
erstellt am: 17. Okt. 2003 10:26 <-- editieren / zitieren --> Unities abgeben:         
Guten morgen allerseits, ihr seid ja plötzlich doch recht fleissig geoworden! Vielen Dank erstmal. Sowie ich das sehe habe ich mich unklar ausgedrückt und dann auch noch zwei Probleme gemischt, von denen ich gar nicht wusste, das es zwei waren: Also, wir geben das Gewicht in der Zeichnung mit Hilfe von {mdl.param.value} an. Über Tabelle->Filter->editieren sehe ich die Definition: &mdl.param.name == mass In der Beziehung des Bauteils steht: mass=ceil(mp_mass(""),1) Somit wird das Gewicht ím Bauteil auf eine Dezimalstelle gerundet. Aber leider werden die Nullen nicht abgeschnitten. Aus 10.255 macht er nicht 10.3 sondern 10.300  Aber hier sind wir einer Lösung auf der Spur, die der von U_Suess entspricht. Als wir über Format ->Dezimalstellen den Wert von "Hand" geändert haben, sahen wir dann wo [.1] hin muss: {mdl.param.value[.1]} Naja, die Syntax ist halt doch entscheidend. Also die Vorlage dahingehend ändern und das Gelächter der Werkstatt über unser super genaues 3D-Programm wird schon leiser  Das andere Problem ist die Stücklistentabelle: Hier wird der Parameter Blank als Beschreibung des Halbzeugs verwendet. In der Stüli steht nur &Blank. Die Parameterdefinition im Bauteil ist als Zeichenkette. Die Beziehung lautet bisher z.B. BLANK="??."+itos(d2)+"x"+itos(d3) Wobei die Fragezeichen vom Benutzer durch die Materialbezeichng zu erstzen sind: Also Fl für Flach usw. Ergebnis: z.B. Fl.50x60. Hat bisher gut geklappt. Aber nun habe ich als Halbzeug ein Blech 1,5. Also itos durch ceil ersetzt und: Beziehungsfehler, ungültige Datentyp-Kombination auf der rechten Seite des Ausdrucks.  Also kann ich Anscheinend in der Beziehung keine Texte und "echte" Zahlen mischen. Ich benötige anscheinend ein Itos davor. Das rundet nicht nur sondern verwandelt die Zahl ja auch in eine Zeichenkette. Ist meiner Meinung ein Mangel, wenn ich den Parameter nicht "mischen" kann.  Ein Workaround wäre natürlich einen Parameter für die Bezeichnung(text) und einen für das Mass(Zahl). Aber vielleicht hat einer eine einfachere Idee. Also fallt nicht übereinander her, ich muss mich halt deutlicher Ausdrücken. Gruß Gerhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
       

 Beiträge: 10679 Registriert: 14.11.2001 CREO 8.0.6.0 (+Geniustool für Creo 10.0.1) PDMLink 12.0.2.8 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit
|
erstellt am: 17. Okt. 2003 10:57 <-- editieren / zitieren --> Unities abgeben:          Nur für GHar
Da habe ich auch noch eine kleine Beziehung für Dich, die mir bei einem ähnlichen Problem geholfen hat. Damit wird eine Bezeichnung für Unterlegscheiben nach DIN 125 generiert. Und da gibt es leider welche mit und welche ohne Komma-Angaben. Du mußt Dir die Sache sicher noch ein wenig umstricken, aber so viel Zeit solltest Du haben. Ich habe sie zur Zeit nicht. test=itos(ceil(d1*10)) anz_st=string_length(test) letzte_stelle=extract(test,anz_st,1) IF letzte_stelle<>"0" sachnummer="DIN 125 - "+extract(test,1,anz_st-1)+","+letzte_stelle+" - "+form ELSE sachnummer="DIN 125 - "+itos(ceil(d1))+" - "+form ENDIF Hoffe, Dir ist damit geholfen. U_Suess Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
singermj Mitglied Konstrukteur
 
 Beiträge: 218 Registriert: 10.03.2001
|
erstellt am: 17. Okt. 2003 11:27 <-- editieren / zitieren --> Unities abgeben:          Nur für GHar
Moin Moin! Mal ne generelle Frage: Ich dacht, ceil und floor runden nicht sondern schneiden eher ab!? Denn wenn z.B. floor (10.255, 1) ergibt to 10.2 dann is das doch falsch? Müßte es nicht 10.3 sein? Ciao Marcus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stahl Mitglied unbeschreiblich
   
 Beiträge: 1475 Registriert: 30.01.2001 Proe 18 bis Creo 3 Intralink 1 bis 3.4 Windchill PDMLink 8.0 bis 10.2
|
erstellt am: 18. Okt. 2003 08:42 <-- editieren / zitieren --> Unities abgeben:          Nur für GHar
das hat sadolf doch etwas weiter oben doch sehr schön beschrieben! floor = boden, ceiling = decke floor rundet immer ab, ceil immer auf. floor(3.671) -> 3 ceil(3.671) -> 4 floor(3.671, 1) -> 3.6 ceil(3.671, 1) -> 3.7 Fürs Runden gibt es meines Wissens keinen Befehl. Man muss also schauen ob die letzte relevante Dezimalstelle < oder >= 5 ist und dann mit if-else-endif verzweigen. Im IF wird "gefloored" und im ELSE "geceiled". 
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |