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] Visual Scripring Möglichkeiten [Gelöst]

Schlagworte:
  • Visual
  • Scripting
  • Möglich
  • Anfänger

Hallo liebes Forum.

Zu Beginn möchte ich sagen, dass ich noch keine Erfahrung mit Visual Scripting habe. Bevor ich mich in diesem Thema vertiefe gäbe es noch ein paar Fragen, welche noch interessant für mich wären.

  • Kann man mit bereits bestehenden Allplan Objekten interagieren. Ist es zum Beispiel Möglich bereits gezeichnete Polygonzüge auszuwählen und diese anschließend zu verwerten. Zum Beispiel.: Einen gezeichneten Querschnitt (als Polygonzug) extrudieren.

  • Wie kann ich mein "Skript" debuggen?

  • Ist es Möglich die Attribute anderer Objekte zu verwenden und zum Beispiel in einer externen Datei zu speichern?

  • Ich habe gesehen, dass die Visual Scripting Objekte auch über den System-IO Namespace verfügen. Wie ausgereift ist dieser? Ist es auch so wie bei SmartParts, dass während einer "Sitzung" immer nur geschrieben ODER gelesen werden kann?

  • Erhält man als Ergebnis immer einen Python-Part? Ich weiß, dass Visual Scripting auf Python basiert. Wenn ich selbst einen Python-Part schreibe habe ich die Möglichkeit auch Objekte zu erzeugen, ohne dass diese an den Part gebunden sind. (Es werden also einzelne 3D Körper erzeugt)

  • Ist es Möglich auch eigene Python-Nodes zu schreiben und diese zu integrieren?

  • In SmartParts konnte man "Sub-Objekte" erzeugen. Das heißt einen bereits gespeicherten SmartPart in einem anderen "übergeordneten" SmartPart aufzurufen. Als Ergebnis hat man eine SmartPart-Gruppe erhalten. Diese SubObjekte konnten dann in einem IFC-Viewer separat betrachtet werden. Ist das hier auch Möglich?

  • Wie kann ich mein Ergenis verwerten? Ich habe gesehen, dass als Ergebnis eine .pyp-Datei erstellt wird. Muss diese dann einfach im Library-Ordner von Allplan kopiert werden, damit ich mein Ergebnis in der Bibliothek aufrufen kann?

Ich weiß, das sind viele Fragen aber ich hoffe man kann mir hier weiterhelfen. Danke schon mal im Voraus!

Lösung anzeigen Lösung verbergen

Hallo,

