Allplan Fórum

[Otázka] Einfügepunkt PythonParts festlegen, PythonPart auf Koordinaten verschieben. [Vyřešeno]

Tagy:
  • Pythonpart
  • Koordinaten
  • Excel
  • Python
  • Part
  • Offset
  • Placement

Hallo zusammen,

aktuell importiere ich mit einer Excel Datei Koordinaten in mein PythonPart. Gibt es eine „Move“ ähnliche Möglichkeit ein PythonPart auf festgelegte Koordinaten zu verschieben? Derzeit nutze ich CreateElementResult und bekomme das gewünschte Ergebnis indem ich den placement_point festlege und über GetOffsetPoint auch mögliche Offsets berücksichtige. Da ich in Zukunft jedoch mehrere verschiedene Objekte mit unterschiedlichen Koordinaten innerhalb des Parts platzieren möchte, würde ich das gerne über einen anderen Weg erreichen.

Grüße
Niklas

Show solution Hide solution

Wenn das tatsächlich das Ziel ist, dann soll es auch ohne interactor gehen. An die methode PythonPartUtil.create_pythonpart kann optional ein Matrix3D mit der Translation übergeben werden. Im Anschluss einfach in CreateElementResult den placement point in (0,0,0) definieren und so müsste es auch mit StandardPythonPart funktionieren.

Hallo Niklas

Move-Funktionalität ist nichts anderes, als eine Translation. Sie, sowie Rotation und Skalierung sind operationen, die unter einem Sammelbegriff Transformation fallen. Und eine Transformation ist in Allplan Python API mit einer Matrix2D/Matrix3D beschrieben. Wir haben darüber ein ausführliches Artikel geschrieben.

Ich weiß nicht, welche objekte du verschieben willst, aber sie lassen sich bestimmt mit Matrix2D/3D transformieren. Du kannst vielleicht mehr details dazu nennen?

Ich interpretiere die Anfrage so, dass das komplette PythonPart an eine Position verschoben werden soll, deren Koordinaten aus einer Datei gelesen werden.

Objekte innerhalt eines PythonParts können relativ zum Einfügepunkt des PythonParts mit den genannten Transformationen verschoben werden. Eine Positionierung im "globalen Kontext" (Global-Koordinaten) scheint hingegen eher problematisch zu sein.

Möglicherweise müßte man ein PythonPart mit einem Interactor benutzen, der dasselbe bzw. andere PythonParts anhand von Koordinaten aus einer Datei im Modell-Raum absetzt.

Wenn das tatsächlich das Ziel ist, dann soll es auch ohne interactor gehen. An die methode PythonPartUtil.create_pythonpart kann optional ein Matrix3D mit der Translation übergeben werden. Im Anschluss einfach in CreateElementResult den placement point in (0,0,0) definieren und so müsste es auch mit StandardPythonPart funktionieren.

Hallo ihre beide,
Nemo hat das Problem richtig verstanden und bmarciniec die Lösung geliefert. Alles funktioniert nun wie gewollt, vielen Dank an euch für die schnelle Problemlösung!