| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: Attributfeld mit Text und reelem Maß füttern (2434 mal gelesen)
|
sunraiser Mitglied CAD und PLM Systembetreuer
Beiträge: 110 Registriert: 04.11.2003 Windows 7 64Bit Creo 2.0 M160 PTC Windchill 10.1 M050
|
erstellt am: 18. Okt. 2013 07:33 <-- editieren / zitieren --> Unities abgeben:
Hallo CAD Gemeinde, kann mir jemand sagen wie ich ein Atrributfeld über das Beziehungsmenü wie in der jpg gezeigt füttern kann? In den Beziehungen habe ich die Eintragung: >> Bemerkung=d5 << Ergebnis ist das Längenmaß des jeweiligen Profiles. Gewünschte Eintragung wäre aber ein Mix aus Text und reelem Maß: Länge: 970.00000 Länge: 900.00000 etc. ... Wie kann diese Eintragung in den Beziehungen eingetragen bzw. gesteuert werden, da ja Mix aus reelem Bemaßungwert und benutzerdefinierter Text?? Theorie: Bemerkung="benutzerdefinierter Text"d5 Ich danke Euch für Eure Hilfe ------------------ Gruß Heiko 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: 18. Okt. 2013 07:53 <-- editieren / zitieren --> Unities abgeben: Nur für sunraiser
In meine Signatur steht ein wenig was über Beziehungen. Du musst zunächst deine reele Zahl in einen String umwandeln. Das geht über itos(d5), heißt soviel wie integer to string. Und das ist hier auch nicht ganz so einfach, da halt ein Integer gewandelt wird und kein Double. Also werden die Kommastellen abgeschnitten. Im Forum solltest du ähnliches finden bei Masse/Gewicht-Berechnung. zB hier ------------------ Grüße Nico \o/ Üs - ProE-Beziehungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoNö Mitglied CAD-User
Beiträge: 241 Registriert: 09.10.2003 Windows 7(SP1),Windchill 10.0 M040 ,SUT 2016, Intel Xeon E5-1620 mit 4x3,6GHz, 32GB RAM, AMD FirePro W5000,Creo 2 M240 produktiv, Creo 3 im Test
|
erstellt am: 18. Okt. 2013 08:48 <-- editieren / zitieren --> Unities abgeben: Nur für sunraiser
|
sunraiser Mitglied CAD und PLM Systembetreuer
Beiträge: 110 Registriert: 04.11.2003 Windows 7 64Bit Creo 2.0 M160 PTC Windchill 10.1 M050
|
erstellt am: 18. Okt. 2013 10:39 <-- editieren / zitieren --> Unities abgeben:
Hallo NicoFTB, Hallo RoNö, ich habe dank Eurer Hilfe eine Lösung gefunden, ... wenn es auch ein wenig tricky war für mich. Ich (wir) hatten ein wenig Probleme das bei Zahlen mit 0 nach der Kommastelle, keine 0 als Sring ausgegeben wurden. Bsp.: 800.00 ausgegeben wurde 800. Aus diesem Grund die "if" Funktion (wenn die Nachkommastelle 0 ist soll 000 hinter die Kommastelle) ---------------------------------------------------------------------------- if d5-FLOOR(d5)==0 Bemerkung="Länge "+itos(Floor(d5))+","+"000" else Bemerkung="Länge "+itos(Floor(d5))+","+itos(Floor((d5-FLOOR(d5))*1000)) endif ----------------------------------------------------------------------------- Für Verbesserungen sind wir gerne offen, ... ansonsten die Lösung für alle Nachfolgenden ------------------ Gruß Heiko 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: 18. Okt. 2013 12:37 <-- editieren / zitieren --> Unities abgeben: Nur für sunraiser
|
sunraiser Mitglied CAD und PLM Systembetreuer
Beiträge: 110 Registriert: 04.11.2003 Windows 7 64Bit Creo 2.0 M160 PTC Windchill 10.1 M050
|
erstellt am: 18. Okt. 2013 13:01 <-- editieren / zitieren --> Unities abgeben:
|
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 18. Okt. 2013 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für sunraiser
Siehe mein erster Post. Zitat: Original erstellt von NicoFTB: zB hier
Angepasst schaut das in etwa so aus: Code: TEMP_LAENGE = d5 LAENGE = ITOS(FLOOR(TEMP_LAENGE)) IF LAENGE == "" LAENGE = "0" ENDIF IF ((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) < 1000 LAENGE = LAENGE + "," ENDIF IF ((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) < 100 LAENGE = LAENGE + "0" ENDIF IF ((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) < 10 LAENGE = LAENGE + "0" ENDIF LAENGE = LAENGE + ITOS((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) Bemerkung = "Länge: " + LAENGE
------------------ Grüße Nico \o/ Üs - ProE-Beziehungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sunraiser Mitglied CAD und PLM Systembetreuer
Beiträge: 110 Registriert: 04.11.2003 Windows 7 64Bit Creo 2.0 M160 PTC Windchill 10.1 M050
|
erstellt am: 21. Okt. 2013 07:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Nico, danke für den Code ich habe diesen noch ein kleinwenig verfeinert, siehe: Code:
TEMP_LAENGE = d5 LAENGE = ITOS(FLOOR(TEMP_LAENGE)) IF LAENGE == "" LAENGE = "0" ENDIF IF ((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) < 1000 LAENGE = LAENGE + "," ENDIF IF ((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) < 100 LAENGE = LAENGE + "0" ENDIF IF ((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) < 10 LAENGE = LAENGE + "0" ENDIF IF ((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) < 1 LAENGE = LAENGE + "0" ENDIF LAENGE = LAENGE + ITOS((TEMP_LAENGE - FLOOR(TEMP_LAENGE))*1000) Bemerkung = "Länge: " + LAENGE
Grüße und schöne Woche ------------------ Gruß Heiko 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: 21. Okt. 2013 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für sunraiser
Die ganzen IF-Bedingungen sind nicht schön, da habe ich mir mal was einfallen lassen. Code: DBL = 100.1001000 FORMAT = "0,000000" /* Format 0,000 (Führende Null, Trennzeichen plus Nachkommastellen in Nullen)/* Formatierung STRING = ITOS(FLOOR(DBL)) IF string_length(STRING) == 0 STRING = "0" ENDIF DBL_NACHKOMMA =(DBL - FLOOR(DBL))*10^(string_length(FORMAT)-2) STRING = STRING + Extract(FORMAT, 2, (string_length(FORMAT)-1)-string_length(itos(DBL_NACHKOMMA))) + ITOS((DBL - FLOOR(DBL))*10^(string_length(FORMAT)-2)) /* Ende Formatierung Bemerkung = "Länge: " + STRING
Unter Format kann was auch immer eingestellt werden. 0,0 bis 0,000000000000. und noch mehr. Den Rest erledigt die Formatierungs-Beziehung zwischen den Kommentaren. ------------------ Grüße Nico \o/ Üs - ProE-Beziehungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sunraiser Mitglied CAD und PLM Systembetreuer
Beiträge: 110 Registriert: 04.11.2003 Windows 7 64Bit Creo 2.0 M160 PTC Windchill 10.1 M050
|
erstellt am: 21. Okt. 2013 10:51 <-- editieren / zitieren --> Unities abgeben:
|
| Konstrukteur/in Maschinenbauingenieur (m/w/d) im Bereich Lebensmitteltechnik | Wir bieten Lebensmittelherstellern maßgeschneiderte Prozessanlagen, die wirklich jeden Anspruch erfüllen! Kleine Lösungen für den Kernprozess und komplette Produktionsstraßen für die gesamte Prozesskette - vom Rohstoff bis zum fertigen Produkt. Dabei verstehen wir uns nicht nur als ?Lieferant? der Anlagen, sondern als Partner, der mit einzigartigem Know-how aktiv zur Realisierung der Produktideen des Kunden beiträgt.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 21. Okt. 2013 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für sunraiser
Das ganze Ding sieht schlimmer aus als es ist. Der ganze Zauber ist hier eigentlich das Extract. Damit kann man einen String zerlegen. Da ich weiß wie lang meine Formatierung ist kann ich über die Länge (string_length) und Extract alles schön in einer Zeile formatieren und kann dann auf die ganzen IF-Bedingungen verzichten. ------------------ Grüße Nico \o/ Üs - ProE-Beziehungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |