Link

Python Verbindung

Von Version 24 an gibt es eine Verbindung zu Archicad, bei der man über ein JSON-Interface Archicad automatisieren und skripten kann (Das ist kein Ersatz für GDL und umgekehrt). Das ist theoretisch mit jeder beliebigen Sprache, die JSON verarbeiten kann und Netzwerktauglich ist, möglich.

Start

Zunächst muss Python 3.7 oder höher auf dem Rechner installiert sein. Benötigt man mehrere Python Versionen nebeneinander auf seinem PC empfiehlt sich Miniconda – ein Paket- und Umgebungsmanager. (Achtung: Archicad findet aktuell keine virtuellen Umgebungen, wenn Anaconda/Miniconda zunächst mit einer Pythonversion > 3.7 installiert wurde. Das bedeutet allerdings nur, dass die Python-Palette innerhalb Archicads nicht funktioniert. Ein Bugfix ist in Arbeit.)

Begrifflichkeiten …

Paketmanager

Ein Paketmanger (package mangager) ist ein Werkzeug, mit dem Computerprogramme installiert, aktualisiert und entfernt werden können. In diesem Fall sind es Python-Pakete von Drittanbietern. Ein Python-Paket eines Drittanbieters ist jedes Stück Software, das nicht Teil der Python-Standardbibliothek ist.
Der Standardpaketmanager ist pip, der schon lange vor conda existierte und der. Obwohl pip ein gutes Werkzeug ist, werden wir es nicht verwenden, da conda mehr Funktionen enthält und Abhängigkeiten besser auflöst.

Umgebungsmanager

Ein Umgebungsmanager (environment manager) ist ein Werkzeug, welches eine Umgebung (oft auch als virtuelle Umgebung bezeichnet), also einen völlig separaten und isolierten Bereich Ihres Computers mit einer eigenen Installation von Python und eigenen Paketen von Drittanbietern, die unabhängig von jeder anderen Python-Installation auf Ihrem Rechner sind, erstellt.
Das ist nötig, wenn man aus Kompatibilitsgründen mehrere verschiedene Versionen eines Pakets oder von Python selbst benötigt.

Da die Befehle, was Archicad für uns tun soll, über ein JSON-Interface gesendet werden, ließe sich theoretisch jede Sprache verwenden, die Netzwerkbotschaften senden kann. Graphisoft hat aber ein Python-Paket bereitgestellt, welches die JSON-Ebene wegabstrahiert, sodass auch Anfänger schnell Erfolgserlebnisse erleben.

Dazu installieren wir das Paket mittels pip install archicad.

Momentan ist die Python-Extension noch als experimentell eingestuft. Daher muss man sie in Archicad 24 in der Arbeitsumgebung unter Anwender Voreinstellungen > Weitere Optionen > Experimental-Funktionen erst aktivieren. Anschließend lässt sich über Fenster > Paletten die Python-Palette aufrufen.

Um die Skripte zu schreiben und zu bearbeiten, brauchen wir einen Editor. Das ist prinzipiell auch in Notepad möglich, angenehmer ist es aber mit einer IDE wie z.B. Visual Studio Code. In VSC lässt sich der Python-Code auch direkt ausführen – man benötigt also die Python-Palette nicht! Stattdessen reicht ein Klick auf das grüne Dreieck oben rechts, und man sieht den Output in der integrierten Konsole.

Beispiele

Graphisoft hat auf seiner Webseite einige Beispielskripte inklusive Demo-Projekten zusammengetragen. Beides lässt sich nach dem Login mit der GraphisoftID kostenlos herunterladen.

Details

Zum einen gibt es die allgemeine Dokumentation des JSON Interfaces.

Ebenso findet sich eine Dokumentation für den API Python Wrapper.

Mehrere Archicads

Für den den durchaus öfter vorkommenden Fall von mehreren zugleich laufenden Instanzen von Archicad erfolgt ein Zugriff über die JSON-Verbindung natürlich nicht zufällig. Stattdessen sollte man den Zugriffsport spezifizieren:

conn = ACConnection.connect(19723)

Ports werden von 19723 (bis zur 19744?) verteilt. Allerdings kann es natürlich passieren, dass ein anderes Programm bereits einen Port verwendet. Um sicher zu gehen öffnet man im entsprechenden Archicad die Python-Palette, klickt auf das “(i)” und sieht dort, welchen Port Archicad momentan verwendet. alt text


Inhalt