icon

Forum de la communauté Allplan

  • Zvolené téma neexistuje.

  • Das angeforderte Thema existiert nicht.

  • The requested topic does not exist.

  • Das angeforderte Thema existiert nicht.

Python Part - Projekt-Attribute (Benutzerdefiniert) beschreiben und im Planlayout auslesen im Beschriftungsbild -Probleme mit Aktualisierung


Hallo,

ich habe ein Problem, dass ich in Allplan 2025-1-8 die mit einem PythonPart geschriebenen benutzerdefinierten Projektattribute in Beschriftungsbildern verwende. Leider werden die Beschriftungsbilder dort nicht direkt beim Aufruf des Planlayouts aktualisiert. Erst wenn ich vorab einmal in die Projekteinstellungen gehe und dort über Attribute belegen in das Menü gehe, dann sind danach auch die Beschriftungsfelder im Planlayout aktualisiert.

Welchen Trigger muss ich verwenden, um dies direkt herbeizuführen, ohne über den Attributaufruf in den Projekteinstellungen zu gehen. In der PRJAttr.dat stehen die entsprechenden IDs mit drin und auch die entsprechenden Werte. Was mir dabei nur aufgefallen ist, dass dort für die benutzerdefinierten Projektattribute gar nicht der Name mit übergeben wird, sondern bei jedem Attribute "EmptyAttributeName" statt des im AttributManger definierten Namens steht.

Kurzfristige Tipps oder Lösungen sind wünschenswert.

Grüße aus dem Ruhrgebiet..

B.Trinkaus

...dass dort für die benutzerdefinierten Projektattribute gar nicht der Name mit übergeben wird, sondern bei jedem Attribute "EmptyAttributeName" statt des im AttributManger definierten Namens steht.

Im AttributManger sollte man keine Projektattribute definieren, sondern ausschließlich dort, wo sie angezeigt werden: in den Projekteinstellungen!

Ich würde auch mal stark in Frage stellen, ob man überhaupt benutzerdefinierten Projektattribute mit einem PythonPart schreiben kann bzw. sollte. Warum?
Ja ganz einfach, weil diese in der erwähnten Datei PRJAttr.dat abgelegt sind!
Und diese Datei wird wie alle anderen Projekt-Ressourcen einmalig beim "Betreten" des Projekts gelesen!

Ähnlich verhält es sich mit der Layerdefinitionsdatei layerdef.dat.
Wenn man diese verändert, egal ob mit einem Texteditor oder mit einem PythonPart, muss man das Projekt verlassen und neu "betreten", oder die Projekt-Einstellungen ändern.

Hallo,

ich glaube ich habe mich missverständlich ausgedrückt.

Ich habe Eigene Projektattribute definiert. (Siehe Screenshots)

Diese lassen sich genau wie die internen Projektattribute über den ProjectAttributeService der Python API auslesen und beschreiben. Das klappt ja auch alles.
Erst wenn ich in den Planköpfen Beschriftungsfelder mit den Attributen habe, werden diese Beschriftungsfelder nicht direkt beim Aufruf des Planlayouts befüllt. Ein Neu-Absetzen des Plankopfes hilft auch nicht.

Ich gehe davon aus, dass die Attribute erst im Planlayout aktualisiert werden müssen, denn am Anfang sind die Attribute ja leer. Ich habe in den Beschriftungsfeldern folgende Formel drin:

_IF_(@2205@<>"")(@2205@)_ELSE_"-"

Das heißt zu Beginn sind die Attribute leer und es wird ein "-" gesetzt. Wenn die Attribute gefüllt sind, soll der String gesetzt.

Aber die Formel wird halt nicht direkt getriggert, wenn man ins Planlayout wechselt, oder das Programm versteht nicht, das die Attribute gefüllt sind.

In der PRJAttr.dat fummelt niemand händisch rum.

Grüße,

B.Trinkaus

Pièces-jointes (2)

Type: image/png
Téléchargé 16 fois
Size: 11,72 KiB
Type: image/png
Téléchargé 10 fois
Size: 49,62 KiB

Wie / Wo wurden die benutzerdefinierten Projekt-Attribute angelegt (definiert)?
Mir scheint die Attribute sind nicht korrekt DEFINIERT worden!

Egal, wie oder wer die benutzerdefinierten Projekt-Attribute ändert: Letztlich "landen" die Informationen in der PRJAttr.dat.
Dass in dieser Datei die Namen der benutzerdefinierten Attribute fehlen, ist schon mal eigenartig!

Händisch kann man diese Attribute nur in den Projekt-Einstellungen machen, also "außerhalb" des Projektes, denn im Anschluss werden die Projekt-Ressourcen neu gelesen.

Ob die Python-API ProjectAttributeService direkt die eingelesenen benutzerdefinierten Projekt-Attribute verändert, oder "nur"
die PRJAttr.dat kann ich nicht beurteilen.

Schon mal probiert, die Formel durch den Attributwert "@2205@" zu ersetzen?

Ist es wirklich notwendig, die Projekt-Attribute per Python zu ändern?
Wie oft ändern sich die Attribut-Werte denn, und wer außer dem Projekt-Eigentümer darf diese ändern?

PLANSERVER_PLANNAME klingt eben auch nicht nach einen Projekt-Attribut, sondern nach einem Plan-Attribut!