Das Wissen aller Anwender nutzen

Im Allplan Connect Forum tauschen sich Anwender aus, geben wertvolle Tipps oder beraten sich bei ganz konkreten Aufgabenstellungen − auch international.
Und damit wirklich keine Frage unbeantwortet bleibt, unterstützen die Mitarbeiter des Technischen Supports ebenfalls aktiv das Forum.

Es erwarten Sie:

  • Foren-Vielfalt aus CAD Architektur, CAD Ingenieurbau uvm.
  • Tipps von User für User
  • international: Deutsch, Englisch, Italienisch, Französisch und Tschechisch

Melden Sie sich jetzt an und diskutieren Sie mit!

Zur Registrierung

[Frage] Interactor PythonParts [Gelöst]

Schlagworte:
  • PythonParts
  • PythonAPI
  • Interactor

Hallo liebes Forum.

Da die Dokumentation zum Thema Interactor-PythonParts leider sehr mager ist wende ich mich an euch. Ich habe einige Fragen zum Verständnis von den Interactor Parts:

  • Welche Parameter müssen mindestens an das create_interactor Attribut übergeben werden? In den InteractorExamples von Allplan wird hier jedes mal eine Unterschiedliche Anzahl an Argumenten übergeben. Liege ich richtig, dass coord_input, pyp_path und str_table_service hier die Mindestanforderung erfüllen?
  • Beim initialisieren der einzelnen Klassen werden einige Zeilen Code ausgeführt die jedoch nicht beschrieben sind. Beispiel:
    self.build_ele_service = BuildingElementService()
    - ist diese Zeile für jeden Interactor verpflichtend und was hat es damit auf sich?
  • Was hat des mit den .pal Dateien auf sich? Ist so eine Datei verpflichtend oder kann ein Interactor auch NUR mit der .pyp Datei funktionieren? Es ist außerdem schwer zu verstehen was mit diesen .pal Dateien genau gemacht wird:
    result, self.build_ele_script, self.build_ele_list, self.control_props_list,    \
       self.build_ele_composite, part_name, self.file_name = \
       self.build_ele_service.read_data_from_pyp(pyp_path + "\\Polyline3DInteractor.pal", self.str_table_service.str_table, False,
                                                 self.str_table_service.material_str_table)

Es tut mir leid falls hier einige Fragen überflüssig oder "blöd" sind aber ohne irgendeiner Dokumentation ist es sehr schwierig das Konzept der Interactor-PythonParts zu verstehen. Ich bin über jeden Input sehr dankbar

Lösung anzeigen Lösung verbergen

Hallo,

wir arbeiten an einer neuen Dokumentation für die PythonParts. Ich habe den aktuellen Stand angehängt, es gibt dort auch Informationen über die Funktion create_interactor. Der Aufruf der Dokumentation erfolgt über index.html.

Viele Grüße
Horst

Anhänge (1)

Typ: application/zip
737-mal heruntergeladen
Größe: 1,18 MiB

Hallo,

werde jetzt selbst nicht fundiert antworten können, aber durch trial and error (und schrittweise debuggen) habe ich rausgefunden, dass ein Interactor auch mit .pyp funktioniert. Anstelle "Polyline3DInteractor.pal" dann halt einfach "Polyline3DInteractor.pyp".
Ansonsten stelle ich mir momentan die gleichen Fragen. Die Erweiterung der Dokumentation wäre super

Danke für den Tipp! Das hilft mir schon ein bisschen weiter...

Hallo,

wir arbeiten an einer neuen Dokumentation für die PythonParts. Ich habe den aktuellen Stand angehängt, es gibt dort auch Informationen über die Funktion create_interactor. Der Aufruf der Dokumentation erfolgt über index.html.

Viele Grüße
Horst

Anhänge (1)

Typ: application/zip
737-mal heruntergeladen
Größe: 1,18 MiB

Hallo Horst,

vielen Dank für den Einblick in die Dokumentation! Wann ist denn ca. mit dem Release der vollständigen Doku zu rechnen?
Bei der create_interactor Funktion werden zwei Möglichkeiten beschrieben. Verstehe ich das richtig, dass wenn ich die erste Variante

def create_interactor(coord_input:                 AllplanIFW.CoordinateInput,
                      pyp_path:                    str,
                      global_str_table_service:    StringTableService,
                      build_ele_list:              List[BuildingElement],
                      build_ele_composite:         BuildingElementComposite,
                      control_props_list:          List[ControlProperties],
                      modify_uuid_list:            list):

verwende, die Parameter aus der .pyp-Datei eingelesen werden. Wenn jedoch die zweite Variante verwendet wird

def create_interactor(coord_input:              AllplanIFW.CoordinateInput,
                      pyp_path:                 str,
                      global_str_table_service: StringTableService):

besteht die .pyp-Datei nur aus dem Script-Tag und alle Parameter und auch die Palette werden aus einer oder mehreren .pal-Dateien gelesen? Wo liegt der Unterschied zwischen den beiden Varianten? Ist das nur Geschmackssache oder gibt es eine Empfehlung wann mit welcher Variante gearbeitet wird? In der Dokumentation wird beschrieben, dass mit der zweiten Variante der komplette Workflow über die .py-Datei läuft - was ist damit gemeint?

Schon mal Danke im Voraus!

Hallo,

die Dokumentation wird sehr umfangreich werden und daher haben wir noch kein Release-Datum. Wir versuchen, die Bereiche mit den meisten Kundenanfragen zuerst zu bearbeiten und diese dann als Vorabzug zu veröffentlichen.

Die erste Variante ist der Standardaufruf und verwendet die pyp-Datei.

Die zweite Variante kann man verwenden, wenn in einem Workflow verschiedene PythonParts erzeugt werden sollen. Man hat dann z.B. erst eine Auswahlpalette mit Button für Fundament, Stütze, Balken, ... und je nach gewähltem Bauteil werden die Parameter für das PythonPart eingelesen, angezeigt und bearbeitet. Auch ist es damit sehr einfach möglich, einen Workflow mit aufeinander aufbauenden Paletten, z.B. für die Modifikation von existierenden Allplan-Objekten, zu erstellen.

Viele Grüße
Horst

Hallo.

Danke für die Antwort und nochmals danke für den Vorabzug der Dokumentation!
Das hilft mir weiter, das Thema etwas besser zu verstehen.
Ich werde dann wohl mit der zweiten Variante arbeiten, da mir diese intuitiver erscheint.