BIM Scripting · Programmatisches BIM

BIM Scripting in einem Gebäudedialekt, nicht in einer Geometrie-API

In BIM Harness wird ein Gebäude als Programm geschrieben: Eine Tür sitzt über eine Wand-id in ihrer Wand, ein Raum ist ein IFC-Space, Dachhöhen berechnet der Kernel. Der KI-Agent baut jedes Modell über diesen Dialekt - und dieselbe Scripting API steht Ihnen im Editor offen.

  • Mehr als hundert Fachverben, von api.wall bis api.autoServices
  • Erst der Probebau: Der Kernel baut und prüft, nichts wird übernommen
  • Benannte, maschinenlesbare Befunde wie clash.hard und door.obstructed
  • Gleiches Skript, gleicher Kernel, gleiches Modell - deterministische Ausführung

Allgemeine CAD-/BIM-API

  1. Koordinaten berechnen
  2. Volumenkörper und Platzierungen erzeugen
  3. Eigenschaften anhängen
  4. Exportieren, öffnen, prüfen

Das Fachwissen trägt der Aufrufer

Harness-Dialekt

  1. Absicht schreiben: Geschosse, Wände, Räume, Öffnungen
  2. Probebau mit benannten Befunden
  3. Gezielte Änderung am Skript
  4. Live-Build → IFC4X3

Das Fachwissen trägt der Kernel

Definition

Was BIM Scripting ist

BIM Scripting heißt, ein Bauwerksinformationsmodell mit Code statt mit Mausklicks zu erstellen oder zu ändern. In BIM Harness wird das Skript in einem Gebäudedialekt geschrieben: Aufrufe wie api.wall, api.space und api.door benennen Bauteile und ihre Beziehungen, und ein parametrischer Kernel macht daraus ein geprüftes Modell.

Programmatisches BIM bedeutet heute meist, eine Desktop-Anwendung oder eine IFC-Bibliothek aus Python zu steuern: Punkte berechnen, Entitäten erzeugen, Platzierungen setzen, Property Sets anhängen. Das ist mächtig - und zugleich sehr tief angesetzt. Das Skript muss wissen, wo jede Öffnung in Weltkoordinaten sitzt, welche Entität welche andere aufnimmt und wie hoch ein First bei gegebener Neigung liegt.

Der Harness-Dialekt verlagert dieses Wissen in den Kernel. Das Skript sagt, was das Gebäude ist - ein Geschoss, eine Wand zwischen zwei Punkten, eine Halle mit diesem Umriss, eine Tür in jener Wand -, und der Kernel ermittelt Geometrie, Anschlüsse, Öffnungen und IFC-Entitäten. Das Ergebnis ist ein Skript, das sich wie eine Beschreibung des Gebäudes liest und nicht wie eine Folge von Geometrieoperationen.

Wie der Dialekt aussieht

Ein vollständiges kleines Gebäude: ein Geschoss, ein Bodenaufbau, vier Wände, eine Trennwand, zwei Räume, zwei Türen, ein Fenster und ein Satteldach. Dieses Fixture läuft in der Testsuite gegen den Kernel.

Gebäudeprogramm
const ground = api.ensureStorey('Erdgeschoss', 0);
const W = 12, D = 8, H = 3.4;
const outline = [[0,0],[W,0],[W,D],[0,D]];
api.floorAssembly({ slabOutline: outline, wallOutline: outline, storey: ground });
const south = api.wall({ start: [0,0], end: [W,0], storey: ground, height: H });
api.wall({ start: [W,0], end: [W,D], storey: ground, height: H });
api.wall({ start: [W,D], end: [0,D], storey: ground, height: H });
api.wall({ start: [0,D], end: [0,0], storey: ground, height: H });
const partition = api.wall({ start: [W/2,0], end: [W/2,D], storey: ground, height: H, thickness: 0.15 });
api.space({ outline: [[0,0],[W/2,0],[W/2,D],[0,D]], storey: ground, height: H, name: 'Halle', type: 'hall' });
api.space({ outline: [[W/2,0],[W,0],[W,D],[W/2,D]], storey: ground, height: H, name: 'Arbeitszimmer', type: 'office' });
api.door({ wall: partition.id, offset: D/2, width: 0.9 });
api.door({ wall: south.id, offset: W/4, width: 1.4 });
api.window({ wall: south.id, offset: 3*W/4, width: 1.2, sill: 0.9 });
const roof = api.roofLevels({ wallHeadM: H, spanM: D, pitchDeg: 35, overhangM: 0.5 });
api.roof({ outline, storey: ground, shape: 'gable', pitch: 35, eavesHeight: roof.eavesHeightM, overhang: 0.5, ridgeAxis: 'x' });
api.gable({ start: [0,0], end: [0,D], storey: ground, baseHeight: H, ridgeHeight: roof.ridgeHeightM });
api.gable({ start: [W,0], end: [W,D], storey: ground, baseHeight: H, ridgeHeight: roof.ridgeHeightM });
Zwanzig Zeilen, keine Eckpunkt-Arrays für Volumenkörper, keine Platzierungsmatrizen. Türen und Fenster verweisen auf eine Wand-id und einen Versatz entlang der Wand; Dachhöhen kommen aus api.roofLevels statt aus Kopfrechnen.

