Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Mtext aus Attribut extrahieren

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 aus Attribut extrahieren (1136 mal gelesen)
autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 18. Aug. 2009 17:06    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

Hallo allerseits!

BURST aus den ETools ist mir zu langsam. Deshalb will ich mir meine eigene Prozedur bauen, die mir die Attributwerte eines Inserts in einen deckungsgleichen Text bzw. MText (je nach dem was im Attr. def. war) kopiert/wandelt. (Das Insert kann eigentlich so bleiben, wie es ist. Die Attribute selbst können auch so bleiben. Ich brauch halt nur zusätzlich die deckungsgleichen Texte/Mtexte.)

Jetzt stieß ich dabei auf folgendes "Problem":
In der DXF-Referenz ist von der Subklassenmarkierung "AcDbMText" im Attribut mit GC 100 die Rede. Tatsächlich finde ich aber Subklassenmarkierungen namens "Embedded Object" mit GC 101 vor. Das ist verwirrend und deshalb ein Problem, weil ich nirgends eine Info/Doku über diesen Unterschied finden kann und daher nicht sicher bin, ob ich jetzt darauf vertrauen kann, dass alle Attribs mit Mtext immer eine Subklassenmarkierung (101 . "Embedded Object") für den Mtext haben, oder ob das auch einmal anders sein kann.

Fürs erste werde ich mein Proggi nach dem 101er GC "Embedded Object" ausrichten. Falls aber jemand mehr Infos darüber hat, wäre ich dankbar. Danke schon mal im Voraus!

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 18. Aug. 2009 17:46    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 autocart 10 Unities + Antwort hilfreich

Hallo Stephan,
ich weiß nicht ob Dir folgender Code weiterhilft. Es werden nur Deckungsgleiche Text aus Attributen erzeugt, und es fehlt noch eine Schleife, damit Du es für mehrere Blöcke und Attribute verwenden kannst.

Code:

(defun c:test ( / )
  (JBf_entmake_att->txt (entget(car(nentsel)))))

(defun JBf_entmake_att->txt (att_liste / )
(entmake (list
          '(0 . "TEXT")
          '(100 . "AcDbEntity")
          '(67 . 0)
          (assoc 410 att_liste)
          (cons 8 (getvar "CLAYER"))
          '(100 . "AcDbText")
          (assoc 10 att_liste)
          (assoc 40 att_liste)
          (assoc 1 att_liste)
          (assoc 7 att_liste)
  (assoc 41 att_liste)
          (assoc 50 att_liste)
          (assoc 51 att_liste)
          (if (assoc 62 att_liste)
            (assoc 62 att_liste)
            '(62 . 0))
  (assoc 71 att_liste)
          (assoc 72 att_liste)
          (assoc 11 att_liste)
          (assoc 210 att_liste)
          '(100 . "AcDbAttribute")
          (cons 73(cdr(assoc 74 att_liste)))
  )))


------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 18. Aug. 2009 19:06    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

Tja, danke für den Beitrag, nur gibst du mir damit keine Antwort auf meine Frage.

Noch "schlimmer", dein Code würde sogar bei MText-Attributen buchstäblich ins Leere greifen. Zumindest bei den MText-Attributen in meinem Acad 2008 gibt es zwei GC 1. Falls der MText keine Schriftfelder integriert hat ist der erste GC 1 leer bzw. "". Erst der zweite hat den richtigen Wert. Abgesehen von der Tatsache, dass kar kein MText erzeugt würde.

Hoffe ich hab das nicht zu aggressiv formuliert. Hab mir in einem anderem Forum deshalb gerade eine Rüge eingehandelt.

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 18. Aug. 2009 21:54    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 autocart 10 Unities + Antwort hilfreich

nutze die ActiveX-Schnittstelle , damit sollte es gehen

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 19. Aug. 2009 02:38    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 den Versuch, aber was sollte damit gehen?
Vielleicht habe ich mein Problem schlecht geschildert. Hier nochmals meine Frage in Kurzfassung:

Darf/Kann ich darauf vertrauen, dass alle "ATTRIB"-Entitys mit Mtext (statt "Normaltext") in der entget-Liste immer eine Subklassenmarkierung (101 . "Embedded Object") für den Mtext haben, oder kann es auch mal vorkommen, dass der Mtext-Bereich in der entget-Liste eines "ATTRIB"-Entitys mit der Subklassenmarkierung (100 . "AcDbMText") markiert ist (so, wie es eigentlich in der DXF-Ref. beschrieben ist)?

Vereinfacht mögliche Antworten: JA / NEIN / WEISS NICHT

Ich werte eure Antworten, Jörn und Thomas, einmal als ein "WEISS NICHT". Aber wie geschrieben, danke für die Antworten an sich. 1 bis 3 "WEISS NICHT"s sind besser, als wenn gar keiner antwortet 

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 19. Aug. 2009 07:32    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 autocart 10 Unities + Antwort hilfreich

na ich teste immer mit

(if(and(vlax-property-available-p ATTOBJ "MTextAttribute")
        (=(vlax-get-property  ATTOBJ "MTextAttribute"):vlax-true)
       

aber zurück zu deiner Frage :
Meine Antwort : "Ich weiß nicht"  ..und ich würde mich auch nicht darauf verlassen.. das bestimmte Sachen so sind und so bleiben...z.B. kam vor kurzem noch ein GC 280 ? bei den Attributen hinzu ... mußte ich auch ein paar Programme korrigieren.

Wenn du eine 100% Auskunft willst, wende dich an Autodesk ... da ist das Forum wohl die falsche Plattform.

------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 19. Aug. 2009 11:12    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

Alles klar, danke.
Und danke auch für die nähere Erklärung bzgl. ActiveX!

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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