Autor
|
Thema: Nachkommastellen runden, Einheiten ausblenden (2312 mal gelesen)
|
Catia100 Mitglied Selbstständig
Beiträge: 9 Registriert: 26.11.2006
|
erstellt am: 03. Feb. 2007 21:02 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte aus einer Zeichnung auf Gewichtsparameter eines Parts zugreifen und verweisen. Im Part habe ich mir einen Parameter Masse erzeugt welchen ich auch einem Drawing-Text zuweisen kann. Mein Problem ist die Angabe der Einheit (kg)welche automatisch im Text erscheint. Um die Zahl einheitslos zu bekommen dachtee ich nun einen Parameter Reele Zahl zu erzeugen, welcher jedoch nur drei Nachkommastellen aufweisen soll. Frage: Hat jemand eine Idee wie ich dem Parameter Masse die Einheit ausblenden kann? Wie kann ich einen Einheitslosen Parameter mit nur 3 Nachkommastellen erzeugen? Bin ich vielleicht total auf dem falschen Weg? Vielen Dank für eure Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003 Win7, ACA2010
|
erstellt am: 04. Feb. 2007 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für Catia100
Hallo, schau' mal, ob dir sowas vielleicht weiterhilft:
Code:
Sub test() Dim re As Object, reMatch As Object Dim s As String, i% Set re = CreateObject("vbscript.regexp") re.Global = 1 re.Pattern = "\d+,?\d*" s = "25,12345kg; 30000,0127 kg; 0,1kg; 200,5789kg" Set reMatch = re.Execute(s) For i = 0 To reMatch.Count - 1 Debug.Print CDbl(Round(reMatch(i), 3)) Next End Sub
Gruss NancyEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catia100 Mitglied Selbstständig
Beiträge: 9 Registriert: 26.11.2006
|
erstellt am: 04. Feb. 2007 13:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für deine schnelle Antwort. Ich muß gestehen das ich erst anfange mich mit dem Thema Makro zu befassen. Gibt es vielleicht auch eine Methode die Nachkommastellen im Formeleditor zu reduzieren? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003 Win7, ACA2010
|
erstellt am: 04. Feb. 2007 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für Catia100
Hello again, sorry, ich hab von Catia und dessen Editoren ungefähr soviel Ahnung wie vom Fliegen eines Spaceshuttles.;-) Meine Antwort bezog sich nur auf deinen Parameter/Variable die ein Drawing-Text (also ein String?) ist und wie du da die Zahlen extrahieren könntest, also nur als allgemeine Stringbearbeitung. Was Catia-intern machbar ist ... - da müssen andre ran;-) Grüsse Nancy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003
|
erstellt am: 04. Feb. 2007 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für Catia100
Hallo, hier nochmal etwas kommentiert, am einfachsten wäre wohl aber du nimmt die Left() Variante, wenn nix andres kommt. CU Nancy --
Code:
Sub test1() Dim re As Object, s As String, retval As String Set re = CreateObject("vbscript.regexp") re.Global = 1 '************************** '\d+ == ein oder mehrere digits ',? == ein oder kein Komma '\d* == kein oder mehrere Digits re.Pattern = "(\d+,?\d*).*" s = "25,123799kg" 'dein Drawing-Text retval = Round(CDbl(re.Replace(s, "$1")), 3) MsgBox retval, , "mit RegExp" '~~~~~~~~~~~~~~~~~~~~~~~~~~ 'oder ganz simpel, wobei ich deinen String nicht kenne retval = Round(CDbl(Left(s, Len(s) - 2)), 3) MsgBox retval, , "ohne RegExp" End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catia100 Mitglied Selbstständig
Beiträge: 9 Registriert: 26.11.2006
|
erstellt am: 04. Feb. 2007 19:47 <-- editieren / zitieren --> Unities abgeben:
Hey, super vielen Dank für Deinen Einsatz. Ich werde die Variante probieren sobald ich deuten kann was Du mir vorschlägst.(Bin noch absolut Ahnungslos beim Lesen und Schreiben von Makros.) Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
Beiträge: 4755 Registriert: 27.09.2000 Dell precision M4300, 4GB Arbeitsspeicher NVidia FX360M Windows XP professional SP3 CATIA V5 R16SP9, R17SP8, R18SP8, R19SP4 Adobe Acrobat 8 Linux: Ubuntu 8.04LTS
|
erstellt am: 04. Feb. 2007 20:27 <-- editieren / zitieren --> Unities abgeben: Nur für Catia100
Hallo zusammen, @catia100: In startreks Posting steckt noch eine Besonderheit, von der ich nicht weiß, ob sie überhaupt auf allen Betriebssystemversionen von V5 funktioniert: Ein Regulärer Ausdruck. Du findest ihn hier: Zitat:
re.Pattern = "\d+,?\d*"
Das Pattern bedeutet: Ziffer ("\d"] mindestens eine Wiederholung ("+") ein Komma (",") eine oder keine Wiederholung ("?") Ziffer ("\d") beliebige Anzahl Wiederholungen ("*") Ich würde ihn noch etwas anpassen, da statt des Komma auch ein Punkt als Dezimaltrenner auftreten kann - je nach Sprachumgebung. Die Zeile lautet dann Code:
re.Pattern="\d+[,\.]?\d*"
Näheres zu Regulären Ausdrücken findest du z.B. hier. Viele Grüße, CEROG ------------------ Inoffizielle CATIA-HIlfeseite CATIA-FAQ Inoffizielle Linux-Hilfeseite http://www.cad-gaenssler.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003
|
erstellt am: 04. Feb. 2007 21:36 <-- editieren / zitieren --> Unities abgeben: Nur für Catia100
Hallo CEROG, ich weiss es auch nicht, aber ich vermute mal, dass alle Programme die VB[A] unterstützen auch die M$ VBScript RegExp kennen [müssten], als *.dll. @catia100: du fährst glaube besser mit Left(), setz mal ein F1 auf das Schlüsselwort ab, es ist nicht wirklich schwer, sich den string zurechtzubiegen;-) Aber Offtopic, zurück zu Dir Roland: Ich finde du hast das ganz gut rübergebracht, irgendwie fände ich so ein kleines RE-Forum nicht ganz schlecht. Mir ist klar, dass aufgrund der verschiedenen Dialekte das nicht so einfach ist, ebenso die Zuordnung eines solchen Forums auf cad.de. Aber einen gewissen Reiz hätte es .... - ich wöllt gerne mal wissen, wie Du oder andere das sehen würdet. lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
Beiträge: 4755 Registriert: 27.09.2000 Dell precision M4300, 4GB Arbeitsspeicher NVidia FX360M Windows XP professional SP3 CATIA V5 R16SP9, R17SP8, R18SP8, R19SP4 Adobe Acrobat 8 Linux: Ubuntu 8.04LTS
|
erstellt am: 05. Feb. 2007 05:50 <-- editieren / zitieren --> Unities abgeben: Nur für Catia100
Hallo zusammen, @Startrek: Dassault hat VB auf die 4 Unix-Plattformen (AIX, HP-UX, IRIX und Solaris) portiert, auf denen CATIA läuft. Ich weiß halt nicht, ob sie die Regulären Ausdrücke mit portiert haben... Auf der anderen Seite verwendet der Q-Checker (das Datenqualitätschecktool) für einige Tests auch regläre Ausdrücke. Das müßte ich mir noch genau anschauen. Reguläre Ausdrücke sind sicher ein Forum wert. Der Artikel auf 42.cad.de, auf den ich verlinkt habe, ist ja nur sehr oberflächlich. Bei OReilly gibt es ein Buch zu dem Thema - naja, 2. Die Verwendungsmöglichkeiten sind vielfältig - Spamfilterung, Überprufung auf Einhaltung von Namenskonventionen, Überprüfung von Eingaben in Webformularen usw... Nancy, schickt Albert einfach eine PM, ob er sowas einrichten kann. Eine Modertorin dazu wüßte ich auch schon. Viele Grüße, CEROG ------------------ Inoffizielle CATIA-HIlfeseite CATIA-FAQ Inoffizielle Linux-Hilfeseite http://www.cad-gaenssler.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|