Sechs Entwurfsentscheidungen hinter dem Dialekt

Der Dialekt ist aus dem entstanden, was schiefgeht, wenn ein Sprachmodell - oder ein müder Mensch - ein Gebäude schreibt. Jede Entscheidung beseitigt eine ganze Klasse von Fehlern.

Fachverben statt Geometrie-Primitive

api.wall, api.stair, api.curtainWall, api.riserShaft, api.plantRoom: mehr als hundert Verben, die Bauteile benennen. Der Kernel baut mehrschichtige Wände, Eckverbindungen und Öffnungen; das Skript setzt nie einen Volumenkörper zusammen.

Beziehungen über ids

Eine Tür sitzt in partition.id mit einem Versatz entlang dieser Wand - eine Beziehung, keine Koordinate. Wird die Wand verschoben oder verlängert, bleibt die Tür darin, weil sie nie eine frei schwebende Box war.

Ein Raum ist ein IFC-Space

api.space erzeugt einen echten Raum mit Namen und Typ. Ohne ihn lässt sich nichts belüften, vermessen oder benennen - deshalb sind Räume im Dialekt vollwertige Objekte, statt nur implizit aus Wänden zu folgen.

Der Kernel rechnet

api.roofLevels liefert Traufen- und Firsthöhe für Wandkrone, Spannweite, Neigung und Überstand. Das Skript gibt diese Werte an api.roof und api.gable weiter, statt sie selbst zu berechnen.

Geschossbezogene Koordinaten

Alle Geschosse teilen dieselben Grundrisskoordinaten, Höhen werden ab dem Geschoss gemessen. Ein Skript kann einen Grundriss im nächsten Geschoss wiederholen, ohne Höhenkoten von Hand zu addieren - ein Fehler, der sonst eine Wand ein Geschoss zu hoch setzt.

Deterministische Ausführung

Dasselbe Skript auf demselben Kernel baut dasselbe Modell. TGA-Trassierung und Kollisionsauflösung erledigen deterministische Resolver - ein Skript ist also ein reproduzierbares Artefakt, das Sie vergleichen, prüfen und erneut ausführen können.

Probebau, Befunde, gezielte Änderung, Live-Build

Ein Skript läuft nicht blind. Die folgende Schleife ist die Arbeitsweise des KI-Agenten - und dieselbe Schleife steht einem Menschen im Editor zur Verfügung.

  1. 1

    Probebau

    Der Kernel baut das Skript und prüft es, ins Modell wird aber nichts übernommen. Eine verworfene Idee kostet Sekunden und lässt das Projekt unberührt.

  2. 2

    Befunde lesen

    Der Prüfer liefert benannte Befunde, getrennt in Autorenbefunde - zu behebende Entwurfsfehler - und Engine-Befunde. Beispiele: clash.hard, door.obstructed, stair.throughFabric, room.accessEnvelope.

  3. 3

    Das Skript ändern, nicht alles

    Das Skript wird zurückgelesen und gezielt geändert: ein Giebel, ein Türversatz. Die Befunde fließen in einen Reparaturplan für die nächste Runde statt in eine komplette Neufassung.

  4. 4

    Live-Build

    Ist der Probebau sauber genug, läuft dasselbe Skript als Live-Build. Das Modell wird zu einem nach IFC4X3 exportierbaren Projekt, das Sie von Hand oder per Skript weiterbearbeiten.

