Zitiert von: f_hoeser
Gibt es eine Möglichkeit mit VS Geländepunkte zu erstellen? Es gibt das Node GetVertices oder 3DPoint. Beide erstellen 3D-Punkte. Das sind aber nur Datensätze die man nur innerhalb eines Skripts verarbeiten kann. Modelldaten in Form von Geländepunkten entstehen dadurch nicht. Kann man eventuell mit dem Node ExecPythonScript Geländepunkte schreiben?
Hallo Felix
die Funktionalität eines Geländepunktes ist zwar in dem Python API von Allplan exponiert, aber noch nicht in VisualScripting implementiert. D.h. es gibt (noch!) keine Nodes dafür. Wenn du es aber dringend brauchst, kannst du es über ExecPythonScript auch erzeugen. Man braucht aber zumindest grundlegende Programmierkenntnisse dafür.
Der Geländepunkt ist in Allplan Python API über die Klasse NemAll_Python_BasisElements.Symbol3DElement() exponiert.
Um so ein Geländepunkt zu erzeugen, braucht man 3 Argumente:
- Common properties -> Klasse, die allgemeine Eigenschaften beschreibt: Strichstärke, Strichart, Farbe
- Symbol 3D Properties -> Klasse, die spezifische Eigenschaften des Geländepunktes beschreibt, wie z.B. Symbol, mit dem der Punkt im Modell dargestellt wird
- Geometry object -> beschreibung der Geometrie. Geometrie eines Geländepunkts wird einfach durch 3DPoint beschrieben. Den bekommst du eben von den von dir erwähnten Nodes 3DPoint.
Hier mal ein Beispielcode, den du in ExecPythonScript einfügen kannst:
import NemAll_Python_BasisElements as AllplanBasisElements
import NemAll_Python_BaseElements as AllplanBaseElements
def function_to_execute(point_3d):
common_props = AllplanBaseElements.CommonProperties()
common_props.GetGlobalProperties()
symbol_3d_props = AllplanBasisElements.Symbol3DProperties()
symbol_3d_element = AllplanBasisElements.Symbol3DElement(common_props,symbol_3d_props,point_3d)
return symbol_3d_element
Wie du siehst, brauch die Funktion ein Argument von einem 3DPoint. Den musst du an den Node ExecPythonScript übergeben (sh. Anhang)
Wie gesagt, das ist nur eine Zwischenlösung für dein Problem. Wir arbeiten daran, alle Klassen, die in API verfügbar sind, auch als Nodes zur Verfügung zu stellen.