BIMvision Python API Bridge – Od przegladarki IFC do platformy automatyzacji

BIMvision przestaje byc tylko przegladarka

Przez lata BIMvision byl dla tysiecy uzytkownikow przede wszystkim narzedziem do przegladania i analizy modeli IFC. Bezplatny, lekki, z bogatym ekosystemem pluginow – naturalny wybor na polskich i europejskich budowach. Ale od marca 2026 roku cos sie zmienilo zasadniczo.

BIMvision Python API Bridge to plugin umozliwiajacy seamless komunikacje miedzy zewnetrznymi skryptami Python a platforma BIMvision przez prosty HTTP REST API. Dzieki temu BIMvision staje sie programowalny.

To nie jest drobna aktualizacja. To zmiana klasy produktu – z narzedzia do narzedzia-platformy. I w tej zmianie kryje sie ogromny potencjal dla kazdego, kto pracuje z danymi BIM powazenie.

Na czym polega mechanizm

Plugin wprowadza prosty, ale potezny sposob sterowania BIMvision przy uzyciu Pythona i REST API, umozliwiajac deweloperom, inzynierom BIM i zespolom technicznym automatyzacje powtarzalnych zadan, integracje BIMvision z innymi systemami oraz tworzenie niestandardowych narzedzi dopasowanych do ich przepływow pracy.

Architektura jest celowo prosta: po uruchomieniu pluginu BIMvision wystawia lokalny serwer HTTP na porcie 5000. Zewnetrzny skrypt Python wysyla zadania REST – i BIMvision reaguje: zaznacza elementy, zwraca wlasciwosci, zmienia widok, otwiera pliki. Skrypt moze dzialac lokalnie, z serwera, z Jupyter Notebook, z pipeline’u CI/CD – dosłownie skakolwiek.

import requests

BASE = "http://localhost:5000"

# Pobierz liste wszystkich elementow w modelu

elements = requests.get(f"{BASE}/elements").json()

# Zaznacz konkretny element po GlobalId

requests.post(f"{BASE}/select", json={"globalId": "3Kx9Az7Bm..."})

# Pobierz wlasciwosci zaznaczonego elementu

props = requests.get(f"{BASE}/element/properties").json()

print(props["Pset_WallCommon"]["IsExternal"])

Nie trzeba pisac pluginu w C++. Nie trzeba znac SDK. Wystarczy Python i znajomosc REST.

Szesc kierunkow zastosowan

1. Automatyczna walidacja modeli IFC

To najbardziej oczywiste i natychmiast wartosciowe zastosowanie. Zamiast recznie przegladac model w poszukiwaniu brakujacych atrybutow, skrypt Python iteruje po wszystkich elementach przez API, sprawdza wymagane wlasciwosci i generuje raport.

braki = []

for el in requests.get(f"{BASE}/elements?ifcClass=IfcWall").json():

    props = requests.get(f"{BASE}/element/{el['id']}/properties").json()

    if "Width" not in props.get("Pset_WallCommon", {}):

        braki.append({

            "globalId": el["globalId"],

            "poziom":   el["storey"],

            "problem":  "brak grubosci sciany"

        })

# Zaznacz wszystkie wadliwe elementy w modelu

requests.post(f"{BASE}/select/multiple",

              json={"globalIds": [b["globalId"] for b in braki]})

Efekt: model podswietla elementy z brakami – projektant widzi je natychmiast w kontekscie 3D, nie w suchej tabeli. To jest IDS Checker w logice wlasnej – ale napisany przez uzytkownika, dostosowany do jego standardow, bez ograniczen gotowego produktu.

2. Automatyczne generowanie przedmiarow i kosztorysow

Tu wchodzi naturalny pomost do BIMestiMate. Skrypt Python odpytuje BIMvision o geometrie i wlasciwosci elementow, przetwarza je i przekazuje do systemu kosztorysowego – bez recznego eksportu, bez mapowania w excelu.

slabs = requests.get(f"{BASE}/elements?ifcClass=IfcSlab").json()

pozycje = []

for slab in slabs:

    geo   = requests.get(f"{BASE}/element/{slab['id']}/geometry").json()

    props = requests.get(f"{BASE}/element/{slab['id']}/properties").json()

    pozycje.append({

        "typ":        props.get("PredefinedType", "FLOOR"),

        "material":   props.get("IfcMaterial", {}).get("name", "?"),

        "grubosc_m":  props.get("Pset_SlabCommon", {}).get("Width", 0),

        "pole_m2":    geo.get("area", 0),

        "objetosc_m3":geo.get("volume", 0),

        "kondygnacja":slab.get("storey"),

    })

