Torna al blog BIM e IFC
Correggere le esportazioni · 2026-06-03 · 8 min
Perché i GUID IFC cambiano a ogni esportazione (e come renderli stabili)
Ri-esporti lo stesso modello, lo invii al tuo coordinatore, e all'improvviso ogni commento BCF, ogni interferenza e ogni tag FM punta all'elemento sbagliato — o a niente. La causa: i tuoi GlobalId IFC sono stati rigenerati. Ecco perché succede e come bloccarli.
Perché i GUID IFC cambiano a ogni esportazione (e come renderli stabili) — IFC Viewer Online article cover
Esistono due problemi di GUID completamente diversi in IFC, e vengono confusi di continuo. Il primo sono i GUID duplicati — due elementi che condividono lo stesso GlobalId in un unico file. Il secondo, trattato qui, è l'instabilità dei GUID: lo stesso elemento che riceve un GlobalId diverso ogni volta che ri-esporti il modello. Entrambi rompono il coordinamento, ma il secondo è più subdolo, perché ogni singolo file appare perfettamente valido.
Se coordini le interferenze, gestisci flussi di lavoro BCF o affidi un modello al facility management, avere GlobalId stabili non è opzionale. Sono l'unica cosa che permette a uno strumento di dire 'questa parete nella revisione 4 è la stessa parete della revisione 2'. Quando derivano, ogni riferimento che puntava al vecchio ID resta silenziosamente sospeso nel vuoto.
- 22 — caratteri in un GUID IFC
- 3 — valore massimo del primo carattere
- 0 byte — caricato per la validazione
- 100% — eseguito nel browser
Cosa dovrebbe essere un GlobalId stabile
Ogni entità IFC che eredita da IfcRoot porta un GlobalId: una stringa di 22 caratteri che usa l'alfabeto base64 personalizzato di IFC (0–9, A–Z, a–z, _, $). La specifica è esplicita nel richiedere che sia univoco a livello globale e persistente — lo stesso elemento logico mantiene lo stesso GlobalId tra le revisioni e tra i passaggi da un software all'altro. Questa persistenza è ciò che rende possibili il change tracking, il BCF e i registri asset.
// Revision 2
#1402 = IFCWALL('3LYa_FRDj3zhLfyYoQv6Jr', $, 'Exterior Wall - 300mm', ...);
// Revision 3 — same wall, regenerated GlobalId. Every reference to the old ID now dangles.
#1402 = IFCWALL('2hQ8pZ_a1ABxKm9dELc0Ru', $, 'Exterior Wall - 300mm', ...);
Perché Revit rigenera i GUID
La causa di fondo è che non esiste sempre una mappatura pulita uno a uno tra un elemento di Revit e l'entità IFC in cui viene esportato. Un singolo elemento di Revit può suddividersi in più entità IFC (una ringhiera diventa un corrimano più balaustri più un mancorrente), e quando manca una relazione 1:1 stabile, l'esportatore non ha un ancoraggio affidabile da cui derivare un GlobalId coerente. Quindi ne genera uno nuovo.
Storicamente il parametro GUID IFC in Revit era di sola lettura, il che significava che i team non potevano fissarlo nemmeno volendo. Le versioni più recenti dell'esportatore lo hanno reso leggibile e scrivibile, così il valore può essere memorizzato e riutilizzato — ma devi comunque attivare l'impostazione giusta, perché il comportamento predefinito in alcune configurazioni è rigenerarlo.
- Suddivisione in sotto-elementi: un elemento host che esporta in più entità IFC (ringhiere, scale, facciate continue, coperture con fasce) è la classica fonte di deriva.
- Ri-esportazione con comportamento 'genera nuovo': alcune configurazioni di esportazione ricreano i GUID ogni volta invece di riutilizzare il valore memorizzato.
- Il copia-incolla e le modifiche di gruppo nel software di authoring possono azzerare l'ID interno da cui il GUID viene derivato.
- Passare attraverso uno strumento che non conserva i GlobalId (aprire e risalvare in un visualizzatore o un convertitore) li riscrive.
L'altra metà del problema: intervallo di GUID non valido
C'è un problema correlato in cui incappano costantemente gli script di esportazione scritti a mano. Il primo carattere di un GlobalId IFC valido può codificare solo i valori 0–3 nell'alfabeto a 6 bit, perché un UUID a 128 bit compresso in 22 caratteri base64 lascia al primo sestetto solo due bit significativi. Gli script che prendono un semplice UUID di 32 caratteri esadecimali e lo troncano o ricodificano in modo ingenuo producono un primo carattere fuori da quell'intervallo.
I valori del GUID sono fuori dall'intervallo valido — se la prima cifra non è 0, 1, 2 o 3, non è un GlobalId IFC conforme.
buildingSMART Forums — errori comuni di esportazione IFC
Un GlobalId fuori intervallo viene tollerato silenziosamente dai parser permissivi e rifiutato da quelli rigorosi — così lo stesso file 'funziona' in uno strumento e fallisce la validazione in un altro, il che è esasperante da diagnosticare senza uno strumento di controllo che segnali esplicitamente l'intervallo.
Come rilevare GUID instabili o non validi
Non puoi vedere la deriva dei GUID guardando un solo file — devi confrontare due esportazioni, oppure controllare formato non valido e duplicati all'interno di uno solo. Apri entrambe le revisioni nel validatore: segnala i GlobalId fuori dall'intervallo valido, duplicati all'interno di un file o malformati, in meno di 30 secondi, interamente nel tuo browser. Non viene caricato nulla.
Controlla i GlobalId in un modello reale
Apri il duplex di buildingSMART per vedere un report di GlobalId pulito, poi trascina due esportazioni consecutive del tuo modello per individuare quali elementi hanno avuto l'ID rigenerato.
IFC2x3 · 2.4 MB
Apri il visualizzatore IFC interattivo
Come mantenere i GUID stabili
Revit
Usa l'esportatore IFC open source e, in File → Export → IFC → Modify Setup → Advanced, imposta "Export IFC GUIDs" su "Keep Existing" (mai "Generate New"). Questo riutilizza il GlobalId stabile che Revit memorizza per ogni elemento invece di crearne uno nuovo a ogni esportazione. Per gli elementi che si suddividono in più entità IFC, accetta che le sotto-entità possano non essere perfettamente stabili — ancora il tuo coordinamento all'ID dell'elemento host.
ArchiCAD
Nelle impostazioni di IFC Translator, abilita "Write stable GlobalIDs (from AC internal IDs)". Senza questa opzione, ArchiCAD deriva i GlobalId in un modo che può variare tra un'esportazione e l'altra.
Correggere ciò che è già andato alla deriva
Se un file contiene già GlobalId non validi o duplicati, il validatore può auto-correggerli: genera un nuovo GlobalId di 22 caratteri conforme alla specifica, usando il corretto alfabeto base64 con un carattere iniziale in 0–3. Usa questa funzione per riparare il formato di un file già consegnato — ma correggi anche l'impostazione di esportazione a monte, altrimenti la prossima ri-esportazione reintroduce la deriva.
Letture correlate sul caso dei GUID duplicati (due elementi, un solo ID) e sull'intero set di controlli strutturali: vedi GUID duplicati in IFC e I 7 errori di validazione IFC più comuni in questo blog.
Perché i GUID IFC cambiano a ogni esportazione (e come renderli stabili)