icon

Support Forum

[Frage] Python Funktionen Beschriftungsbilder, Funktion nicht gefunden [Gelöst]

Schlagworte:
  • Python
  • |Beschriftungsbild
  • Formel

Hallo zusammen,

wir verwenden teilweise Pythonfunktionen für die Texte in Planlegenden.
Das hat bis vor Kurzem gut funktioniert, nun erhalten wir jedoch eine Fehlermeldung.

Die programmierten Funktionen sind in Ordnung. Laut Python Protokolldatei werden die Strings korrekt ausgegeben, aber nicht ins Beschriftungsbild übergeben.

Dieser Fehler findet sich in der Protokolldatei:
AttributeError: module '__main__' has no attribute 'execute_function'

Allplan wirft beim Versuch die Planlegenden zu verwenden die Fehlermeldung gemäß Anhang aus.

Kann hier jemand weiterhelfen?

VG
Marcus

Anhänge (1)

Typ: image/png
48-mal heruntergeladen
Größe: 7,89 KiB

Lösung anzeigen Lösung verbergen

Die execute_function liegt normalerweise im Verzeichnis \Etc\Scripts\functions.py.

Wenn das nicht der Fall ist, oder diese kaputt ist, hilft sicher eine Reparaturinstallation.

Anhänge (1)

Typ: image/jpeg
87-mal heruntergeladen
Größe: 60,92 KiB

Welche Allplan-Version wird benutzt?

Zum nachstellen des Problems, wird sicher jemand (z.B. die Hotline) das konkrete Beipsiel brauchen:
-TB mit Element und Beschriftungsbild
-Python-Function

Würdest Du uns das hier zur Verfügung stellen?

Ansonsten kann (nicht nur hier) keiner ernsthaft etwas dazu sagen, geschweige denn helfen...

Allplan 2023
Um Fehler in den eigenen Funktionen auszuschließen, habe ich die Functions.py bis auf die Testfunktionen von Allplan reduziert.
Das Problem besteht weiterhin, sowohl in Bauteilbeschriftungen wie auch in Planlegenden.
Screenshot mit Beispiel Bauteilbeschriftung, Teilbilder und Functions.py anbei.

VG
Marcus

Anhänge (3)

Typ: application/ndw
1996-mal heruntergeladen
Größe: 960,27 KiB
Typ: application/zip
1937-mal heruntergeladen
Größe: 63,54 KiB
Typ: image/png
88-mal heruntergeladen
Größe: 33,81 KiB

das Pluszeichen zwischen zwei Strings/Texten addiert diese. Damit hat die Funktion nur ein Argument, welches übergeben wird und nicht funktionieren. Vermutlich muss hier ein Semikolon stehen, um die beiden Argumente auch als einzelne Argumente zu übertragen.

Die Kunst, welcher ein Ingenieur vermutlich erlernte ist weit genug lesen zu können, um Informationen quer übergreifend verwenden zu können.
Die Kunst als Ingenieur zu überlegen ist mit geänderten Rahmenbedingungen nicht zu verzweifeln.

Als Separator für die Argumente muss ein Semikolon(;) verwendet werden:
Richtig wäre also:

p:testArgs("eins";"zwei")

p:testArgs("eins"+"zwei") will eine Funktion aufrufen, die nur ein Argument hat!
Und diese Funktion gibt es nicht, was auch die Fehlermeldung ordnungsgemäß mitteilt!

Korrekt, danke für die Hinweise!
Das ist beim Basteln des Tests versehentlich passiert.
An der Fehlermeldung ändert das leider nichts, die erscheint weiter wie zuvor...

VG
Marcus

Die execute_function liegt normalerweise im Verzeichnis \Etc\Scripts\functions.py.

Wenn das nicht der Fall ist, oder diese kaputt ist, hilft sicher eine Reparaturinstallation.

Anhänge (1)

Typ: image/jpeg
87-mal heruntergeladen
Größe: 60,92 KiB

Zitiert von: cbrandlmay
Die execute_function liegt normalerweise im Verzeichnis \Etc\Scripts\functions.py.
Wenn das nicht der Fall ist, oder diese kaputt ist, hilft sicher eine Reparaturinstallation.

Dankeschön, läuft wieder!
Ich konnte die Datei mit einer funktionierenden Version aus dem Backup überschrieben.

VG
Marcus