# Wyslij do BIMestiMate API

requests.post("https://api.bimestimate.pl/v1/takeoff",

              json={"projekt_id": "PRJ-2026-041", "elementy": pozycje})

Bez Python Bridge takie polaczenie wymagalo eksportu do IFC, importu do systemu kosztorysowego, recznego mapowania atrybutow. Teraz jest jednym skryptem.

3. Integracja z AI i duzymi modelami jezykowymi

To jest kierunek ktory otwiera zupelnie nowe mozliwosci. Python Bridge umozliwia budowe asystentow AI ktorzy widza model BIM i odpowiadaja na pytania o konkretne elementy.

import anthropic

def zapytaj_o_model(pytanie: str) -> str:

    elementy   = requests.get(f"{BASE}/elements/summary").json()

    zaznaczony = requests.get(f"{BASE}/selection/properties").json()

    klient = anthropic.Anthropic()

    odp = klient.messages.create(

        model="claude-sonnet-4-20250514",

        max_tokens=1000,

        system=f"""Jestes asystentem analizy modeli BIM.

        Model zawiera: {elementy['summary']}.

        Zaznaczony element: {zaznaczony}.""",

        messages=[{"role": "user", "content": pytanie}]

    )

    return odp.content[0].text

print(zapytaj_o_model(

    "Czy ta sciana spelnia wymogi izolacyjnosci termicznej dla strefy III?"

))

Efekt: asystent AI odpowiada na pytania kontekstualizowane konkretnym elementem ktory uzytkownik wlasnie oglada w modelu. Nie ogolnie – o tym konkretnym elemencie, z jego wymiarami, materialem i lokalizacja. To jest wizja AI-assisted BIM review ktora nagle mozna zbudowac w kilkaset linii Pythona.

4. Automatyzacja raportowania i dokumentacji

Regularnie produkowane raporty – zestawienia elementow, listy kolizji, statusy przegladow – mozna w pelni zautomatyzowac. Skrypt uruchamia sie wedlug harmonogramu (cron, GitHub Actions, Airflow), otwiera model przez API, generuje raport i wysyla go mailem lub do systemu CDE.

def raport_tygodniowy(plik_ifc: str):

    requests.post(f"{BASE}/model/open", json={"path": plik_ifc})

    stats = {

        "elementy_total":       len(requests.get(f"{BASE}/elements").json()),

        "sciany_bez_materialu": waliduj_materialy("IfcWall"),

        "stropy_bez_grubosci":  waliduj_grubosci("IfcSlab"),

        "kolizje":              len(requests.get(f"{BASE}/clashes").json()),

    }

    # Zapisz snapshot widoku 3D

    requests.post(f"{BASE}/view/screenshot",

                  json={"path": "/tmp/snapshot.png", "width": 1920})

    return stats

Raport ktory wczesniej wymagal godziny pracy BIM managera – teraz generuje sie automatycznie kazdej nocy.

5. Integracja z GIS i danymi przestrzennymi

W kontekscie projektu SemanticInfra Python Bridge staje sie mostem miedzy BIMvision a warstwa kanoniczna CIO. Skrypt odpytuje model o elementy, pobiera ich geometrie i wlasciwosci, a nastepnie rejestruje je w rejestrze CIO lub porownuje z danymi GIS.

import geopandas as gpd

from shapely.geometry import box

mosty_bim = requests.get(f"{BASE}/elements?ifcClass=IfcBridge").json()

mosty_gis = gpd.read_file("bdot10k_mosty.gpkg")

for most in mosty_bim:

    geo = requests.get(f"{BASE}/element/{most['id']}/geometry").json()

    bbox = box(geo["bbox"]["minX"], geo["bbox"]["minY"],

               geo["bbox"]["maxX"], geo["bbox"]["maxY"])

    kandydaci = mosty_gis[mosty_gis.geometry.intersects(bbox)]

    if len(kandydaci) == 1:

        requests.post("https://api.semanticinfra.eu/cio/register", json={

            "bim_globalId": most["globalId"],

            "gis_featureId": kandydaci.iloc[0]["feature_id"],

            "confidence": 0.94

        })

