| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Reele Zahl in Zeichenkette konvertiere (7469 mal gelesen)
|
Pimsti Mitglied Mechatroniker
Beiträge: 197 Registriert: 17.01.2006 Wildfire 5.0 Win XP Professional NVIDIA GeForce 6600 GT AMD Athlon 64 4000+ (2,4GHz) 1 GB RAM
|
erstellt am: 20. Feb. 2012 11:21 <-- editieren / zitieren --> Unities abgeben:
Ich habe einen Parameter vom Typ "Reele Zahl". (Zb. 7,835) Nun möchte ich diese Zahl in einen Zeichenkette konvertieren und die Nachkommastellen definieren. Ich kenne leider nur ITOS(). Hier würde für obiges Beispiel 8 ausgegeben. Ich möchte aber zB 7,84 ausgegebn haben. Gibt es eine möglichkeit diese zu bewerkstelligen? Brauche ich zuvor eine Funktion die mir 7,835 auf 7,84 rundet und dann eine Funktion die dies in eine Zeichenkette konvertiert? Gibt es überaupt eine Liste aller mir zu verfügung stehenden Funktion unter "Beziehungen" inkl. Schnittstellendoku dieser Funktionen? ------------------ Geht nicht - gibts nicht! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BergMax Ehrenmitglied V.I.P. h.c. Dipl.-Ing. (FH)
Beiträge: 2264 Registriert: 23.08.2005 Creo 4.0 M130 Creo 8.0.3.0 GT/SUT 8.0.0.0 HP z440, Quadro K2200, Win10 Enterp. DualView
|
erstellt am: 20. Feb. 2012 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
Moin, Hier ein Link zur Übersicht von call4help. Je nach gewünschter Stellenzahl mit entsprechender 10erpotenz multiplizieren, ITOS anwenden und das Komma über Stringoperation reinbasteln. ------------------ Beste Grüße, Max Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pimsti Mitglied Mechatroniker
Beiträge: 197 Registriert: 17.01.2006 Wildfire 5.0 Win XP Professional NVIDIA GeForce 6600 GT AMD Athlon 64 4000+ (2,4GHz) 1 GB RAM
|
erstellt am: 20. Feb. 2012 13:04 <-- editieren / zitieren --> Unities abgeben:
|
Pimsti Mitglied Mechatroniker
Beiträge: 197 Registriert: 17.01.2006 Wildfire 5.0 Win XP Professional NVIDIA GeForce 6600 GT AMD Athlon 64 4000+ (2,4GHz) 1 GB RAM
|
erstellt am: 20. Feb. 2012 13:08 <-- editieren / zitieren --> Unities abgeben:
Kann das sein das die Liste nicht vollständig ist? Ich lese mir zB das Gewicht wie folgt aus: GEWICHT_BER=MP_MASS("")*1000 Die Funktion MP_MASS wird aber nicht aufgelistet? Gibt es noch mehrere Funktionen? ------------------ Geht nicht - gibts nicht! 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: 20. Feb. 2012 13:13 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
|
Pimsti Mitglied Mechatroniker
Beiträge: 197 Registriert: 17.01.2006 Wildfire 5.0 Win XP Professional NVIDIA GeForce 6600 GT AMD Athlon 64 4000+ (2,4GHz) 1 GB RAM
|
erstellt am: 20. Feb. 2012 13:48 <-- editieren / zitieren --> Unities abgeben:
Ich hätte es gerade probiert mit: GEWICHT_BER=PRO_MP_MASS("")*1000 Hier meckert ProE mit: "Ungültiges Symbol 'PRO_MP_MASS' gefunden." In welcher Referenz stehen solche Funktionen wie PRO_MP_MASS? ------------------ Geht nicht - gibts nicht! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EWcadmin Moderator Konstrukteur (Dipl.-Ing. Maschinenbau), CAD-/PDM-Admin.
Beiträge: 3202 Registriert: 27.10.2005
|
erstellt am: 20. Feb. 2012 14:41 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
PRO_MP_MASS ohne die ("") verwenden. Und das Ganze in den Beziehungen natürlich im Bereich Nach Regenerierung. ProE-Version ist aber WF5 ??? [Nachtrag] PRO_MP_MASS ist eigentlich keine echte Funktion sondern ein ProE-eigener Systemparameter. Da gibt es noch mehr von wie z.B. PRO_MP_VOLUME (Volumen). Zu finden sind sie im "Parameter-Fenster" in den gemeldeten Masseeigenschaften (siehe Bild Parameter) [/Nachtrag] ------------------ Grüße aus OWL, Thomas ProE macht Spaß - viel ProE macht viel Spaß ! (Zitat, frei nach meinem ProE-Beibringer) Neu auf CAD.de? Diese Infos werden Dir den Einstieg erleichtern: Willkommen auf CAD.de Und das sollte jeder mal gelesen haben: Richtig Fragen - Nettiquette - Suchfunktion - System-Info - 7er-Regel - Unities - ProE-Konfiguration Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pimsti Mitglied Mechatroniker
Beiträge: 197 Registriert: 17.01.2006 Wildfire 5.0 Win XP Professional NVIDIA GeForce 6600 GT AMD Athlon 64 4000+ (2,4GHz) 1 GB RAM
|
erstellt am: 20. Feb. 2012 15:01 <-- editieren / zitieren --> Unities abgeben:
Das ohne "" habe ich auch schon probiert ... das Ergebnis bleibt das selbe Es ist im Bereich "Nach Regenerierung" unter Beziehungen. Ich verwende die Version WF5 M020 Hier nochmals die Zeile die ich unter Beziehungen einfügen will: GEWICHT_BER=PRO_MP_MASS()*1000 und die dazu gehörige Fehlermeldung Ungültiges Symbol 'PRO_MP_MASS' gefunden. ------------------ Geht nicht - gibts nicht! 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: 20. Feb. 2012 15:08 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
|
Pimsti Mitglied Mechatroniker
Beiträge: 197 Registriert: 17.01.2006 Wildfire 5.0 Win XP Professional NVIDIA GeForce 6600 GT AMD Athlon 64 4000+ (2,4GHz) 1 GB RAM
|
erstellt am: 20. Feb. 2012 16:26 <-- editieren / zitieren --> Unities abgeben:
Ich bin ein Idiot ... geht nun - Danke! Noch eine Frag: Ich habe ein STP-Modell in ein PRT importiert. Nun will ich wieder das Gewicht ermitteln. Ich weiße ein Material zu. Nur sagt er bei dem Parameter PRO_MP_MASS immer das das: "Masseneigenschaften für dieses Modell wurden noch nicht berechnet." Was muss ich da machen? ------------------ Geht nicht - gibts nicht! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
Beiträge: 734 Registriert: 16.09.2009 Creo Parametric 7.0.0.0 Creo View 6.0.0.0 Windchill 11.1 IE 11.0.120 Edge Google Chrome fûr PDMLink HP ZBook. 64bit Lenovo Thinkpad P15 3DConnexion Wireless SpaceMouse
|
erstellt am: 21. Feb. 2012 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
|
ReinhardN Mitglied Dipl.Ing.
Beiträge: 1285 Registriert: 03.05.2005 XP Prof SP3 FX 1500 WF4 M100
|
erstellt am: 21. Feb. 2012 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
|
k.reichert Mitglied Entw. Ing
Beiträge: 13 Registriert: 13.05.2011 Creo Elements/Pro5 M110 + PLM Windchill 9.xx WIN7 Enterprise, Dell Workstation Xenon Quadcore 3,4 MHz, 8GB
|
erstellt am: 03. Apr. 2012 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
Es geht doch , aber seeehr kompliziert : Da ProE eigentlich keine Programmierung erlaubt, geht die Konvertierung einer Dezimalzahl in Text nur nach dem Schema: - ermittle Wert vor dem Komma und bastle daraus den Vorkommatext, - ermittle Rest nach dem Komma, - arbeite alle Nachkommaziffern nacheinander ab, in dem der Rest jeweils mit 10 multipliziert wird und der sich ergebende Vorkommateil dann dem Text hinzugefügt wird, der Vorkommaanteil dann wieder abgezogen wird (dann geht das Ganze von vorn los) Das sieht dann so aus: (Codeabschnitt) /* hier Bemaßungswert etc. einer Hilfsvariablen „Decimal“ zuweisen Decimal=d48 /* z. B. 18.690100
/* Abfolge, um beliebige Dezimalzahl in Text zu wandeln /* max. 6 Nachkommastellen. Kann aber erweitert werden durch Wiederholung /* des Blocks zum Wandeln einer Nachkommastelle. conv_end= FALSE /* Flag, um unnötiges Wiederholen von Code zu vermeiden Dec_Pre=floor(Decimal) /* Vorkommastelle Dezimalzahl (allgemein als Variable "Decimal" definiert) /* durch Abrunden ermitteln Dec_Pre_Txt= itos(Dec_Pre) /* Ganzahliges Textäquivalent zur Dezimalzahl; die Funktion ITOS() rundet /* entgegen der Online-Hilfe Erläuterung nicht ab, daher die zuvor abgerundete /* Vorkommastelle benutzen. /* Vorkommastellen ermitteln if conv_end == false if Dec_Pre_Txt=="" Dec_Pre_Txt="0" endif text=Dec_Pre_Txt+"," /* 1. Nachkommastelle vor's Komma holen Decimal=(Decimal-Dec_Pre)*10 /* Vorkommawert und den Integerstring ermitteln Dec_Pre=floor(Decimal) Dec_Pre_Txt= itos(Dec_Pre) /* Falls 0,... (also < 1), text = "" if Dec_Pre_Txt=="" Dec_Pre_Txt="0" endif /* keine weitere Konvertierung notwendig, falls abgerundeter Vorkomma- /* wert identisch mit Wert der Zahl if Decimal == Dec_Pre conv_end=true /* letzte gefundene Ziffer noch an text anhängen text=text+Dec_Pre_Txt endif endif /** Codeblock: eine Nachkommastelle konvertieren /* 1. Nachkommastelle if (conv_end == false) text=text +Dec_Pre_Txt Decimal=(Decimal-Dec_Pre)*10 Dec_Pre=floor(Decimal) Dec_Pre_Txt= itos(Dec_Pre) if Dec_Pre_Txt=="" Dec_Pre_Txt="0" endif if Decimal == Dec_Pre conv_end=true text=text+Dec_Pre_Txt endif endif /** Ende Codeblock /* 2. Nachkommastelle if (conv_end == false) text=text +Dec_Pre_Txt Decimal=(Decimal-Dec_Pre)*10 Dec_Pre=floor(Decimal) Dec_Pre_Txt= itos(Dec_Pre) if Dec_Pre_Txt=="" Dec_Pre_Txt="0" endif if Decimal == Dec_Pre conv_end=true text=text+Dec_Pre_Txt endif endif /* 3. Nachkommastelle if (conv_end == false) text=text +Dec_Pre_Txt Decimal=(Decimal-Dec_Pre)*10 Dec_Pre=floor(Decimal) Dec_Pre_Txt= itos(Dec_Pre) if Dec_Pre_Txt=="" Dec_Pre_Txt="0" endif if Decimal == Dec_Pre conv_end=true text=text+Dec_Pre_Txt endif endif /* 4. Nachkommastelle if (conv_end == false) text=text +Dec_Pre_Txt Decimal=(Decimal-Dec_Pre)*10 Dec_Pre=floor(Decimal) Dec_Pre_Txt= itos(Dec_Pre) if Dec_Pre_Txt=="" Dec_Pre_Txt="0" endif if Decimal == Dec_Pre conv_end=true text=text+Dec_Pre_Txt endif endif /* 5. Nachkommastelle if (conv_end == false) text=text +Dec_Pre_Txt Decimal=(Decimal-Dec_Pre)*10 Dec_Pre=floor(Decimal) Dec_Pre_Txt= itos(Dec_Pre) if Dec_Pre_Txt=="" Dec_Pre_Txt="0" endif if Decimal == Dec_Pre conv_end=true text=text+Dec_Pre_Txt endif endif Schade, dass ProE noch keine Subroutines unterstützt! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DonChunior Mitglied CAD-Systemadministrator
Beiträge: 1148 Registriert: 09.09.2004 Creo Parametric 4.0 M120 Windchill 11.1 M020-CPS11 Windows 10 Enterprise x64
|
erstellt am: 11. Jun. 2012 14:37 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
|
Stefan H Mitglied Konstrukteur / CAD-Admin (Proe/Creo)
Beiträge: 94 Registriert: 30.07.2010 Wildfire 4 M220 + SUT 2010 NVIDIA Quadro FX 3800 Intel W3530 @ 2,8GHz / 8GB RAM Win7 Prof. SP1 64bit
|
erstellt am: 12. Jun. 2012 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
Zitat: Original erstellt von DonChunior: Auf der Website der [i]PlanetPTC Community hat jemand einen Verbesserungsvorschlag zu diesem Thema erstellt: http://communities.ptc.com/ideas/1400Dort kann man den Vorschlag "hochvoten", damit er bei PTC Beachtung findet! [/i]
Gesagt, getan. Bis jetzt nur 8 Votes. Kleiner Hinweis am Rande, man muss sich vorher einloggen, sonst zeigt die Seite an "Thema nicht gefunden oder gelöscht". ------------------ Viele Grüße Stefan 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: 20. Sep. 2013 07:45 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
Moin, die Lösung von k.reichert habe ich schon länger mal auf dem Rechner gespeichert. Leider ist das Ding nur ein wenig overkill. Mehr als 3 Nachkommastellen sind zum einen selten nötig, wobei das ja auch schnell umzusetzen ist mit der Beziehung oben, aber was mich am meisten stört sind die vielen Parameter die dadurch erzeugt werden. Daher mal meine Lösung: Code:
MASSE = CEIL(PRO_MP_MASS*1000,3) GEWICHT = ITOS(FLOOR(MASSE)) IF GEWICHT == "" GEWICHT = "0" ENDIF IF ((MASSE - FLOOR(MASSE))*1000) < 1000 GEWICHT = GEWICHT + "," ENDIF IF ((MASSE - FLOOR(MASSE))*1000) < 100 GEWICHT = GEWICHT + "0" ENDIF IF ((MASSE - FLOOR(MASSE))*1000) < 10 GEWICHT = GEWICHT + "0" ENDIF GEWICHT = GEWICHT + ITOS((MASSE - FLOOR(MASSE))*1000)
------------------ Grüße Nico \o/
Üs - ProE-Beziehungen [Diese Nachricht wurde von NicoFTB am 20. Sep. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DonChunior Mitglied CAD-Systemadministrator
Beiträge: 1148 Registriert: 09.09.2004 Creo Parametric 4.0 M120 Windchill 11.1 M020-CPS11 Windows 10 Enterprise x64
|
erstellt am: 20. Sep. 2013 07:53 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
Zitat: Original erstellt von Stefan H:
Gesagt, getan. Bis jetzt nur 8 Votes. Kleiner Hinweis am Rande, man muss sich vorher einloggen, sonst zeigt die Seite an "Thema nicht gefunden oder gelöscht".
Mittlerweile hat der Verbesserungsvorschlag schon 36 positive Votes! Das ist schon mal nicht schlecht - also dranbleiben und weitervoten ... ------------------ MfG, DonChunior Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harhub Mitglied Konstrukteur
Beiträge: 1 Registriert: 30.01.2019
|
erstellt am: 31. Jan. 2019 07:27 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
|
PRO-sbehr Mitglied Dipl.-Ing. Konstruktion
Beiträge: 1132 Registriert: 05.07.2002 Lenovo ThinkStation P500 Intel Xeon CPU E5-1620 v3 Grafik: Nvidia Quadro K2200 Windows 10 Enterprise 64-bit Creo Parametric 4.0 (M030) (NX 11)
|
erstellt am: 31. Jan. 2019 07:37 <-- editieren / zitieren --> Unities abgeben: Nur für Pimsti
Zitat: Original erstellt von harhub: Versuche es eimal damit
Hallo harhub, du weißt schon, daß Du einen 5 Jahre alten Beitrag hier hervorgeholt hast ? Gruß Stefan ------------------ Pro/bleme sind endlich in der Unendlichkeit der Hoffnung. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |