Support Forum

[Frage] PythonPart Ausführung im Planfenster blockiert

Schlagworte:
  • Allplan
  • Pythonpart
  • Planmodus

Hallo zusammen,

ich erstelle gerade ein PythonPart, was aber nicht mit PytonPart Util abgesetzt wird, sondern es werden einfach Linien und Texte erstellt und abgesetzt. Ich würde diese Linien und Texte aber gerne im Planmodus absetzten, aber das PythonPart wird gar nicht erst im Planfenster-Modus geöffnet. Werde diese blockiert und wie kann ich die im Planmodus aktivieren?

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