Hallo!
ich möchte Allplan-Elemente innerhalb eines Python Script Object verschieben. Den Verschiebe-Vektor übernhme ich aus der Palette.
Ich greife daher mit z.B: MultiElementSelectInteractor darauf zu.
Unter NemAll_Python_BaseElements gibt es eine Reihe von Möglichkeiten (CopyElements, ScaleElements, DeleteElement), aber nicht fürs Verschieben.
Für das Verschieben bleibt nur die Möglichkeit BaseElementAdapter in ein Objekt zu wandeln.
z.B: ElementTransform und ModifyElements?!
Das hat den Nachteil, dass es nicht für alles API-objects gibt.
Habe ich in der Dokumentation etwas übersehen? Wäre dankbar für einen Tipp oder Workaround.
Freundliche Grüße,
Christian
Auszug:
def on_control_event(self, event_id: int) -> bool:
if event_id == 1071:
# Move
print ("-- event_id == 1071 MoveAnything")
self.durchlauf = 71
AllplanIFW.HighlightService.CancelAllHighlightedElements(self.document.GetDocumentID())
self.script_object_interactor = MultiElementSelectInteractor(self.selection_result,
prompt_msg = "MoveAnything | Elemente auswählen, Exit mit [ESC]")
self.script_object_interactor.start_input(self.coord_input)
def start_next_input(self):
if self.durchlauf == 71:
if self.undo_service:
self.undo_service.CreateUndoStep()
self.undo_service = None
print ("-- self.durchlauf == 71")
self.script_object_interactor = None
# MoveAnything
move_models = AllplanBaseEle.GetElements(self.selection_result.sel_elements)
# Den Verschiebe-Vektor übernhme ich aus der Palette (wahlweise x-koord, y-koord oder beide)
transform_vec = AllplanGeo.Vector3D()
if build_ele.XAnteilCheckBox.value:
transform_vec.X = build_ele.XAnteil.value
if build_ele.YAnteilCheckBox.value:
transform_vec.Y = build_ele.YAnteil.value
if transform_vec.GetLength() > 0.0001:
print("i'm here: ", transform_vec)
AllplanBaseEle.ElementTransform(transform_vec,
0.0, 0.0, 0.0,
move_models)
#self.sel_api_dims)
AllplanBaseEle.ModifyElements(self.document, move_models)
#AllplanBaseEle.CopyElements(self.coord_input.GetInputViewDocument(), self.selection_result.sel_elements,
# AllplanGeo.Point3D(), transform_vec, AllplanGeo.Vector3D(),
# 0.0, 1, self.coord_input.GetViewWorldProjection())
#AllplanBaseEle.DeleteElements(self.coord_input.GetInputViewDocument(), self.selection_result.sel_elements)