Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Mtext mit Führung umrechnen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Mtext mit Führung umrechnen (505 mal gelesen)
Bauvermesser
Mitglied
Vermesser


Sehen Sie sich das Profil von Bauvermesser an!   Senden Sie eine Private Message an Bauvermesser  Schreiben Sie einen Gästebucheintrag für Bauvermesser

Beiträge: 460
Registriert: 18.03.2006

AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,

erstellt am: 23. Jun. 2021 22:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Habe hier eine LSP gefunden mit welcher man den Höhentext über eine Konstante +- umrechnen kann.
Leider werden die MText mit Führungslinie bei der ersten Auswahl völlig fasch berechnet, denn es wird der Wert der vorgegeben Konstanten eingesetzt. Ich habe hier gelesen das es sich bei meinem Mtext um einen manipulierten Text handelt.
Kann mir jemand helfen die Objektwahl richtig zu definieren.
Die lsp soll nur für Mtext mit Führung angewendet werden.

(defun c:ADD ( / Z1 Z2 OBJEKT OBJEKTDATEN )
  (if (setq Z1(getreal "\nZahl eingeben: "))
    (while (setq OBJEKT (car(entsel "\nText wählen : ")))
      (setq OBJEKTDATEN(entget OBJEKT '("*")))
;;;    (if (member(cdr(assoc 0 OBJEKTDATEN)) '("TEXT" "MTEXT"))
      (if (member(cdr(assoc 0 OBJEKTDATEN)) '("MTEXT"))
      (progn
          (setq Z2 (atof (cdr(assoc 1 OBJEKTDATEN))))
          (setq OBJEKTDATEN (subst(cons  1 (rtos (+ Z1 Z2) 2 2))
                                  (assoc 1 OBJEKTDATEN)
                                  OBJEKTDATEN
                            )               
          )       
          (entmod OBJEKTDATEN)
          (command "_regen")
        )
      )
    )     
  )
)

------------------
Gruß vom Bauvermesser;

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 23. Jun. 2021 23:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bauvermesser 10 Unities + Antwort hilfreich

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

Bauvermesser
Mitglied
Vermesser


Sehen Sie sich das Profil von Bauvermesser an!   Senden Sie eine Private Message an Bauvermesser  Schreiben Sie einen Gästebucheintrag für Bauvermesser

Beiträge: 460
Registriert: 18.03.2006

AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,

erstellt am: 30. Jun. 2021 21:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die ausführliche Erläuterung.

------------------
Gruß vom Bauvermesser;

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bauvermesser
Mitglied
Vermesser


Sehen Sie sich das Profil von Bauvermesser an!   Senden Sie eine Private Message an Bauvermesser  Schreiben Sie einen Gästebucheintrag für Bauvermesser

Beiträge: 460
Registriert: 18.03.2006

AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,

erstellt am: 02. Jul. 2021 11:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


probe-.dwg

 
ich hänge hier mal eine kleine DWG ran,  ich habe einiges getestet komme aber mit den für mich komplizierten Hinweisen nicht weiter,  zur Zeit löse ich den Führungstext auf in einfachen text, dann geht alles und ich muss damit leben, trotzdem danke für die erläüterung, das es so speziell ist habe ich nicht bedacht!

------------------
Gruß vom Bauvermesser;

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz