Hi,
>>"$(if,$(eq,$(getvar,\AcObjProp Object(\_ObjId 2450768087344).TextString), "Montage"), "Montagezeichnung")
Auch wenn das nichts bringt, dein Ausdruck etwas aufgedröselt:
1. Als Tip, auch wenn es nicht immer zu einem "Fehler" führt und überall auch anders zu sehen ist:
Vermeide die unnötigen Leerzeichen in Dieselausdrücken! $(getvar,CTAB) als Beispiel benötigt kein Leerzeichen.
Hält man sich daran, so ist die Chance auch Probleme zu stoßen geringer wie mit Leerzeichen und es kostet auch nichts,
vorallen nicht unnötig Zeichen in einem Dieselausdruck (je nachdem wo man Diesel nutzt gibt es Längen-Beschränkungen)
2. $(getvar,\AcObjProp Object(\_ObjId 2450768087344).TextString)
\AcObjProp Object(\_ObjId 2450768087344).TextString) ist keine AutoCAD-Variable, also rennt getvar in einen Fehler
>>"versucht habe ich schon verschiedene Möglichkeiten, aber komme zu keinem Ergebnis."
Dann hättest du aber doch auch schon mitbekommen das man in Diesel-Schriftfelder keine anderen Schriftfelder verschachteln kannst.
Das Resultat deines verschachtelten Schriftfelds %<\AcObjProp Object(%<\_ObjId 2450768087344>%).TextString>%,
also in deinem Beispiel = "Montage" würde als dummer Textstring in das Dieselschriftfeld integriert werden.
Du hättest also kein Schriftfeld erstellt was so aussieht:
$(if,$(eq,$(getvar,\AcObjProp Object(\_ObjId 2450768087344).TextString), "Montage"), "Montagezeichnung")
sondern so:
$(if,$(eq,"Montage, "Montage"), "Montagezeichnung")
>>"Vielleicht gibt es auch andere Lösungen, die besser geeignet wären."
- Mit Diesel kann man keine Objektdaten auslesen, also geht DIESEL in dem Zusammenhang überhaupt nicht.
Wäre die Zeichenkette im Layout- oder Dateinamen zu finden und möglichst immer an gleicher Stelle im Namen, dann wäre das lösbar.
- Mit einem Objekt-Eigenschaften Schriftfeld kannst du keine IF THEN ELSE Geschichten machen, also ist das auch raus.
Bleibt nur noch Programmierung, die funktioniert natürlich nur bei demjenigen der das Programm installiert hat.
>>"Optimal wäre es, wenn ein Block, der immer in der Vorlagezeichnung verfügbar ist, am Einfügepunkt XY auf dem Layout eingefügt wird."
>>" Aber ich bezweifle, dass das so einfach geht?!"
Wieoft soll er das denn machen, jedes Mal wenn eine Datei geöffnet wird? Nach drei Mal öffnen hast du dann 3 Blockreferenzen dort liegen,
oder 100x in der Sekunde? Nein, das geht nicht und wäre auch nicht Sinnvoll.
Ein entsprechendes Zusatzprogramm würde auf Montage=Montageplanung (und die anderen Fälle) prüfen,
dann schauen ober die Blockreferenz bereits eingefügt ist oder das noch erfolgen muss - und diese dann einfügen.
Ootb gibt es da nichts, aus dem www suche ich jetzt auch nichts heraus - möchte aber motivieren zum SUCHEN,
denn du kannst dir denken: Das brauchen sehr vielen Leute! Hauptsächlich wirst du über workarounds stolpern,
aber vielleicht findest du auch ein paar Zeilen Code.
Anm: Nicht nur im deutschen Sprachraum ist das oft gewünscht.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP