Formalna aktualizacja danych rejestrowych w KRS jest obecnie procedowana.
Formalna aktualizacja danych rejestrowych w KRS jest obecnie procedowana.

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.
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.
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.
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.
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.
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 statsRaport ktory wczesniej wymagal godziny pracy BIM managera – teraz generuje sie automatycznie kazdej nocy.
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.
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.
Python Bridge jest narzedziem dla trzech grup, ktore dotychczas dzialaly oddzielnie.
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.
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