FAQ: Anzeige von Objekt- und Dateieigenschaften als Text - SCHRIFTFELD _FIELD RTEXT / Rund um AutoCAD
FAQ 03. Apr. 2019, 15:55

FAQ: Anzeige von Objekt- und Dateieigenschaften als Text - SCHRIFTFELD _FIELD RTEXT

Zwei Hilfe[F1]links zum Thema vorab: SCHRIFTFELD und FIELDEVAL


Anstatt einem statischen Textwert kann man mit Hilfe eines "Schriftfeld" einen dynamischen Textwert angeben,
dieses kann Objekt- und Dateieigenschaften anzeigen - und noch mehr. (gilt auch für den Inhalt von MTExt und Attributen, auch Maßtext etc.)


Am einfachsten ist das Thema an Beispielen aufzuzeigen:

In einem Text,MText,Attribut,Maßtext,Tabelle usw. könnte man beispielsweise folgendes anzeigen lassen:
- den Layernamen auf dem das Objekt selbst liegt (falls auf das Objekt selbst nicht zugegriffen werden kann, siehe Beispiel.DWG)
- die Einfügekoordinaten einer bestimmten Blockreferenz
- den Namen des Layouts in dem sich das Anzeigeobjekt befindet (MText, Attributen usw.)
- die Flächeninformation einer Polylinie oder einer Schraffur
- den Textwert/Inhalt eines anderen Textobjektes
- die Summe aus mehreren anderen Textinhalten, hat man zwei Texte mit Inhalt "202" und 5000", so
  kann man in seinem Anzeigeobjekt 5202 anzeigen lassen, oder immer 100 weniger? immer + 4%?,
  oder stets die Hälfte? Alles kein Problem!

- und so weiter

Es gibt soooviel Möglichkeiten, unmöglich alles "kurz" aufzuzählen und jede einzelne Möglichkeit kann man
persönlich in einen ganz anderen Kontext bringen, daher nur die grobe Übersicht:


-----

Anmerkung: Der Dialog für die Schriftfelder bietet nicht alle Möglichkeiten an, so gibt es durchaus die Möglichkeit
den Schriftfeldcode händisch zu erstellen und anzupassen.
Fügt man den Code anschließend in Acad ein, so wird daraus
ein entsprechendes Schriftfeld generiert.
Beispiel eines Standard Schriftfeldes: %<\AcVar Date \f "%#c">%
Einfach Strg+C/Str+V in ACAD einfügen.. entweder in den Modell oder Papierbereich,
oder als Wert im Texteditor, oder auch Eigenschaften-Palette, wie auch immer.

Hier ein Thread zu: Mathematische Funktionen für Formel im Schriftfeld

oder wen Objekteigentschaften interessiert, der sollte sich in an dem Vokabular der Programmierer orientieren.
Mit Dialogfeld ermittelter Schriftfeldcode: %<\AcObjProp Object(%<\_ObjId 140701224426640>%).PlotStyleName>%
zeigt den Plotstil eines Objektes aus.
Jedes Objekt in einer Datei hat eine für die Datei eindeutige ID (das Handle), diese "Eigenschaft" wird aber nicht angeboten,
also ändert man es selbst im Code ab und fügt es in ACAD ein: %<\AcObjProp Object(%<\_ObjId 140701224426640>%).Handle>%

PS: Nein, es gibt keine Vollständige Liste in der "alles Mögliche" steht.

-----

Oft geäußerter Wunsch: Block, einmal Attributwert eintippen, aber in mehreren Attributen anzeigen lassen.
Klassiker: Schnitt- oder Ansichts-Angaben, aber auch viele andere Anwendungsfälle. Nachdem man bis heute in
diesem und anderen Foren öfters geschrieben steht wie man dies erreichen kann, aber der perfekte Weg fehlte meiner Erinnerung nach,
möchte ich dies hier als zweites explizite Beispiel zu "So gibt es durchaus die Möglichkeit den Schriftfeldcode händisch zu erstellen und anzupassen" nutzen.

Standardblock, Anzeige eines Attributwertes in mehreren Attributen mit bereits in der Blockdefinition vordefiniertem Schriftfeld:
Man erstellt einen Block mit Attributdefinitionen wie gehabt,
angenommen man erstellt zwei nicht konstante Attributdefinitionen ATT1 und ATT2.
ATT1 wird vom Benutzer (oder wie auch immer) ausgefüllt und ATT2 soll den Wert aus ATT1 später auslesen und anzeigen.

Man nimmt dafür den Standardcode für ein Blockplatzhalter-Schriftfeld für Blockreferenzen und als Eigenschaft
setzt man den Attributnamen ein: %<\AcObjProp.16.2 Object(?BlockRefId,1).ATT1>%
(als Vorgabewert in eine nicht-konstante Attributdefinition (ATTDEF) und schon klappts)

BEISPIEL.dwg <klick mich hier>

Beim testen vergesst nicht das Schriftfeld-update anzuschubsen, je nach FIELDEVAL reicht bereits ein REGEN, sonst ändert sich nichts am Bildschirm     
-----

Was ich hier nicht behandeln und nur die ganz neugierigen Leser darauf schubsen möchte:
Schriftfelder können DIESEL-Ausdrücke enthalten, dafür braucht man nun nicht mehr zwingend den RTEXT
welcher in LT nicht funktionieren würde, aber RTEXT kann man wie native Dieselfunktionen nutzen, also
wer aktuell nichts besseres vorhat und kein LT User ist: Vielleicht mal RTEXT in der Hilfe nachlesen.