hier sind die Antworten zu Deinen Fragen bezüglich VisualScripting (VS):


  • Kann man mit bereits bestehenden Allplan Objekten interagieren. Ist es zum Beispiel Möglich bereits gezeichnete Polygonzüge auszuwählen und diese anschließend zu verwerten. Zum Beispiel.: Einen gezeichneten Querschnitt (als Polygonzug) extrudieren.

    VS kann mit bestehenden Allplan Objekten interagieren, z.B. die Geometrie der Objekte übernehmen. Dabei kann auch eine Kopplung mit dem Objekt erstellt werden, sodass z.B nach einer Änderung der Polygongeometrie das erzeugte PythonPart direkt mit der neuen Geometrie erstellt wird. Die Objektinteraktion wird ständig ausgebaut. Ziel ist es, auf alle Daten der Allplan Objekte mit VS zugreifen zu können.

  • Wie kann ich mein "Skript" debuggen?

    Das Debuggen des "Skripts" erfolgt durch:
    - Den Tooltip, der die Daten der Parameter im VisualEditor anzeigt. Diese Funktionalität wird gerade ausgebaut, damit auch die Daten von Listen angezeigt werden können.
    - Den Node "Print", der die Daten im Allplan Trace-Window anzeigt.
    - Durch Debuggen der Node-Skripte, z.B. mit Visual Studio Code.

  • Ist es Möglich die Attribute anderer Objekte zu verwenden und zum Beispiel in einer externen Datei zu speichern?

    Auf die Attribute der Objekte kann man mit VS zugreifen. Zum Speichern der Attribute in einer Datei gibt es die Examples "ExportAttributesToCSV" und "ExportAttributesToXML".

  • Ich habe gesehen, dass die Visual Scripting Objekte auch über den System-IO Namespace verfügen. Wie ausgereift ist dieser? Ist es auch so wie bei SmartParts, dass während einer "Sitzung" immer nur geschrieben ODER gelesen werden kann?

    Bitte diese Frage näher erläutern.

  • Erhält man als Ergebnis immer einen Python-Part? Ich weiß, dass Visual Scripting auf Python basiert. Wenn ich selbst einen Python-Part schreibe habe ich die Möglichkeit auch Objekte zu erzeugen, ohne dass diese an den Part gebunden sind. (Es werden also einzelne 3D Körper erzeugt)

    Aktuell kann man mit dem Node "CreateObject" Objekte erzeugen, siehe z.B. das Example "ColumnInput"

  • Ist es Möglich auch eigene Python-Nodes zu schreiben und diese zu integrieren?

    Man kann eigene Python-Nodes erstellen. Diese müssen unter "...\std\VisualScripts" vorhanden sein, damit sie im VisualEditor verfügbar sind. Wichtig: jeder Node muss eine eindeutige UUID bekommen, vorhanden in der pypsub-Datei!

  • In SmartParts konnte man "Sub-Objekte" erzeugen. Das heißt einen bereits gespeicherten SmartPart in einem anderen "übergeordneten" SmartPart aufzurufen. Als Ergebnis hat man eine SmartPart-Gruppe erhalten. Diese SubObjekte konnten dann in einem IFC-Viewer separat betrachtet werden. Ist das hier auch Möglich?

    Diese Funktionalität ist bei den PythonParts vorhanden, muss aber noch für VS erstellt werden.

  • Wie kann ich mein Ergenis verwerten? Ich habe gesehen, dass als Ergebnis eine .pyp-Datei erstellt wird. Muss diese dann einfach im Library-Ordner von Allplan kopiert werden, damit ich mein Ergebnis in der Bibliothek aufrufen kann?

    Mit dem VisualEditor wird eine pyp- und einen xml-Datei für das VS-PythonPart erstellt. Wenn diese Dateien in einem Library-Ordner vorhanden sind, kann das VS-Sript über die Bibliothek aufgerufen werden. Zusätzlich kann man sich noch eine png-Datei erstellen, die dann in der Bibliotheks-Palette angezeigt wird.

Wenn Du noch weitere Fragen hast, bitte melden.

Viele Grüße
Horst

Hallo,

