Autor
|
Thema: Buchstabe von Stringparameter entfernen (3255 mal gelesen)
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 02. Dez. 2011 15:26 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte gern von einem Stringparameter den Buchstaben entfernen so das nur der Zahlenwert übrigbleibt. Änlnlich wie "ToString(Param/1mm)" Möchte gern den Nenndurchmesser eines Gewindes weiterverwenden z.B. "M10" soll "10" "M8 soll "8" rauskommen Gruß und schönes WE Uwe Gruß Uwe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 02. Dez. 2011 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Ist glaube ich etwas kniffelig, daher auch nicht komplette Lösung: Du kannst die einzelnen Zeichen in einer Schleife abarbeiten. also for iChar = 1 to len(sMeinString) Next iChar dann kannste die einzelnen zeichen rausschneiden mit right(left(sMeinString, ichar),1) und diese kannst Du dann prüfen mit isNumeric(right(left(sMeinString, ichar),1)) nun merkst Du Dir von wo bis wo es numerisch ist und schneidest den String dann mit Mid() raus, diesen wandelst Du dann mit CLng() zum Beispiel in ein Long um. Gibt sicher auch eine einfacherere Methode um die einzelnen Chars durchzugenen, mir ist auf die Schnelle aber nur das eingefallen. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Stammtisch in Wolfsburg http://ww3.cad.de/foren/ubb/Forum491/HTML/000179.shtml Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gladly Mitglied
Beiträge: 56 Registriert: 02.11.2007 Catia V5R19SP9HF40 64Bit Windows XP Pro x64
|
erstellt am: 02. Dez. 2011 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Guten Tag, also falls es sich bei dem Parameter schon um einen String handelt (so habe ich es verstanden), kann man mit folgender Formel ein enfternen des "M" erreichen, sowie gleichzeitig in einen Real umwandeln: Eingabestring: String.2="M10,5" String so ändern, das M entfernt wird (ergibt "10,5") Also Starte beim 2. Buchstaben und nehme noch so viele Buchstaben wie die Anzahl aller MINUS 1 (der erste ist ja weg) String.2->Extract(1,String.2 ->Length()-1) String zu Real umwandeln String.2 ->Extract(1,String.2 ->Length()-1 ) ->ToReal() Bei Kommawerten aufpassen, da die ToReal-Function dort sehr piselig ist. Also selbst Testen ob bei deinen Einstellungen ein Komma "," oder ein Punkt "." als Dezimalzeichen im String verlangt wird!
mfg Edit: Da habe ich wohl zu lange zum Tippen gebraucht...
[Diese Nachricht wurde von gladly am 02. Dez. 2011 editiert.] [Diese Nachricht wurde von gladly am 02. Dez. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 02. Dez. 2011 15:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, habe vergessen zu schreiben, das ich kein Makro schreibe, sonderen in einem Parameter eine Berechnung durchführen möchte. Also "Gewindetiefe" = "NenndurchmesserGewinde"*1,5mm Nur stört mich das "M" bei meinem Parameter Gewinde. Möchte aber auch nicht unbedingt einen zusätzlichen Parameter anlegen. Gruß Uwe Hallo gladly Zitat: Da habe ich wohl zu lange zum Tippen gebraucht...
Ich kann dich beruhigen du bist nicht der einzige Werd deine Variante mal testen. Sieht gut aus. [Diese Nachricht wurde von moppesle am 02. Dez. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gladly Mitglied
Beiträge: 56 Registriert: 02.11.2007 Catia V5R19SP9HF40 64Bit Windows XP Pro x64
|
erstellt am: 02. Dez. 2011 15:51 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Mein Vorschlag ist kein Marko. Ein ganz normale Formel, wie Sie sie wünschen. Einfach den String.2 (war nur mein Teststring) durch den String-Parameter NenndurchmesserGewinde ersetzen! Also "Gewindetiefe" = NenndurchmesserGewinde ->Extract(1,NenndurchmesserGewinde ->Length()-1 ) ->ToReal() *1.5mm Geweindetiefe muss in diesem Fall halt ein Parameter vom Typ Length/Länge sein! Um ein ewentuelles 0-Ergebnis wegen falschem Dezimalzeichen zu verhindern könnte man die Formel noch folgend umschreiben (NICHT GETESTET!) Also "Gewindetiefe" = ReplaceSubText(NenndurchmesserGewinde, ".", ",") ->Extract(1,NenndurchmesserGewinde ->Length()-1 ) ->ToReal() *1.5mm Also von M10.5 zu M10,5 damit die ToReal-Function geht. Das *1.5mm wird ja eh direkt angemerkt, wenn er die Schreibweise nicht will. mfg
Edit: Nun häuft sich diese Verzögerung... Also sorry für die doppelte Erklärung nun [Diese Nachricht wurde von gladly am 02. Dez. 2011 editiert.] [Diese Nachricht wurde von gladly am 02. Dez. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Dez. 2011 17:20 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Ich würde zum Extrahieren der Zahl nur zwei ReplaceSubText verwenden (1x für "M", 1x für "."): ReplaceSubText(ReplaceSubText(NenndurchmesserGewinde , "M" , "") , "." , ",") ->ToReal() *1.5mmGruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gladly Mitglied
Beiträge: 56 Registriert: 02.11.2007 Catia V5R19SP9HF40 64Bit Windows XP Pro x64
|
erstellt am: 02. Dez. 2011 17:52 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
|
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 05. Dez. 2011 09:31 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Hallo Moppesle, mit Formeln gibt es noch eine alternative Lösung für Deine Problemstellung: 1. Aus dem Gewinde werden mit „->Extract(1,…)“ die Zeichen ab der zweiten Stelle ausgelesen. 2. Die Anzahl der Stellen wird mit „Length()“ aus dem Gewinde ausgerechnet, damit die Formel auf einstellige und mehrstellige Gewindewerte passt. (-1, weil die erste Stelle als 0 zählt) 3. Mit ->ToReal() wird die Zeichenfolge in eine Zahl verwandelt. 4. *1mm ergibt eine Länge. Also Beispiel: Gegeben: Parameter(Gew)=M10 Formel: Parameter(Länge)= Parameter(Gew)->Extract(1,Parameter(Gew)->Length()-1)->ToReal()*1mm ------------------ Gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gladly Mitglied
Beiträge: 56 Registriert: 02.11.2007 Catia V5R19SP9HF40 64Bit Windows XP Pro x64
|
erstellt am: 05. Dez. 2011 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
|
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 05. Dez. 2011 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 05. Dez. 2011 19:18 <-- editieren / zitieren --> Unities abgeben:
Hallo ihr drei, funktioniert wie gewollt. He Mörchen danke für die detailierte Erklärung. Dann versteh ich´s auch als Goofy Dankeschöön Gruß Uwe [Diese Nachricht wurde von moppesle am 06. Dez. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |