| |
| 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
Beiträge: 695 Registriert: 08.09.2003
|
erstellt am: 18. Aug. 2009 17:06 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für autocart
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
Beiträge: 695 Registriert: 08.09.2003
|
erstellt am: 18. Aug. 2009 19:06 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 18. Aug. 2009 21:54 <-- editieren / zitieren --> Unities abgeben: Nur für autocart
|
autocart Mitglied Technischer Redakteur
Beiträge: 695 Registriert: 08.09.2003
|
erstellt am: 19. Aug. 2009 02:38 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 19. Aug. 2009 07:32 <-- editieren / zitieren --> Unities abgeben: Nur für autocart
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
Beiträge: 695 Registriert: 08.09.2003
|
erstellt am: 19. Aug. 2009 11:12 <-- editieren / zitieren --> Unities abgeben:
|