hier sind die Antworten zu Deinen Fragen bezüglich VisualScripting (VS):


  • Kann man mit bereits bestehenden Allplan Objekten interagieren. Ist es zum Beispiel Möglich bereits gezeichnete Polygonzüge auszuwählen und diese anschließend zu verwerten. Zum Beispiel.: Einen gezeichneten Querschnitt (als Polygonzug) extrudieren.

    VS kann mit bestehenden Allplan Objekten interagieren, z.B. die Geometrie der Objekte übernehmen. Dabei kann auch eine Kopplung mit dem Objekt erstellt werden, sodass z.B nach einer Änderung der Polygongeometrie das erzeugte PythonPart direkt mit der neuen Geometrie erstellt wird. Die Objektinteraktion wird ständig ausgebaut. Ziel ist es, auf alle Daten der Allplan Objekte mit VS zugreifen zu können.

  • Wie kann ich mein "Skript" debuggen?

    Das Debuggen des "Skripts" erfolgt durch:
    - Den Tooltip, der die Daten der Parameter im VisualEditor anzeigt. Diese Funktionalität wird gerade ausgebaut, damit auch die Daten von Listen angezeigt werden können.
    - Den Node "Print", der die Daten im Allplan Trace-Window anzeigt.
    - Durch Debuggen der Node-Skripte, z.B. mit Visual Studio Code.

  • Ist es Möglich die Attribute anderer Objekte zu verwenden und zum Beispiel in einer externen Datei zu speichern?

    Auf die Attribute der Objekte kann man mit VS zugreifen. Zum Speichern der Attribute in einer Datei gibt es die Examples "ExportAttributesToCSV" und "ExportAttributesToXML".

  • Ich habe gesehen, dass die Visual Scripting Objekte auch über den System-IO Namespace verfügen. Wie ausgereift ist dieser? Ist es auch so wie bei SmartParts, dass während einer "Sitzung" immer nur geschrieben ODER gelesen werden kann?

    Bitte diese Frage näher erläutern.

  • Erhält man als Ergebnis immer einen Python-Part? Ich weiß, dass Visual Scripting auf Python basiert. Wenn ich selbst einen Python-Part schreibe habe ich die Möglichkeit auch Objekte zu erzeugen, ohne dass diese an den Part gebunden sind. (Es werden also einzelne 3D Körper erzeugt)

    Aktuell kann man mit dem Node "CreateObject" Objekte erzeugen, siehe z.B. das Example "ColumnInput"

  • Ist es Möglich auch eigene Python-Nodes zu schreiben und diese zu integrieren?

    Man kann eigene Python-Nodes erstellen. Diese müssen unter "...\std\VisualScripts" vorhanden sein, damit sie im VisualEditor verfügbar sind. Wichtig: jeder Node muss eine eindeutige UUID bekommen, vorhanden in der pypsub-Datei!

  • In SmartParts konnte man "Sub-Objekte" erzeugen. Das heißt einen bereits gespeicherten SmartPart in einem anderen "übergeordneten" SmartPart aufzurufen. Als Ergebnis hat man eine SmartPart-Gruppe erhalten. Diese SubObjekte konnten dann in einem IFC-Viewer separat betrachtet werden. Ist das hier auch Möglich?

    Diese Funktionalität ist bei den PythonParts vorhanden, muss aber noch für VS erstellt werden.

  • Wie kann ich mein Ergenis verwerten? Ich habe gesehen, dass als Ergebnis eine .pyp-Datei erstellt wird. Muss diese dann einfach im Library-Ordner von Allplan kopiert werden, damit ich mein Ergebnis in der Bibliothek aufrufen kann?

    Mit dem VisualEditor wird eine pyp- und einen xml-Datei für das VS-PythonPart erstellt. Wenn diese Dateien in einem Library-Ordner vorhanden sind, kann das VS-Sript über die Bibliothek aufgerufen werden. Zusätzlich kann man sich noch eine png-Datei erstellen, die dann in der Bibliotheks-Palette angezeigt wird.

Wenn Du noch weitere Fragen hast, bitte melden.

Viele Grüße
Horst

Zur Frage:

Ich habe gesehen, dass die Visual Scripting Objekte auch über den System-IO Namespace verfügen. Wie ausgereift ist dieser? Ist es auch so wie bei SmartParts, dass während einer "Sitzung" immer nur geschrieben ODER gelesen werden kann?

kann ich vielleicht helfen:

Die Frage zielt sicher darauf ab, dass Dateien bei einem SmartPart-Modifikationsdurchlauf zwar gelesen werden können, dieselbe Datei aber nicht gleichzeitig geschrieben werden kann.

Mit den IO-Klassen von Python ist das aber kein Problem.
Dann ist aber auch der Programmierer für das korrekte Öffnen und Schliessen der Datei verantwortlich.
Performance-Probleme durch das Lesen oder Parsen von großen Dateien muß man dann allerdings selbst vermeiden.

Alles klar danke für die Antworten!

