BIMvision Python API Bridge – jak BIMvision staje się centrum automatyzacji procesów BIM

BIMvision zyskuje nową rolę dzięki Python API Bridge, które udostępnia lokalne REST API do sterowania modelami IFC z poziomu skryptów Python. Rozwiązanie umożliwia walidację modeli, kosztorysowanie, automatyczne raportowanie, integrację z AI, GIS i CI/CD, a także budowę własnych workflow BIM bez tworzenia pluginów w C++.

BIMvision wchodzi w nową rolę

Przez wiele lat BIMvision był kojarzony głównie jako szybka i wygodna przeglądarka modeli IFC. Darmowy dostęp, niewielkie wymagania sprzętowe i rozbudowany system pluginów sprawiły, że rozwiązanie zdobyło popularność wśród projektantów, wykonawców i BIM managerów.

Wraz z premierą BIMvision Python API Bridge platforma zyskuje jednak zupełnie nowy wymiar. Plugin pozwala komunikować się z BIMvision z poziomu zewnętrznych skryptów Python poprzez REST API, dzięki czemu aplikacja może stać się częścią większych procesów automatyzacji oraz integracji danych.

To już nie tylko środowisko do przeglądania modeli, ale także narzędzie, które można programowo kontrolować i włączać do własnych workflow BIM.

Jak działa Python API Bridge

Mechanizm działania został zaprojektowany w prosty i praktyczny sposób. Po uruchomieniu pluginu BIMvision udostępnia lokalny serwer HTTP działający na porcie 5000. Zewnętrzne aplikacje lub skrypty Python mogą wysyłać zapytania REST API odpowiedzialne za obsługę modeli, zaznaczanie elementów, pobieranie właściwości czy sterowanie widokiem.

Dzięki temu BIMvision może współpracować z:

  • aplikacjami desktopowymi,
  • notebookami Jupyter,
  • pipeline’ami CI/CD,
  • systemami kosztorysowymi,
  • rozwiązaniami AI,
  • platformami GIS oraz CDE.
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"])

Najważniejsze jest to, że integracja nie wymaga tworzenia pluginów w C++ ani pracy bezpośrednio z SDK. Wystarczy znajomość Pythona oraz podstaw komunikacji REST API.


Przykładowe zastosowania Python Bridge

1. Walidacja modeli IFC

Jednym z najbardziej praktycznych zastosowań jest automatyczna kontrola jakości modeli IFC. Zamiast ręcznej analizy modelu użytkownik może przygotować własny skrypt sprawdzający kompletność parametrów lub zgodność z wymaganiami projektu.

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]})

Takie podejście pozwala szybko lokalizować błędy bez konieczności tworzenia dedykowanych rozszerzeń.


2. Integracja z kosztorysowaniem i przedmiarami

Python Bridge może również pełnić rolę warstwy integracyjnej pomiędzy modelem BIM a systemami kosztorysowymi.

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

Dzięki temu można ograniczyć liczbę ręcznych eksportów oraz uprościć przepływ danych pomiędzy środowiskami BIM i kosztorysowymi.


3. Współpraca z AI i modelami językowymi

Interesującym kierunkiem rozwoju jest wykorzystanie API do współpracy z rozwiązaniami AI. Python Bridge pozwala dostarczać modelom językowym informacje o aktualnie analizowanych elementach BIM.

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?"

))

Takie rozwiązanie może stanowić podstawę do budowy inteligentnych asystentów wspierających analizę modeli BIM.


4. Automatyczne raportowanie

REST API pozwala również automatyzować generowanie raportów oraz dokumentacji projektowej.

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

Raporty mogą być uruchamiane automatycznie według harmonogramu i publikowane w systemach CDE lub wysyłane do zespołów projektowych.


5. Integracja BIM i GIS

Python Bridge dobrze wpisuje się także w scenariusze łączące dane BIM oraz 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

        })

Takie podejście umożliwia synchronizację danych infrastrukturalnych oraz budowę bardziej zaawansowanych środowisk cyfrowych.


6. Testowanie modeli BIM w CI/CD

Coraz częściej modele BIM traktowane są podobnie jak kod źródłowy — podlegają testom jakości oraz automatycznej walidacji.

# 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"

Dzięki integracji z pipeline’ami CI/CD możliwe staje się automatyczne kontrolowanie jakości modeli przed publikacją kolejnych wersji dokumentacji.