api.gable: the roof given does not cover this wall … It was not built.

Eine echte Verweigerung aus einem Produktionslauf am 21. September 2026. Das Modell las sie und schrieb das Skript neu - kein halb gebauter Giebel, kein stiller Fehler.

Allgemeine CAD-/BIM-API über Python vs. Harness-Dialekt

Beides sind legitime Wege, Modelle aus Code zu bauen. Sie liegen auf unterschiedlichen Abstraktionsebenen - und das verschiebt, wer was wissen muss.

Allgemeine CAD-/BIM-API über PythonHarness-Gebäudedialekt
AbstraktionsebeneEntitäten, Platzierungen, Geometrierepräsentationen, Property SetsBauteile und Beziehungen: Geschoss, Wand, Raum, Tür, Dach, Kanal, Installationsschacht
Was der Aufrufer wissen mussKoordinatensysteme, Einbauregeln, wie Öffnungen ausgespart werden, SchemadetailsDas Gebäude: Maße, Räume, zu welcher Wand eine Tür gehört
Abgeleitete WerteVom Skript berechnet (Dachhöhen, Öffnungspositionen)Vom Kernel berechnet, z. B. api.roofLevels für Traufe und First
ValidierungMeist nach dem Export, in einem separaten Prüfwerkzeug oder per AugenscheinProbebau mit Prüfer, bevor irgendetwas übernommen wird
Wie ein Fehler aussiehtEine Exception - oder ein Modell, das sich exportieren lässt, aber falsch istEin benannter Befund oder eine ausdrückliche Verweigerung („It was not built“)
Einen Entwurf ändernSkript neu ausführen oder Geometrie und Beziehungen von Hand bearbeitenGezielte Änderung am Skript; der Kernel regeneriert, was davon abhängt
ErgebnisWas auch immer das Skript geschrieben hatEin parametrisches Modell; IFC4X3 wird beim Export deterministisch erzeugt

Eine allgemeine API bietet maximale Freiheit und ist für viele Aufgaben das richtige Werkzeug. Der Dialekt tauscht einen Teil dieser Freiheit gegen ein Skript, das ein Sprachmodell zuverlässig schreiben und ein Mensch auf einen Blick lesen kann.

Eine API

Was die KI kann, können Sie auch

Die Scripting API in BIM Harness ist dieselbe API, mit der der KI-Agent Modelle baut. Alles, was der Agent über den Dialekt an einem Modell tun kann, kann ein Mensch per Skript im Editor tun.

Es gibt keine zweite, abgespeckte Schnittstelle für Menschen. Wenn die KI ein Krankenhaus plant, schreibt sie Aufrufe wie api.grid, api.column, api.slab, api.stairWell, api.lift, api.duct, api.pipe, api.cableTray und api.autoServices. Ein Computational Designer kann dieselben Aufrufe für Stapeländerungen schreiben - alle Fenster einer Fassade umtypisieren, ein Geschoss ergänzen, Stützen auf ein neues Raster setzen.

Die API-Referenz wird auf Abruf bereitgestellt: Der Agent fragt die Signaturen der Verben ab, die er braucht, statt einen riesigen Prompt zu bekommen, und ein Mensch sieht dieselben Signaturen im Editor. Weil der Agent modellunabhängig ist - welches Sprachmodell antwortet, ist eine Zeile Konfiguration -, ist der Dialekt der stabile Teil. Bessere Modelle machen die Engine leistungsfähiger; sie ersetzen sie nicht.

Was der Kernel unter den Skripten leistet

100+

Verben im Gebäudedialekt

~7 s

für den Aufbau eines Einfamilienhauses aus seinem Skript im Browser

< 60 s

für den Aufbau eines Krankenhauses mit rund 20.000 Elementen samt TGA auf dem Kernel

4.500+

automatisierte Tests sichern jedes Release ab

In einem echten Produktionslauf eines Einfamilienhauses baute der Kernel das Modell in rund 7 Sekunden und verlegte die TGA in rund 6. Fast die gesamte Laufzeit ist das Nachdenken des Sprachmodells: Der Kernel ist der schnelle, günstige Teil.

Der Agent schreibt das Skript, Sie sehen das Modell

