Hi,
zunächst: Der Code sollte an und für sich funktionieren!
>>"Leider werden die MText mit Führungslinie bei der ersten Auswahl völlig fasch berechnet, denn es wird der Wert der vorgegeben Konstanten eingesetzt."
Das mag im Ergebnis so aussehen, aber ich bin GANZ sicher es wird das Ergebnis von (atof (cdr(assoc 1 OBJEKTDATEN))) zu dem Wert von Z1 addiert,
also muss der Wert von Z2 nicht das von dir erwartete sein, nämlich 0.
>>"Ich habe hier gelesen das es sich bei meinem Mtext um einen manipulierten Text handelt."
Die Aussage würde zu meinem ersten Gedanken passen, offenbar ist dir nicht bewußt was der Inhalt des MText Gruppencode ist?
Markiere einen dieser MTexte und schau nach! STRG+1 Eigenschaften-Palette, oder Befehl LISTE
oder einfach (assoc 1 (entget(entsel)))
Ich bin sicher du findest interne MText-Formatierungen
Beispiel: MTEXT auf Textstil Standard mit Schriftart ISOCP.shx, Mtext-Farbe VonLayer, Layerfarbe weiss.
Der MText zeigt dargestellten Textwert mit Schriftart UniDreamLED an (cooool), FETT, in Farbe 1(rot) an!
Dargestellter Textwert: 140
Gruppencode 1 Wert: {\fUniDreamLED|b1|i0|c0|p2;\C1;140}
Und atof "140" => 140
aber atof "{\fUniDreamLED|b1|i0|c0|p2;\C1;140}" => 0.0
ganz andere Beispiele zum verstehen von atof (neben der Hilfe[F1]): atof
Befehl: (atof "a1b2")
0.0
Befehl: (atof "1b2")
1.0
Befehl: (atof "12")
12.0
Beim Thema interne MText-Formatierungen kommst du am schnellsten weiter mit dem Suchbegriff STRIPMTEXT.
In der Lisp steckt geballtes Wissen über diese Formatierungen, es lohnt sich also mal MTexte und die interne Formatierungen zu studieren,
MTEXT erstellen, etwas über den internen MText-Editor ändern - wie die Schriftart, und dann den Inhalt des Gruppencode 1 ansehen.
Daneben der StripMText-Code, welche eine Hilfe sein könnte.
Eigentlich wollte ich hier schreiben: Ab für jetzt und hier und um es für dich und deinen Fall abzukürzen, du brauchst nur die einfache Variante:
(getpropertyvalue (car(entsel)) "TEXT")
aber die Funktion getpropertyvalue gibt es erst seit 2011(meinen AutoDESK und ich, andere sagen 2012),
daher mußt du eine Alternative suchen oder selbst programmieren.
Tip: Die Aufgabe ist nicht neu, du findest sowas im www, auch hier auf CAD.de
Bedenke das auch der angezeigte Text ungültig sein KÖNNTE "H=140" zum Beispiel, in dem Fall sollte dein Programm
entweder die 140 erkennen und verwerten können, oder eine Hinweis-Meldung ausgeben und nichts verändern.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP