Support Forum

[Frage] Allplan reagiert nicht auf Skript (Visual Scripting) [Gelöst]


Hallo in die Runde,

wir nutzen seit 2021 VS in unserem Planungsbüro, um Drahtmodelle von Rahmenbauwerken inkl. Flügel schnell in verschiedenen Varianten zu erzeugen. Dazu kann man in einer CSV-Datei die notwendigen Maße eingeben, die man dann in Allplan mittels verschiedener Skripte einliest. Den Skripten liegt die Modellierung von einem Rahmen bzw. von Flügeln zugrunde (siehe Bild 1) und durch die csv-Datei sind alle Bauteile aufeinander angepasst und man variiert dann nur die Abmessungen.
Leider reagiert das Skript (und einige andere dieser Art) seit ca. 6 Wochen nicht mehr. Das Problem ist auch in der Entwicklerumgebung von VS vorhanden. Dort will ich das Skript durchlaufen lassen, aber es passiert nichts. Es kommt zu keiner Fehlermeldung oder auch nur irgendeiner Reaktion von Allplan.
Im Normalfall sollte sich nach dem Start der pyp-Datei ein Fenster in der Palette öffnen, um die csv-Datei einzulesen (siehe Bild 2), da als erstes das Node ReadPoints gelistet ist.

Noch zur Einordnung des Problems:
Die Skripte wurden mehrfach über einen längeren Zeitraum genutzt und zuletzt nicht mehr verändert. Das Problem trat plötzlich auf, ohne dass im Vorfeld an dem Skript weitergearbeitet wurde. Das Skript mit den Parallelflügel (gleicher Aufbau) funktioniert weiterhin.
Da es laut Forum schon öfter Probleme nach einem Hotfix gegeben hat, wurde Allplan von uns schon komplett neu installiert. Auch eine Installation von Allplan 2021 hat keine Hilfe gebracht. Nach einer Problembeschreibung bei dem Kundensupport wurden wir an das Forum verwiesen, da dieser nicht zuständig ist.

Ich habe als Beispiel das Skript für Schrägflügel angehangen. Bei mir reagiert Allplan weder bei dem Einlesen der pyp-Datei (per Drag&Drop) noch bei dem Start in der Entwicklerumgebung (siehe Bild 3). Zusätzlich sind noch die allplan_python.out-Datei und das funktionierende Skript für Parallelflügel angehangen.

Sieht hier jemand einen Fehler unserer Anwendung von VS bzw. eine Lösung des Problems?
Vielen Dank für eure Hilfe im Voraus!

Beste Grüße
Benedikt

Anhänge (1)

Typ: application/x-rar
794-mal heruntergeladen
Größe: 700,05 KiB

Lösung anzeigen Lösung verbergen

Der Node "ReadPoints" hat scheinbar das Problem verursacht. Aber genauer Gründe müssen wir noch anschauen...

Als ein Workaround, musst du mit dem VS Editor einen beliebigen Wert ändern und dann wieder zurück ändern. Dann taucht die Palette auf...

Ansonsten könntest du den Node "ReadTable" und "TableColumns" ausprobieren. Dadurch kann man auch Werte aus einer CSV-Datei einlesen.

Product Owner API, Allplan GmbH

Anhänge (1)

Typ: image/gif
53-mal heruntergeladen
Größe: 115,63 KiB

Der Node "ReadPoints" hat scheinbar das Problem verursacht. Aber genauer Gründe müssen wir noch anschauen...

Als ein Workaround, musst du mit dem VS Editor einen beliebigen Wert ändern und dann wieder zurück ändern. Dann taucht die Palette auf...

Ansonsten könntest du den Node "ReadTable" und "TableColumns" ausprobieren. Dadurch kann man auch Werte aus einer CSV-Datei einlesen.

Product Owner API, Allplan GmbH

Anhänge (1)

Typ: image/gif
53-mal heruntergeladen
Größe: 115,63 KiB

Ich habe das Node "ReadPoints" durch das Node "ReadTable" ersetzt, womit sich die Palette öffnet und die csv-Datei wieder einlesen lässt. Das Problem ist jetzt, dass sich die Werte mit dem Node "ListItem" nicht auslesen lassen.
Es liest zwar die Tabelle ein, jedoch zeigt das Node "ListItem" keinen Wert an (richtiger Index ist eingestellt). Gibt es dafür einen erklärbaren Grund? (Wenn ich in einem leeren Arbeitsblatt auf diese Weise Werte aus einer Tabelle auslesen will, funktioniert das Node wie gewünscht)

Anhänge (2)

Typ: image/png
38-mal heruntergeladen
Größe: 77,74 KiB
Typ: image/png
16-mal heruntergeladen
Größe: 101,61 KiB

Könntest du noch sagen, was du nach dem Node "ListItem" urspringlich erwartest? Sollte es eine Liste von Werte oder nur ein Wert sein?
Denn mit dem Node "TableToList" bekommst du jetzt eine 2-dimensionale Liste. Bei dem Index von "ListItem" kann man noch definieren, auf welche Dimension er die Werte auslesen sollte.

Product Owner API, Allplan GmbH

Anhänge (1)

Typ: image/png
15-mal heruntergeladen
Größe: 15,35 KiB

Ich habe es so eingestellt, dass es nur eine Liste von Werten sein soll. In einem neuen Arbeitsblatt kann ich so die Werte mit "ListItem" auch auslesen (siehe Bild).
In dem Skript, um das es ursprünglich geht, wird jedoch nur eine leere Liste angezeigt.

Anhänge (1)

Typ: image/png
24-mal heruntergeladen
Größe: 33,02 KiB

Wäre es möglich, dass du einen Teil der CSV-Tabelle (muss nicht vollständig sein) hochlädst? sodass wir es auch ausprobieren können?

Product Owner API, Allplan GmbH

Kein Problem.

Anhänge (1)

Typ: text/plain
719-mal heruntergeladen
Größe: 1,30 KiB

Zitiert von: bm_wkp
Ich habe es so eingestellt, dass es nur eine Liste von Werten sein soll. In einem neuen Arbeitsblatt kann ich so die Werte mit "ListItem" auch auslesen (siehe Bild). In dem Skript, um das es ursprünglich geht, wird jedoch nur eine leere Liste angezeigt.

Aktuell funktioniert VS so, dass wenn es bei der Bechnung ein Fehler auftaucht, wird die Bechnung angehalten. Das Skript läuft nicht mehr weiter. In deinem Fall hat deine Skript mehreren Verzweigungen, wenn bei einer Verzeigung einen Fehler gibt, wird es angehalten. Daher zeigt das Tooltip von noch nicht berechneten Nodes nichts. In v2023 mit Node Status sieht man es besser, dass einige Nodes nicht berechnet wird. (in blau)
loading

In deiner CSV-Datei hat jede Zeile nur ein Wert. Ich würde der Tabelle noch anpassen und mit dem Node "TableColumns" arbeiten statt "TableToList". Dann kriegst du eine saubere Liste zur weiteren Bearbeitung. Damit sparst du auch vielen unötigen Point3DDeconstruct Nodes in deinem Skript. Denn kein Punkt wird aus der Tabelle erzeugt.
loading

Product Owner API, Allplan GmbH

Anhänge (2)

Typ: image/png
22-mal heruntergeladen
Größe: 35,04 KiB
Typ: image/png
31-mal heruntergeladen
Größe: 91,03 KiB

Danke für die Rückmeldung, ich werde die Anmerkungen ausprobieren und schauen inwieweit es dann wieder funktioniert.