Ein paar Fragen sind mir noch eingefallen.

  • Wird für die Versionierung der Parts noch ein Befehl eingeführt? Wenn ich die pyp-Datei überspeicher, muss ich den Pythonpart nochmals aktivieren, dass das Skript aktualisiert wird - hier wäre ein Befehl ähnlich wie "SmartParts aktualisieren" recht angenehm..

  • Wenn ich einen Pythonpart erstelle kann ich auch die Darstellung in 2D modifizieren. Bei VS habe ich das noch nicht gefunden bzw. wird das auch implementiert?

Hallo Horst,

du hast geschrieben:

"Mit dem VisualEditor wird eine pyp- und einen xml-Datei für das VS-PythonPart erstellt. Wenn diese Dateien in einem Library-Ordner vorhanden sind, kann das VS-Sript über die Bibliothek aufgerufen werden. Zusätzlich kann man sich noch eine png-Datei erstellen, die dann in der Bibliotheks-Palette angezeigt wird."

Wie schafft man es dem VS-Script für die Anzeige in der Library eine png-Datei zuzuweisen?
Gibt es dazu evtl. eine kurze Anleitung?

Noch eine Frage zum Aufrufen von Scripts:
Gibt es eine Möglichkeit ein VS-Script, anstatt über die Library über einen Button in der Actionbar zu starten?
(Also faktisch eine Verknüpfung zu einem Actionbar Button herzustellen?)

Grüße,
Mario

Hallo Mario - hier kann ich dir glaub ich auch helfen.
Wenn du eine png-Datei in der Vorschau verwenden willst, muss diese am gleichen Ort wie die .pyp-Datei liegen und gleich heißen.

Um einen Button in der Actionbar zu erhalten muss das glaub ich über die NOI-Schnittstelle von Allplan erfolgen, da die Events in der Actionbar nur über diese Schnittstelle "abgefangen" werden können.

Anhänge (1)

Typ: image/png
16-mal heruntergeladen
Größe: 3,23 KiB

Hallo GUBALLPLAN,

danke für den Hinweis zur png-Datei! Werde ich gleich mal testen!

Grüße,
Mario

Hallo,

hier noch meine Antworten zu den offenen Fragen:

  • Wird für die Versionierung der Parts noch ein Befehl eingeführt? Wenn ich die pyp-Datei überspeicher, muss ich den Pythonpart nochmals aktivieren, dass das Skript aktualisiert wird - hier wäre ein Befehl ähnlich wie "SmartParts aktualisieren" recht angenehm.

    Diesen Befehl werden wir noch zur Verfügung stellen.

  • Wenn ich einen Pythonpart erstelle kann ich auch die Darstellung in 2D modifizieren. Bei VS habe ich das noch nicht gefunden bzw. wird das auch implementiert?

    Die Erstellung der "Views" (2D/3D) gibt es bereits für die PythonParts. Für VS müssen wir noch einen Node erstellen, mit dem diese Views erzeugt werden können.

  • Wie schafft man es dem VS-Script für die Anzeige in der Library eine png-Datei zuzuweisen?

    Man kann das VS-Script ausführen und dann mit einem Tool den Bildausschnitt von dem Ergebnis ausschneiden und in eine png-Datei parallel zu der pyp-Datei speichern.

  • Gibt es eine Möglichkeit ein VS-Script, anstatt über die Library über einen Button in der Actionbar zu starten?

    Diese Funktionalität ist in Allplan 2022 vorhanden (ohne NOI!). Nähere Informationen gibt es in den Versionsinfos. Diese Funktionalität steht auch für PythonParts zur Verfügung.

Viele Grüße
Horst

Hallo Zusammen,

gibt es mittlerweile in Visual Scripting eine Lösung für Allplan 2024 aus der Fragestellung/Antworten vom 06.09.2021, ein Script in ein Übergeordnetes Script zu laden?

Gruß Andreas

Anhänge (1)

Typ: image/jpeg
16-mal heruntergeladen
Größe: 48,69 KiB