To jest dokladnie warstwa entity resolution opisana w projekcie STEP – i Python Bridge jest jej naturalnym punktem wejscia po stronie BIM.

6. Testowanie i CI/CD dla modeli BIM

Najtrudniej dostepny, ale bardzo wartosciowy kierunek: automatyczne testy jakosci modelu jako czesc pipeline’u dostarczania dokumentacji projektowej. Kazdy commit nowej wersji IFC wyzwala test – model jest otwierany przez API, walidowany wedlug zestawu regul, wynik trafia do systemu kontroli wersji.

# test_model_quality.py - uruchamiany przez GitHub Actions

import pytest

def test_wszystkie_sciany_maja_material():

    sciany = requests.get(f"{BASE}/elements?ifcClass=IfcWall").json()

    bez_mat = [s for s in sciany

               if not requests.get(f"{BASE}/element/{s['id']}/material").json()]

    assert len(bez_mat) == 0, f"{len(bez_mat)} scian bez materialu"

def test_brak_elementow_poza_kondygnacjami():

    bez_kond = requests.get(f"{BASE}/elements?storey=null").json()

    assert len(bez_kond) == 0, \

        f"{len(bez_kond)} elementow poza kondygnacjami"

Model BIM traktowany jak kod – z testami, z CI/CD, z automatycznym odrzuceniem jesli nie spelnia wymogowi jakosciowych. To jest dojrzalosc cyfrowa procesu projektowego.

Dla kogo to jest

Python Bridge jest narzedziem dla trzech grup, ktore dotychczas dzialaly oddzielnie.

  • Inzynierowie BIM – ktorzy znaja model, wiedza co chca sprawdzic, ale musieli robic to recznie. Teraz moga opisac swoja wiedze jako skrypt i uruchamiac go automatycznie. Bez programowania w C++, bez SDK, bez walki z API wtyczek.
  • Programisci i integratorzy – ktorzy buduja systemy wokol BIM: kosztorysy, CAFM, GIS, portale inwestorskie. Teraz maja standardowy HTTP endpoint do ktorego moga pisac bez potrzeby budowania wtyczki.
  • Naukowcy i badacze – pracujacy z danymi IFC: machine learning na modelach budowlanych, analiza grafow elementow, semantic enrichment. Python Bridge daje dostep do danych modelu bez parsowania pliku IFC od zera.

Ograniczenia ktore warto znac

Python Bridge dziala lokalnie – to jest zarowno zaleta (bezpieczenstwo danych, brak chmury) jak i ograniczenie (skrypt musi dzialac na maszynie z uruchomionym BIMvision, mozliwa tylko jedna instancja). Scenariusze serwerowe bez GUI wymagaja dodatkowej konfiguracji.

REST API eksponuje dane ktore BIMvision sam przetwarza – jesli model IFC ma niespojnosci lub braki, API zwroci te niespojnosci. Garbage in, garbage out – Python Bridge nie naprawia zlych modeli, tylko ulatwia ich programowe przetwarzanie.

API jest w aktywnym rozwoju (BIMvision regularnie podnosi wersje API) – skrypty pisane dzis moga wymagac aktualizacji. Warto budowac z warstwa abstrakcji.

Konkluzja

Python Bridge to jeden z tych pluginow ktory zmienia sposob myslenia o produkcie, nie tylko jego funkcjonalnosci. BIMvision przestaje byc narzedziem do ogladania modeli – staje sie programowalnym wezlem w cyfrowym procesie inwestycyjnym.

Dla branzy budowlanej ktora desperacko potrzebuje automatyzacji i integracji miedzy systemami – i ktora ma w Polsce dziesiatki tysiecy specjalistow znajacych Python z innych dziedzin – to jest naturalne wejscie do swiata BIM jako platformy.

Wszystkie scenariusze opisane w tym artykule – walidacja IDS, przedmiar, asystent AI, raportowanie, integracja GIS, CI/CD dla modeli – sa dzis mozliwe do zbudowania. Nie jako projekt badawczy, ale jako narzedzie produkcyjne, w rozsdanym czasie, przez inzyniera ktory zna Pythona.

To jest rzadki moment kiedy nowe narzedzie naprawde otwiera drzwi ktorych wczesniej nie bylo.

Andrzej Tomana jest prezesem Datacomp IT, tworca BIMestiMate i BIMvision oraz autorem pierwszej polskiej monografii o BIM.

Kontakt: andrzej.tomana@datacomp.pl