Link

Python Verbindung

Seit Version 24 ist sind ausgewählte Funktionen über ein JSON-Interface in Archicad verfügbar. Darüber lassen sich unter anderem mit der Beginner-freundlichen Programmiersprache Python Befehlsroutinen automatisieren. Das stellt wohlgemerkt keinen Ersatz für GDL dar und umgekehrt.

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.)
Alternativ kann man mit pyenv arbeiten.

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.

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 zu Erfolgserlebnissen kommen.

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 selbst hat auf seiner Webseite einige wenige Beispielskripte inklusive Demo-Projekten zusammengetragen. Beides lässt sich nach dem Login mit der GraphisoftID kostenlos herunterladen.

Mehr Beispiele und Erläuterungen finden sich in diesem GitHub Repository von mir.

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 19743) 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