Das Wissen aller Anwender nutzen

Im Allplan Connect Forum tauschen sich Anwender aus, geben wertvolle Tipps oder beraten sich bei ganz konkreten Aufgabenstellungen − auch international.
Und damit wirklich keine Frage unbeantwortet bleibt, unterstützen die Mitarbeiter des Technischen Supports ebenfalls aktiv das Forum.

Es erwarten Sie:

  • Foren-Vielfalt aus CAD Architektur, CAD Ingenieurbau uvm.
  • Tipps von User für User
  • international: Deutsch, Englisch, Italienisch, Französisch und Tschechisch

Melden Sie sich jetzt an und diskutieren Sie mit!

Zur Registrierung

[Frage] Fehler bei String Value List [Gelöst]

Schlagworte:
  • PythonParts
  • Fehler
  • Allplan
  • 2022
  • PYP

Hallo.

Mir ist aufgefallen, dass das Definieren von einer mehrdimensionalen Value List mit Strings leider nicht möglich ist. Hier der Beispiel Code aus meiner .pyp-Datei:

<Parameter>
   <Name>StringValueList</Name>
   <Text>Test</Text>
   <Value>[[]]</Value>
   <ValueType>String</ValueType>
   <Dimensions>Structure_Count, Structure_Dimension</Dimensions>
   <ValueListStartRow>1</ValueListStartRow>
</Parameter>

Beim Start des Parts wird folgende Fehlermeldung im Trace ausgegeben:

File "C:\ProgramData\Nemetschek\Allplan\2022\Etc\PythonPartsFramework\GeneralScripts\BuildingElementListUtil.py", line 25, in get_list_params
return "[" + ";".join(list_ele) + "]"
TypeError: sequence item 0: expected str instance, list found

Wenn ich den ValueType vom oberen Code jedoch in Length ändere Funktioniert es einwandfrei. Hab ich hier etwas falsch gemacht, oder ist das ein Fehler von Allplan?

Lösung anzeigen Lösung verbergen

Hallo,

ich kann das Problem bei mir nicht nachvollziehen.

Ich habe das Example "ValueList" für eine 2.-dim. String-Liste erweitert und angehängt. Dort wird auch die Initialisierung für die 2.-dim. Liste gezeigt.

Hilft Dir das weiter?

Viele Grüße
Horst

Anhänge (1)

Typ: application/zip
792-mal heruntergeladen
Größe: 1,15 KiB

Könnte <Value>[[""]]</Value> oder <Value>[[None]]</Value> oder [""]*2 helfen?

Hallo,

das ist leider noch ein Fehler von Allplan. Ich habe die korrigierte Datei angehängt, bitte nach ...\etc\PythonPartsFramework\GeneralScripts kopieren.

Aktuell muss die Liste noch mit den Default-Werten von Structure_Count und Structure_Dimension initialisiert werden, z.B.

<Value>[[""] * 3] * 5</Value>

In der nächsten Version werden wir das direkt mit den <Dimensions> ausführen.

Viele Grüße
Horst

Hallo Horst.

Danke für die Antwort. Leider hast du vergessen die korrigiert Datei anzuhängen.
Auch wenn ich es mit

<Value>[[""] * 2] * 2</Value>

probiere spuckt Trace immer noch die gleiche Fehlermeldung aus.

Hallo,

hier ist die Datei.

Viele Grüße
Horst

Anhänge (1)

Typ: application/zip
840-mal heruntergeladen
Größe: 1.002,00 B

Hallo.

Danke für die Datei. Ich hab das nochmal getestet. Der PythonPart lässt sich nun starten. Wenn ich jedoch den Parameter Structure_Count verändere (Standard Wert 1 auf 2 vergrößern) stürzt Allplan ab und gibt folgende Fehlermeldung im Trace aus.

Traceback (most recent call last):
File "C:\ProgramData\Nemetschek\Allplan\2022\Etc\PythonPartsFramework\GeneralScripts\BuildingElementInput.py", line 343, in modify_element_property
update_palette = self.palette_service.modify_element_property(page, name, value)
File "C:\ProgramData\Nemetschek\Allplan\2022\Etc\PythonPartsFramework\GeneralScripts\BuildingElementPaletteService.py", line 239, in modify_element_property
refresh_palette, prop = BuildingElementValueUtil.update_value(name, value, build_ele,
File "C:\ProgramData\Nemetschek\Allplan\2022\Etc\PythonPartsFramework\GeneralScripts\BuildingElementValueUtil.py", line 154, in update_value
if isinstance(value, int) and update_list_size(name, value, build_ele, control_props):
File "C:\ProgramData\Nemetschek\Allplan\2022\Etc\PythonPartsFramework\GeneralScripts\BuildingElementValueUtil.py", line 37, in update_list_size
two_dim_count = build_ele.get_property(dimensions[-1]).value if dimensions_len > 1 else 1

Außerdem ist mir aufgefallen, dass ich nur für eine Dimension des Strings einen Standardwert vorgeben kann.

<Value>[["Column 1"]]</Value>
ist möglich.
<Value>[["Column 1"]"Column 2"]</Value>
leider nicht.

Das erzeugt noch einen weiteren Fehler: Wenn ein String einer Value List keinen Wert hat (if not myString also True ergeben würde) dann wird dieser auch nicht in der Eingabepalette dargestellt.

Hallo,

ich kann das Problem bei mir nicht nachvollziehen.

Ich habe das Example "ValueList" für eine 2.-dim. String-Liste erweitert und angehängt. Dort wird auch die Initialisierung für die 2.-dim. Liste gezeigt.

Hilft Dir das weiter?

Viele Grüße
Horst

Anhänge (1)

Typ: application/zip
792-mal heruntergeladen
Größe: 1,15 KiB

Hallo Horst.

Danke für das Beispiel - jetzt funktioniert das so wie ich es will.
Der Fehler war, dass ich

<Value>[["Column 1"]"Column 2"]</Value>

anstatt von
<Value>[["Column 1","Column 2"]]</Value>

verwendet habe.

LG