Kto może skorzystać z Python Bridge

Nowe API może być szczególnie interesujące dla:

  • BIM managerów automatyzujących procesy kontroli modeli,
  • integratorów budujących rozwiązania wokół BIM,
  • zespołów kosztorysowych,
  • programistów pracujących z IFC,
  • badaczy analizujących dane budowlane,
  • firm rozwijających własne workflow cyfrowe.

O czym warto pamiętać

Python Bridge działa lokalnie, co zwiększa bezpieczeństwo danych i ogranicza konieczność korzystania z usług chmurowych. Jednocześnie oznacza to, że środowisko BIMvision musi być uruchomione na komputerze wykonującym integrację.

Warto również pamiętać, że API odzwierciedla strukturę danych zawartą w modelu IFC. Jakość wyników zależy więc bezpośrednio od jakości samego modelu.

Ponieważ platforma jest rozwijana aktywnie, dobrze projektować własne integracje z zachowaniem warstwy abstrakcji umożliwiającej łatwiejsze aktualizacje.


Podsumowanie

BIMvision Python API Bridge pokazuje, że nowoczesne środowisko BIM może być czymś więcej niż tylko przeglądarką modeli IFC. Dzięki otwarciu na REST API oraz integrację z Pythonem BIMvision może stać się centralnym elementem automatyzacji procesów projektowych, kosztorysowych i analitycznych.

Możliwość budowy własnych narzędzi, automatycznej walidacji modeli, współpracy z AI czy integracji z GIS sprawia, że rozwiązanie otwiera nowe możliwości zarówno dla zespołów technicznych, jak i organizacji rozwijających cyfrowe procesy inwestycyjne.

To kierunek, który może znacząco przyspieszyć rozwój praktycznych zastosowań BIM w codziennej pracy projektowej.

dr inż. Andrzej Tomana
dr inż. Andrzej Tomana

Urodzony w 1948 roku w Krakowie, jest absolwentem pierwszego kursu Teorii Konstrukcji na Wydziale Lądowym w Politechnice Krakowskiej, gdzie podjął pracę po ukończeniu studiów w 1972 roku. W roku 1981 obronił pracę doktorską na temat „Zastosowanie ścisłych elementów skończonych do optymalnego kształtowania prętowych układów drgających”. W czasie pracy w Politechnice Krakowskiej do 1994 roku uczestniczył w realizacji kilku projektów naukowo-badawczych, wśród nich można wyróżnić prace z zakresu analizy mechanicznych skutków zwarć w rozdzielniach najwyższych napięć (praca nagrodzona przez MNiSZW) oraz opracował ponad 20 publikacji naukowych z zakresu zastosowania Metody Elementów Skończonych w budownictwie oraz zastosowania Sztucznych Sieci Neuronowych do szacowania wartości nieruchomości. Wśród prac inżynierskich można wymienić m.in. analizę wpływów sejsmicznych na obudowę metra w Algerze, analizę hal wystawowych w Lipsku i kilkanaście projektów korpusów wanien elektrolitycznych z żywico-betonu (obciążenia statyczne, dynamiczne, efekty cieplne).
W 1987 roku założył firmę Datacomp, którą kieruje do dzisiaj. W firmie kieruje projektami informatycznymi związanymi z oprogramowaniem inżynierskim do analizy i wymiarowania oraz kosztorysowania. Obecnie prowadzi projekty związane z technologią BIM – BIMVision i BIMestiMate, które są oferowane na rynku globalnym. Jest autorem kilkunastu publikacji z tego zakresu, a przede wzystkim pierwszej polskiej monografii „BIM – innowacyjna technologia w budownictwie”. Jest członkiem Rady Koordynacyjnej Biur Projektów Izby Projektowania Budowlanego, PZITB, Akademii Inżynierskiej, Stowarzyszenia Klaster BIM, członkiem Biulding Smart Polska. Był kierownikiem projektu finansowanego ze środków UE „Opracowanie prototypu platformy systemowej do zarzadzania inwestycjami budowlanymi z wykorzystaniem technologii BIM” i uczestniczył w kilku projektach finansowanych z UE m.in. UrbanBIM, BIMhealthy. Obecnie w firmie jest kierownikiem zespołu badawczo-rozwojowego. Z publikacjami można zapoznać się na stronie www.bim4u.eu

Artykuły: 54