[Frage] Visual Scripting: Modifizierungen an PythonParts [Gelöst]


Hallo zusammen,

in der Node-Bibliothek finden sich auch Nodes, mit deren Hilfe man PythonParts modifizieren (Attribute, Oberfläche, Schraffur, Format,...) kann (siehe Bild 1). Die Input-Ports dieser Nodes erfordern allerdings die Eingabe von ModelObjects bzw. als list($ModelObject).
In Bild 2 habe ich einen Sweep mit dem Node <Format> verknüpft, um ihm Eigenschaften zuzuweisen. Dies gelingt allerdings nicht mit dem Node <Assign Surface>.

Frage 1: Was ist mit ModelObjects gemeint und welche Arten von Nodes kann ich damit verknüpfen?

Nach dem Erstellen von PythonParts mit zugewiesener Oberfläche über das Node <Format> wird die Oberfläche nicht dargestellt (siehe Bild 3). Dies gelingt erst nach Auflösen als Makro und Zuweisung über <Freie Oberflächen an 3D-,Ar-Elemente zuweisen>.
Frage 2: Woran könnte das liegen und wie kann ich dieses Problem beheben?

Vielen Dank

Marco

Anhänge (3)

img
2020-11-09_ModelObjects_Modification…
Typ: image/jpeg
24-mal heruntergeladen
Größe: 30,46 KiB
img
2020-11-09_ModelObjects_Modification…
Typ: image/jpeg
31-mal heruntergeladen
Größe: 45,06 KiB
img
2020-11-09_Oberfläche PYP3.JPG
Typ: image/jpeg
32-mal heruntergeladen
Größe: 51,94 KiB

Lösung anzeigen Lösung verbergen

Hallo Marco,

Datentyp {$ModelObject}:
{$ModelObject} ist einen Datentyp, der auf vorhandenen ALLPLAN Objekten referenziert. D.h. Änderungen auf {$ModelObject} werden direkt auf den referenzierten ALLPLAN Objekten angewendet. Kein PythonPart-Objekt wird dann erstellt. In der Bibliothek befinden sich z.B. zwei Nodes SelectGeometryObject und SelectObjectsByAreaInput. Bei Starten lassen sich beiden Node Object von ALLPLAN einlesen. Der unterschied ist:

  • Node "SelectGeometryObject" übergibt den Wert von ausgewählten ALLPLAN Objekten an VS weiter.
  • Node "SelectObjectByAreaInput" erstellt eine Referenzierung auf die existierenden ALLPLAN Objekten.

Oberfläche Node Format:
Manchmal muss man das PythonPart-Objekt nochmal öffnen und anschließend direkt schließen, um die Oberfläche richtig darzustellen... Es ist aber ein Bug.

VG
Xinling

Anhänge (2)

img
ModelObject&GeometryObject.png
Typ: image/png
32-mal heruntergeladen
Größe: 27,26 KiB
img
Surface.gif
Typ: image/gif
38-mal heruntergeladen
Größe: 1,90 MiB
1 - 6 (6)
  • 1

Hallo Marco,

Datentyp {$ModelObject}:
{$ModelObject} ist einen Datentyp, der auf vorhandenen ALLPLAN Objekten referenziert. D.h. Änderungen auf {$ModelObject} werden direkt auf den referenzierten ALLPLAN Objekten angewendet. Kein PythonPart-Objekt wird dann erstellt. In der Bibliothek befinden sich z.B. zwei Nodes SelectGeometryObject und SelectObjectsByAreaInput. Bei Starten lassen sich beiden Node Object von ALLPLAN einlesen. Der unterschied ist:

  • Node "SelectGeometryObject" übergibt den Wert von ausgewählten ALLPLAN Objekten an VS weiter.
  • Node "SelectObjectByAreaInput" erstellt eine Referenzierung auf die existierenden ALLPLAN Objekten.

