Hallo,
Das aufrufen von PythonParts ist im Planmodus derzeit generell gesperrt. Wir planen die Sperrung mittelfristig aufzuheben (vsl. Allplan 2026), können es aber nicht versprechen.
Sie können es aber umgehen, indem Sie das PythonPart in Teilbild aktivieren, und über einen Button zu Planlayout wechseln. Das Blöde an der Sache ist nur, dass Sie die Nummer des Zielplanlayouts wissen müssen.
Platzieren Sie im PYP einen Button, z.B. so:
<Parameter>
<Name>LoadLayoutRow</Name>
<Text>Load the layout</Text>
<ValueType>Row</ValueType>
<Parameter>
<Name>LoadLayoutButton</Name>
<Text>Load!</Text>
<EventId>1001</EventId>
<ValueType>Button</ValueType>
</Parameter>
</Parameter>
Und dann im Skript das Event von Drucken des Buttons so handeln (ich gehe hier von einem Interactor PythonPart, aber auch im Standard PythonPart würde es funktionieren):
def on_control_event(self, event_id: int) -> bool:
if event_id == 1001:
layout_service = AllplanBaseElements.LayoutFileService()
layout_service.LoadFile(self.document, 1234) # bitte hier statt 1234 das tatsächliche nummber des zu aktivierenden Planlayout angeben
AllplanBaseElements.DrawingService.RedrawAll(self.document)
return False
Viele Grüße,
Bart