BIM-Harness-Editor mit dem Panel des KI-Assistenten neben einem generierten Gebäudemodell
Das Panel des KI-Assistenten neben einem generierten Gebäude. Jedes Modell, das der Agent baut, ist ein Skript im Dialekt, das der Kernel baut und prüft. (Editor-Oberfläche auf Tschechisch.)
Verfügbarkeit

Wo die Scripting API heute läuft

Die Scripting API ist Skripting im Editor: Sie schreiben und starten Skripte in BIM Harness im Browser, gegen das geöffnete Projekt. Sie ist ab dem Studio-Tarif enthalten. Es ist keine öffentliche REST API, kein SDK und kein installierbares Paket, und diese Seite verspricht auch keines.

Was den Editor verlässt, sind offene Daten: IFC4X3-Export jederzeit, Pläne als PDF, DWG und DXF, Mengen als XLSX oder CSV. Mit einem Skript bauen und ändern Sie das Modell; über IFC gelangt es zu anderen Werkzeugen.

Häufige Fragen

Was ist BIM Scripting?

BIM Scripting heißt, ein Bauwerksinformationsmodell mit Code statt von Hand zu erstellen oder zu ändern. Es dient für Stapeländerungen, wiederkehrende Grundrisse, regelbasierten Entwurf und Automatisierung. In BIM Harness werden Skripte in einem Gebäudedialekt geschrieben - Aufrufe wie api.wall, api.space und api.door -, den ein parametrischer Kernel baut, prüft und nach IFC4X3 exportiert.

Hat BIM Harness eine BIM API?

Ja, als Skripting im Editor. Mit der Scripting API führen Sie Skripte gegen das geöffnete Projekt im Browser aus - mit derselben API, mit der der KI-Agent Modelle baut. Sie ist ab dem Studio-Tarif verfügbar. Eine öffentliche REST API, ein SDK oder ein installierbares Paket gibt es nicht; Modelle verlassen den Editor als IFC4X3, Pläne und Listen.

Worin unterscheidet sich der Dialekt vom Skripten einer CAD-API in Python?

Eine allgemeine API bietet Entitäten, Platzierungen und Geometrie an, das Skript muss also Koordinaten, Einbauregeln und abgeleitete Werte kennen. Der Harness-Dialekt bietet Bauteile und Beziehungen an: Eine Tür wird über die id und einen Versatz in eine Wand gesetzt, ein Raum ist ein IFC-Space, Dachhöhen kommen aus api.roofLevels. Geometrie und Prüfungen liefert der Kernel.

Was passiert, wenn ein Skript falsch ist?

Führen Sie es zuerst als Probebau aus. Der Kernel baut und prüft es, ohne etwas zu übernehmen, und liefert benannte Befunde wie clash.hard, door.obstructed oder stair.throughFabric, getrennt in Autoren- und Engine-Befunde. Manche Aufrufe verweigern direkt - ein Giebel, den sein Dach nicht überdeckt, wird gemeldet und nicht gebaut. Danach korrigieren Sie das Skript gezielt.

Ist das Ergebnis eines Skripts deterministisch?

Die Ausführung ist es. Dasselbe Skript auf demselben Kernel baut dasselbe Modell, und TGA-Trassierung und Kollisionsauflösung übernehmen deterministische Resolver statt eines Sprachmodells. Was ein Sprachmodell schreibt, kann von Lauf zu Lauf variieren; sobald es ein Skript ist, ist der Aufbau reproduzierbar - deshalb lassen sich Skripte prüfen und vergleichen.

Kann ich ein von der KI generiertes Modell mit eigenem Skript bearbeiten?

Ja. Der KI-Agent arbeitet über denselben Dialekt, sein Modell besteht also aus denselben Elementen, die Ihr Skript ansprechen kann. Sie können Elemente per Skript umtypisieren, ein Geschoss ergänzen oder ein Raster ändern, im vollständigen Browser-Editor von Hand bearbeiten oder die KI in einem Satz um die nächste Änderung bitten. Alle drei Wege wirken auf ein parametrisches Modell.

Gebäude schreiben, nicht Geometrie

Öffnen Sie ein Modell, das der Agent geskriptet hat, laden Sie sein IFC herunter und sehen Sie, was ein Gebäudedialekt erzeugt. Skripting im Editor ist ab dem Studio-Tarif enthalten.