Oberfläche Node Format:
Manchmal muss man das PythonPart-Objekt nochmal öffnen und anschließend direkt schließen, um die Oberfläche richtig darzustellen... Es ist aber ein Bug.

VG
Xinling

Anhänge (2)

img
ModelObject&GeometryObject.png
Typ: image/png
32-mal heruntergeladen
Größe: 27,26 KiB
img
Surface.gif
Typ: image/gif
38-mal heruntergeladen
Größe: 1,90 MiB

Ich würde gern noch eine Frage anhängen:
Heißt dies konkret, dass man keine Attribute im gleichen Script zuweisen kann in dem die PythonParts generiert werden ?
Da ich ja erst Modelobjekte selektieren und diesen dann Attribute zuweisen kann muss ich also ein getrenntes "AttributZuweisungsScript" erstellen?
Was verstehe ich falsch?

Mit VS können Sie momentan nur benutzerdefinierte Attribute mit der Node "SetValueToAttribute" dem erstellten PythonPart-Objekt zuweisen. Was PythonPart momentan noch nicht kann, ist Attribute innerhalb eines PythonPart-Objekts zuzuweisen.

Mehr info ist in der Antwort in diesem Post zu finden.

Da bestehen gleich mehrere Probleme mit dieser Herangehensweise:
- Ich kann mit dem Node SetValueToAttribute nicht steuern, an welches Objekt(wenn ich mehrere Objekte im PythonPart modelliere) meine definierten Attribute vergebe
- Ich muss also den Namen und den Datentypen richtig schreiben/wählen, wenn ich ein Attribut vergeben, welches ich vorher bereits im Projekt definierte -> Heißt das wenn ich den Namen falsch schreibe, wird dann ein neues Attribut definiert (BSP.: Baustoff falsch geschrieben "Baustof" = neues Attribut in meiner AttributeDefinition.xml ?)

Vorschlag: Ich kann ja bereits mit dem Node AttributeValuePalette über IntegerInput auf meine Attribute aus der AttributeDefinition laden (Anhang_1 und Anhang_2)zugreifen, ist dies nicht auch auf den Node SetValuetoAttribute anwendbar ? So kann man sicher gehen, dass die richtigen Attribute geladen werden..
Und bitte dem Node SetValuetoAttribute eine Möglichkeit der Elementzuweisung geben und diesen bitte so allgemeinhalten (nicht ModelObjects), sodass dies auch im gleichen Skript möglich ist Attribute an beispielsweise Objekte aus einem Fahrweeg-Sweep zu heften

Anhänge (2)

img
Anhang_1.png
Typ: image/png
28-mal heruntergeladen
Größe: 11,77 KiB
img
Anhang_2.png
Typ: image/png
15-mal heruntergeladen
Größe: 3,36 KiB

Danke für den Feedback!

Zitiert von: Badu_LABI
Ich kann mit dem Node SetValueToAttribute nicht steuern, an welches Objekt(wenn ich mehrere Objekte im PythonPart modelliere) meine definierten Attribute vergebe

Momentan ist es nicht möglich an einzelne Objekt im PythonPart eine Attribute zu vergeben. Aber wir arbeiten schon daran.

Zitiert von: Badu_LABI
Ich muss also den Namen und den Datentypen richtig schreiben/wählen, wenn ich ein Attribut vergeben, welches ich vorher bereits im Projekt definierte -> Heißt das wenn ich den Namen falsch schreibe, wird dann ein neues Attribut definiert (BSP.: Baustoff falsch geschrieben "Baustof" = neues Attribut in meiner AttributeDefinition.xml ?)

Es funktioniert zur Zeit wie Sie geschrieben haben. Da die Idee war, dass mit dem Node User einige Attribute auch direkt in VS erzeugen kann. Aber die Möglichkeit mit Attribute-ID werden wir auch ergänzen.

1 - 6 (6)
  • 1

https://campus.allplan.com/ verwendet Cookies  -  Mehr Informationen

Akzeptieren