| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: Parameter von Float zu String verwandeln? (4240 mal gelesen)
|
dbexkens Ehrenmitglied V.I.P. h.c. Unternehmensberater / Professional Development Manager
Beiträge: 2174 Registriert: 14.08.2000 Pro/ENGINEER WF5 M040 Pro/ENGINEER WF4 M140 Pro/ENGINEER WF3 M220 Pro/ENGINEER WF2 M190 Pro/INTRALINK 3.4 M030 und 8.0 und 9.0 PDMLink 8.0 und 9.0 und 9.1 Project Link 8.0 und 9.0 und 9.1 Product View 9.1
|
erstellt am: 17. Jul. 2003 09:24 <-- editieren / zitieren --> Unities abgeben:
Hi Forum, ich möchte in einer Baugruppe ein Maß von einem Bauteil als Parameter in die Baugruppe übernehmen. Also in den Beziehungen steht dann z.B. "Bohrungs_D=d4:2". Soweit klappts ja auch. Problem: Der Parameter "Bohrungs_D" wird im Modell damit automatisch zur reelen Zahl, obwohl er vorher ein String war. Wenn ich nun in Pro/INTRALINK speichern möchte kriege ich Mecker, weil das Attribut immer noch ein String ist (recht hatter). Frage: Wie wandle ich im Pro/E als in den Beziehungen den Parameter so, das er ein String ist, aber trotzdem den Wert des Maßes zeigt? Ich weiß, das es geht... da war mal was... irgendwas mit "Inhalt von" oder "vnv". Nur die Syntax habe ich vergessen. Jemand mit einer Idee? Grüße Detlef Bexkens ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dbexkens Ehrenmitglied V.I.P. h.c. Unternehmensberater / Professional Development Manager
Beiträge: 2174 Registriert: 14.08.2000 Pro/ENGINEER WF5 M040 Pro/ENGINEER WF4 M140 Pro/ENGINEER WF3 M220 Pro/ENGINEER WF2 M190 Pro/INTRALINK 3.4 M030 und 8.0 und 9.0 PDMLink 8.0 und 9.0 und 9.1 Project Link 8.0 und 9.0 und 9.1 Product View 9.1
|
erstellt am: 17. Jul. 2003 10:03 <-- editieren / zitieren --> Unities abgeben:
|
stefanba Mitglied Ingenieur
Beiträge: 61 Registriert: 08.11.2002
|
erstellt am: 17. Jul. 2003 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für dbexkens
Hallo dbexkens, mit dem itos musst Du aufpassen, denn so weit ich weis, wandelt der nicht die komplette Zahl sondern nur den ganzzahligen Anteil um. Wenn also Dein Bohrungsdurchmesser vorher 5.6 war, kommt nur die 5 raus. Ich bin mir nicht ganz sicher, irgendeiner dieser Umwandlungs- befehle tut naemlich sowas, also Vorsicht und mal testen Stefan 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: 17. Jul. 2003 17:15 <-- editieren / zitieren --> Unities abgeben: Nur für dbexkens
Ja, das kann ich nur bestätigen. ITOS steht für "Integer TO String". Leider gibt es kein FLTOS, d.h. die Nachkommastellen werden abgeschnitten. zB: ITOS(6.1) -> "6" ITOS(12.84) -> "12" Wenn die beiden ersten Nachkommastellen noch wichtig sind, muss man vorher mit 100 multiplizieren, dann ITOS machen und dann manuell das Komma an die drittletzte Stelle setzen... x=12.841 x=x*100 /* x==1284.1 y=itos(x) /* y=="1284" y_len=string_length(y) /* y_len==4 weil "1284" 4 Zeichen hat y=strcat(1, y_len-2, y) + "." + strcat(y_len-1, y_len, y) /* y=="12.84" Das ist jetzt aus dem Gedächtnis. Nachprüfen kann ich erst nächste Woche wieder. Und für eventuelle Tipfehler übernehm ich keine Haftung. Stahl. [Diese Nachricht wurde von Stahl am 17. Juli 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rjordan Mitglied ProE-Admin, Konstrukteur
Beiträge: 1428 Registriert: 17.03.2003 Creo 3 Win 10 Pro 64bit Intel Xeon 3,7 GHz Nvidia Quadro P4000
|
erstellt am: 23. Nov. 2006 13:54 <-- editieren / zitieren --> Unities abgeben: Nur für dbexkens
Hallo, das gleiche Problem habe ich auch gehabt. Aber mit Stahls Lösung funktionierte es nicht. Bei den Befehlen string_length und strcat kam eine Fehlermeldung. Daher habe ich es für Sheetmetal so gemacht: MATERIAL="Blech "+itos(floor(smt_thickness()))+ "." + itos((smt_thickness()-floor(smt_thickness()))*10)+ " dick." Die Systemvariable smt_thickness() hat automatisch die Sheetmetaldicke.
------------------ Scheinbare Rechtschreibfehler beruhen auf eine individuelle Rechtschreibreform Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
os Ehrenmitglied V.I.P. h.c. Konstruktionsingenieur
Beiträge: 2458 Registriert: 16.09.2002 2001,WF,WF2...
|
erstellt am: 23. Nov. 2006 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für dbexkens
Hallo Also ich mach das Ganze immer mit extract() zahl=12.841 f=itos(zahl*100) string=extract(f,1,2)+"."+extract(f,3,2) Syntax: extract(Parameter,Stringposition,Stringlänge) Gruß OLaf ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rjordan Mitglied ProE-Admin, Konstrukteur
Beiträge: 1428 Registriert: 17.03.2003 Creo 3 Win 10 Pro 64bit Intel Xeon 3,7 GHz Nvidia Quadro P4000
|
erstellt am: 24. Nov. 2006 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für dbexkens
Hallo os, ... und was machst du, wenn der Zahlenbereich variiert, z.B. 1 bis 1000 ? Bei deiner Lösung mußt du aber vorher wissen, wie viel Stellen vor dem Komma stehen und dementsprechend den extract-Befehl korrigieren. ------------------ Scheinbare Rechtschreibfehler beruhen auf eine individuelle Rechtschreibreform
[Diese Nachricht wurde von rjordan am 24. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
os Ehrenmitglied V.I.P. h.c. Konstruktionsingenieur
Beiträge: 2458 Registriert: 16.09.2002 2001,WF,WF2...
|
erstellt am: 24. Nov. 2006 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für dbexkens
Hallo Vor kurzem passiert, deshalb ist es noch so präsent: zahl=???? If zahl<10 f=itos(zahl*10) string=extract(f,1,1)+"."+extract(f,2,1) endif If zahl>=10 & zahl<100 f=itos(zahl*100) string=extract(f,1,2)+"."+extract(f,3,1) endif If zahl>100 f=itos(zahl*1000) string=extract(f,1,3)+"."+extract(f,4,1) endif Gruß Olaf
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| 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 |
|
tpp Mitglied
Beiträge: 19 Registriert: 12.11.2006 Pro/E-Version: WF2, M240 Mechanica-Version: WF2, M240 (+ Adv. Sim Option) Grafikkarte: ATI FireGL X3-256 Tyan Mainboard + 2xAMD Opteron System 2 GByte WindowsXP
|
erstellt am: 25. Nov. 2006 07:42 <-- editieren / zitieren --> Unities abgeben: Nur für dbexkens
Hallo ! Ergänzend wäre noch zu sagen, dass, wenn man korrekt runden will, nicht nur mit 100 zu multiplizieren ist (bzw. 1000, etc - je nachdem, wieviel Nachkommastellen man will), sondern auch noch mit 0,5 zu addieren ist. Bsp. (nur prinzipiell - geht um die +0.5) s$ = STRING$ ( INT ( 12.836 * 100 + 0.5 ) / 100 ) ergibt korrekt 12.84 (statt 12.83) Viele Grüße TPP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |