| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Zahlen am Komma ausrichten (1292 mal gelesen)
|
Gemuetsmensch Mitglied
Beiträge: 18 Registriert: 04.08.2010 BricsCAD 9
|
erstellt am: 28. Aug. 2010 17:14 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 28. Aug. 2010 17:37 <-- editieren / zitieren -->
Hi, vorgabemäßig nein, es gibt in AutoCAD keine Ausrichtung nach Dezimalpunkt. Umweg wäre, die Textlänge des Textobjekts mit und ohne Dezimalstellen zu ermitteln und dann eben den Einfügepunkt entsprechend zu schieben. - alfred - ------------------ www.hollaus.at |
Gemuetsmensch Mitglied
Beiträge: 18 Registriert: 04.08.2010 BricsCAD 9
|
erstellt am: 30. Aug. 2010 15:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, Danke, das klingt gut. Mit Fix() den Ganzzahl-Anteil finden ist ja kein Problem, doch was meinst Du mit "Länge", die Anzahl Stellen der Zahl? Bei meinem Versuch zur Stellenermittlung bin ich auf ein mir unerklärliches Phänomen gestoßen:
Code: Sub Logarithmus_und_Stellenzahl() Dim Zahl As Double, Ergebnis As Double, Stellen As Integer Zahl = 100 Ergebnis = Log(Zahl) / Log(10#) Debug.Print Ergebnis, Fix(Ergebnis), Int(Ergebnis) Stellen = Fix(Ergebnis) + 1 Debug.Print Stellen End Sub
Das Ergebnis 2 wird dabei sowohl durch Fix als auch Int zu 1!! Gebe ich jedoch direkt ein Fix(2), ergibt dies richtigerweise 2. Hängt das mit der internen Rechengenauigkeit zusammen?Oder meinst Du mit "Textlänge" die x-Ausdehnung der Zahl in der Zeichnung? Wie kann man denn die ermitteln? Und woher bekomme ich die Breite EINES Zeichens?? Irgendwie sitze ich wohl noch auf der Leitung. Mit freundlichen Grüßen der Gemütsmensch [Diese Nachricht wurde von Gemuetsmensch am 30. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 30. Aug. 2010 15:30 <-- editieren / zitieren -->
Hi, >> Oder meinst Du mit "Textlänge" die x-Ausdehnung der Zahl in der Zeichnung? Wie kann man denn die ermitteln? Wenn der Text waagrecht steht, dann kannst Du mit TextObj.getBoundingBox(MinPnt, MaxPnt) Dir die Extents herausrechnen lassen, und dann Abs(MaxPnt(0) - MinPnt(0)) ergbibt dann die Textlänge in AutoCAD-Einheiten) >> Und woher bekomme ich die Breite EINES Zeichens??
Mach Dir halt temporär ein AcadText-Objekt, schreib das Zeichen rein und messe es dann nach obigem Weg nach. ABER: Du kannst bei Proportionalschrift nicht einfach einzelne Zeichen-X-Größen zusammenzählen, da damit die Unterschneidungen (Kerning) nicht berücksichtigt wäre. Das mit FIX(... verstehe ich nicht (z.B. was 'Ergebnis2' sein soll). Bei mir ergibt diese Formel fix(log(100)/log(10)) nach Auswertung den Wert 2
- alfred - ------------------ www.hollaus.at |
Gemuetsmensch Mitglied
Beiträge: 18 Registriert: 04.08.2010 BricsCAD 9
|
erstellt am: 30. Aug. 2010 23:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, einfach Klasse, was Du alles weißt! "getBoundingBox" - da soll einer drauf kommen, Danke!!! Ich verwende es nun ohne die Klammern, so liefert es ohne Umwege die gesuchten "Eckdaten" des Textobjektes. Zitat: Das mit FIX(... verstehe ich nicht (z.B. was 'Ergebnis2' sein soll)
Nein, nicht Ergebnis2 sondern des Ergebnis "2", also den dekadischen Logarithmus von 100 in meinem Code. Und wenn Du diesen Code einfach kopierst, müßtest auch Du im Direktfenster 2 1 1 stehen haben, und das begreife ich eben nicht, wobei auch bei mir Debug.Print Fix(Log(100) / Log(10)) richtig 2 liefert! Jetzt habe ich die Deklaration von "Ergebnis" von Double auf Single geändert, plötzlich stimmen die Zahlen!?! Welche ein Mysterium... Kannst Du das erklären? Achja: Bitte nicht auslachen, aber wie komme ich denn von den AutoCAD-Einheiten auf meine Meter? (Vielleicht liegt das jetzt aber auch nur an der Uhrzeit oder am Rotwein) Viele Grüße Udo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 30. Aug. 2010 23:11 <-- editieren / zitieren -->
Hi, Deinen Code ausgeführt ergibt bei mir: 2 2 2 3 Ich bin aber im AutoCAD und nicht in Bricscad, ev. ist das der Unterschied. Double kannst (und imho sollst) Du auch so belassen. >> Vielleicht liegt das jetzt aber auch nur an der Uhrzeit oder am Rotwein
Schon, ja, ... Alkohol kann den räumlichen Wahrnehmungssinn verändern Mit UNITS kannst Du einstellen, wie Du Dir die AutoCAD-Einheiten vorstellst (im wahrsten Sinne des Wortes). Denn zeichnest Du eine Linie mit 1 Länge, dann weißt nur Du, dass es in diesem Fall Meter oder Millimeter sind. Mach ev. mal folgendes (fett gedrucktes ist die Eingabe): Befehl: _setvar<ENTER> Variablenname eingeben oder [?]: ?<ENTER> Aufzulistende Variable(n) eingeben <*>: *UNITS*<ENTER> ...dann siehst Du alle Variable, die mit UNITS zu tun haben. - alfred - ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 30. Aug. 2010 editiert.] |
Gemuetsmensch Mitglied
Beiträge: 18 Registriert: 04.08.2010 BricsCAD 9
|
erstellt am: 01. Sep. 2010 22:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, das FIX- und INT- Problem scheint wirklich am BricsCAD zu liegen. Ich habe mir geholfen, indem ich den Ganzzahl- Anteil in einen String umwandle und die Textlänge ermittle. Vielen Dank, auch für die UNITS - Erklärung und die Auflistung. Schön, wie einem in diesem Forum geholfen wird! Viele Grüße Udo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|