Torna al blog BIM i IFC
Corregir exportacions · 2026-06-03 · 8 min
Per què els GUID de l'IFC canvien a cada exportació (i com fer-los estables)
Tornes a exportar el mateix model, l'envies al teu coordinador, i de sobte cada comentari BCF, cada incidència de col·lisió i cada etiqueta de FM apunten a l'element equivocat, o a res. La causa: els teus GlobalId d'IFC s'han regenerat. Aquí tens per què passa i com fixar-los.
Per què els GUID de l'IFC canvien a cada exportació (i com fer-los estables) — IFC Viewer Online article cover
Hi ha dos problemes de GUID completament diferents en IFC, i es confonen constantment. El primer són els GUID duplicats: dos elements que comparteixen un GlobalId en un mateix fitxer. El segon, el que tracta aquest article, és la inestabilitat de GUID: el mateix element obté un GlobalId diferent cada vegada que tornes a exportar el model. Tots dos trenquen la coordinació, però el segon és més traïdor, perquè cada fitxer individual sembla perfectament vàlid.
Si coordines col·lisions, treballes amb fluxos BCF, o lliures un model a manteniment (FM), tenir GlobalId estables no és opcional. És l'única cosa que permet a una eina dir «aquest mur de la revisió 4 és el mateix mur que a la revisió 2». Quan deriven, cada referència que apuntava al GlobalId antic queda penjada en silenci.
- 22 — caràcters en un GUID d'IFC
- 3 — valor màxim del primer caràcter
- 0 bytes — pujat per validar
- 100% — s'executa al navegador
Què hauria de ser un GlobalId estable
Cada entitat IFC que hereta d'IfcRoot porta un GlobalId: una cadena de 22 caràcters amb l'alfabet base64 propi d'IFC (0–9, A–Z, a–z, _, $). L'especificació és explícita: ha de ser globalment únic i persistent — el mateix element lògic conserva el mateix GlobalId entre revisions i entre anades i tornades de programari. Aquesta persistència és el que fa possible el seguiment de canvis, el BCF i els registres d'actius.
// 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', ...);
Per què Revit regenera els GUID
La causa arrel és que no sempre hi ha una correspondència neta d'un a un entre un element de Revit i l'entitat IFC a què s'exporta. Un sol element de Revit pot dividir-se en diverses entitats IFC (una barana esdevé un passamà més balustres més un agafador), i quan no hi ha una relació 1:1 estable, l'exportador no té cap ancoratge fiable a partir del qual derivar un GlobalId consistent. Per això en genera un de nou.
Històricament, el paràmetre de GUID d'IFC a Revit era només de lectura, cosa que impedia als equips fixar-lo encara que volguessin. Les versions més noves de l'exportador el van fer de lectura i escriptura perquè el valor es pugui desar i reutilitzar — però encara cal activar el paràmetre correcte, perquè el comportament per defecte en algunes configuracions és regenerar-lo.
- Divisió en subelements: un element amfitrió que s'exporta a múltiples entitats IFC (baranes, escales, murs cortina, cobertes amb frontisses) és la font clàssica de deriva.
- Reexportació amb el comportament «generar de nou»: algunes configuracions d'exportació recreen els GUID cada vegada en lloc de reutilitzar el valor desat.
- Copiar i enganxar, i les edicions de grup al programari d'autoria, poden reiniciar l'ID intern del qual es deriva el GUID.
- Fer una anada i tornada per una eina que no conserva els GlobalId (obrir i tornar a desar en un visor o conversor) els reescriu.
L'altra meitat: el rang de GUID no vàlid
Hi ha una fallada relacionada que els scripts d'exportació fets a mida pateixen constantment. El primer caràcter d'un GlobalId d'IFC vàlid només pot codificar els valors 0–3 en l'alfabet de 6 bits, perquè un UUID de 128 bits empaquetat en 22 caràcters base64 deixa el primer sextet amb només dos bits significatius. Els scripts que agafen un UUID pla de 32 caràcters hexadecimals i el trunquen o el recodifiquen ingènuament produeixen un primer caràcter fora d'aquest rang.
Els valors del GUID estan fora del rang vàlid — si el primer dígit no és 0, 1, 2 o 3, no és un GlobalId d'IFC conforme.
Fòrums de buildingSMART — errors habituals d'exportació IFC
Un GlobalId fora de rang serà tolerat en silenci pels analitzadors permissius i rebutjat pels estrictes — així que el mateix fitxer «funciona» en una eina i falla la validació en una altra, cosa que és exasperant de diagnosticar sense un verificador que marqui explícitament el rang.
Com detectar GUID inestables o no vàlids
No pots veure la deriva de GUID mirant un sol fitxer — cal comparar dues exportacions, o comprovar si hi ha format no vàlid o duplicats dins d'un mateix fitxer. Obre les dues revisions al validador: marca els GlobalId fora de rang, duplicats dins d'un fitxer, o mal formats, en menys de 30 segons, tot al navegador. No es puja res.
Comprova els GlobalId en un model real
Obre el duplex de buildingSMART per veure un informe de GlobalId net, i després carrega-hi dues exportacions consecutives del teu propi model per detectar quins elements van tenir l'ID regenerat.
IFC2x3 · 2.4 MB
Obre el visor IFC interactiu
Com mantenir els GUID estables
Revit
Usa l'exportador IFC de codi obert, i a File → Export → IFC → Modify Setup → Advanced, fixa «Export IFC GUIDs» a «Keep Existing» (mai «Generate New»). Això reutilitza el GlobalId estable que Revit desa per element, en lloc de generar-ne un de nou a cada exportació. Per als elements que es divideixen en múltiples entitats IFC, accepta que les subentitats potser no seran perfectament estables — ancora la teva coordinació a l'ID de l'element amfitrió.
ArchiCAD
Als paràmetres de l'IFC Translator, activa «Write stable GlobalIDs (from AC internal IDs)». Sense això, ArchiCAD deriva els GlobalId d'una manera que pot variar entre exportacions.
Solucionar el que ja ha derivat
Si un fitxer ja conté GlobalId no vàlids o duplicats, el validador els pot corregir automàticament: genera un GlobalId nou de 22 caràcters conforme a l'especificació, amb l'alfabet base64 correcte i un primer caràcter entre 0 i 3. Fes servir això per reparar el format d'un fitxer ja lliurat — però corregeix també el paràmetre d'exportació a l'origen, o la propera reexportació tornarà a introduir la deriva.
Per aprofundir en el cas del GUID duplicat (dos elements, un ID) i el conjunt complet de comprovacions estructurals: consulta GUID duplicats en IFC i Els 7 errors de validació IFC més habituals en aquest blog.
Per què els GUID de l'IFC canvien a cada exportació (i com fer-los estables)