Industry Foundation Classes ( IFC ) es un esquema de datos de intercambio de datos CAD diseñado para la descripción de datos de la industria de la arquitectura, la construcción y la edificación.
Se trata de una especificación de esquema de datos abierta, independiente de la plataforma, que no está controlada por un único proveedor o grupo de proveedores. Es un esquema de datos basado en objetos con un modelo de datos desarrollado por buildingSMART (anteriormente la Alianza Internacional para la Interoperabilidad, IAI) para facilitar la interoperabilidad en la industria de la arquitectura , la ingeniería y la construcción (AEC), y es un formato de colaboración de uso común en proyectos basados en el modelado de información de construcción (BIM). La especificación del modelo IFC es abierta y está disponible. [1] Está registrada por ISO y es una norma internacional oficial ISO 16739-1:2024.
Debido a su enfoque en la interoperabilidad, el gobierno danés en 2010 hizo obligatorio el uso de formatos IFC para proyectos de construcción con ayuda pública. [2] En 2017, la empresa de gestión de instalaciones estatal finlandesa Senate Properties comenzó a exigir el uso de software compatible con IFC y BIM en todos sus proyectos. [3] También el Gobierno noruego, las organizaciones clientes de Salud y Defensa requieren el uso de IFC BIM en todos los proyectos, así como muchos municipios, clientes privados, contratistas y diseñadores han integrado IFC BIM en sus negocios. [ cita requerida ] . La popularidad del esquema de datos IFC en la construcción ha seguido creciendo, principalmente con el propósito de intercambiar geometría.
La iniciativa IFC comenzó en 1994, cuando Autodesk formó un consorcio industrial para asesorar a la empresa en el desarrollo de un conjunto de clases de C++ que pudieran respaldar el desarrollo de aplicaciones integradas. Doce empresas estadounidenses se unieron al consorcio. Estas empresas incluían AT&T, HOK Architects, Honeywell, Carrier, Tishman y Butler Manufacturing. [4] Inicialmente denominada Industry Alliance for Interoperability, la Alianza abrió la membresía a todas las partes interesadas en septiembre de 1995 y cambió su nombre en 1997 a International Alliance for Interoperability. La nueva Alianza se reconstituyó como una organización sin fines de lucro dirigida por la industria, con el objetivo de publicar la Industry Foundation Class (IFC) como un modelo de producto AEC neutral que respondiera al ciclo de vida de los edificios AEC. Otro cambio de nombre ocurrió en 2005, y la especificación IFC ahora es desarrollada y mantenida por buildingSMART .
Están disponibles las siguientes versiones de la especificación IFC [5]
IFC define múltiples formatos de archivos que pueden utilizarse y admiten varias codificaciones de los mismos datos subyacentes. [7]
IFC-SPF está en formato ASCII , que, si bien es legible para humanos, presenta problemas comunes con los archivos ASCII, ya que los tamaños de archivo están inflados, los archivos deben leerse secuencialmente de principio a fin, no es posible la extracción a mitad de archivo, los archivos son lentos de analizar y las definiciones no son jerárquicas. [8] Además de ifcXML e ifcZIP, los formatos de datos modernos incluyen RDF/XML o Turtle (que utiliza la ontología ifcOWL), ifcJSON ( JavaScript Object Notation , ampliamente disponible) e ifcHDF5 ( Hierarchical Data Format v5, binario). [8] En 2020, buildingSmart tenía dos proyectos JSON en marcha: ifcJSON v4 (un mapeo directo de IFC v4 basado en EXPRESS) e ifcJSON v5, además de un proyecto de investigación que experimenta con la conversión de IFC a un formato binario. [8]
IFC define un modelo de relación entre entidades basado en EXPRESS que consta de varios cientos de entidades organizadas en una jerarquía de herencia basada en objetos. Entre los ejemplos de entidades se incluyen elementos de construcción como IfcWall, geometría como IfcExtrudedAreaSolid y construcciones básicas como IfcCartesianPoint. [9]
En el nivel más abstracto, IFC divide todas las entidades en entidades con raíz y no con raíz. Las entidades con raíz se derivan de IfcRoot y tienen un concepto de identidad (que tiene un GUID ), junto con atributos para el nombre, la descripción y el control de revisión. Las entidades sin raíz no tienen identidad y las instancias solo existen si se hace referencia a ellas desde una instancia con raíz de forma directa o indirecta. IfcRoot se subdivide en tres conceptos abstractos: definiciones de objetos, relaciones y conjuntos de propiedades:
IfcObjectDefinition se divide en ocurrencias de objetos y tipos de objetos. IfcObject captura ocurrencias de objetos, como la instalación de un producto con un número de serie y una ubicación física. IfcTypeObject captura definiciones de tipo (o plantillas), como un tipo de producto con un número de modelo particular y una forma común. Las ocurrencias y los tipos se subdividen en seis conceptos fundamentales: actores ("quién"), controles ("por qué"), grupos ("qué"), productos ("dónde"), procesos ("cuándo") y recursos ("cómo").
IfcRelationship captura las relaciones entre objetos. Existen cinco tipos fundamentales de relaciones: composición, asignación, conectividad, asociación y definición.
IfcPropertyDefinition captura conjuntos de propiedades extensibles de forma dinámica. Un conjunto de propiedades contiene una o más propiedades que pueden ser un valor único (por ejemplo, una cadena, un número, una unidad de medida), un valor acotado (que tiene un mínimo y un máximo), una enumeración, una lista de valores, una tabla de valores o una estructura de datos. Si bien IFC define varios cientos de conjuntos de propiedades para tipos específicos, los proveedores de aplicaciones o los usuarios finales pueden definir conjuntos de propiedades personalizados.
IfcProduct es la clase base para todos los objetos físicos y se subdivide en elementos espaciales, elementos físicos, elementos de análisis estructural y otros conceptos. Los productos pueden tener materiales asociados, representaciones de formas y ubicación en el espacio. Los elementos espaciales incluyen IfcSite, IfcBuilding, IfcBuildingStorey e IfcSpace. Los elementos de construcción físicos incluyen IfcWall, IfcBeam, IfcDoor, IfcWindow, IfcStair, etc. Los elementos de distribución ( HVAC , electricidad , plomería ) tienen un concepto de puertos donde los elementos pueden tener conexiones específicas para varios servicios y conectarse entre sí mediante cables, tuberías o conductos para formar un sistema. Se utilizan varias relaciones de conectividad para elementos de construcción, como paredes que tienen aberturas llenas de puertas o ventanas.
Los materiales pueden definirse para productos en su conjunto o como capas, perfiles o componentes para partes específicas.
Se pueden definir representaciones para formas 3D explícitas y, opcionalmente, como restricciones paramétricas. Cada representación se identifica mediante IfcShapeRepresentation con un nombre conocido.
La ubicación puede indicar posición, ángulo vertical y ángulo horizontal.
Se pueden definir cantidades para fines de despegue, como área bruta, volumen bruto, peso bruto, peso neto, etc. IFC define varias cantidades específicas para cada tipo de elemento y el método de cálculo según la geometría y las relaciones.
IfcProcess es la clase base para los procesos y se subdivide en tareas, eventos y procedimientos. Los procesos pueden tener duraciones y programarse para que se realicen en períodos de tiempo específicos. Los procesos pueden secuenciarse de modo que una tarea sucesora pueda comenzar después de que finalice una tarea predecesora, siguiendo el método de la ruta crítica . Los procesos pueden anidarse en subprocesos para su resumen. Los procesos pueden asignarse a productos que indiquen el resultado obtenido por el trabajo realizado.
IfcResource es la clase base de los recursos y se subdivide en materiales, mano de obra, equipos, subcontratos, cuadrillas y más. Los recursos pueden tener distintos costos y calendarios de disponibilidad. Los recursos pueden estar anidados en subrecursos para una asignación granular. Los recursos pueden asignarse a procesos que indiquen tareas realizadas en nombre de un recurso.
IfcProject encapsula un proyecto general e indica el nombre del proyecto, la descripción, las unidades predeterminadas, la moneda, el sistema de coordenadas y otra información contextual. Un archivo IFC válido siempre debe incluir exactamente una instancia de IfcProject, a partir de la cual se relacionan todos los demás objetos de forma directa o indirecta. Un proyecto puede incluir varios edificios, varios participantes y/o varias fases según el uso particular.
Además de la información específica del proyecto, un IfcProject también puede hacer referencia a proyectos externos desde los cuales se pueden importar definiciones compartidas, como tipos de productos. Cada proyecto externo se encapsula utilizando IfcProjectLibrary [IFC2x4] junto con IfcRelAssociatesLibrary e IfcLibraryInformation para identificar la revisión particular de la biblioteca de proyectos importada.
Los proyectos admiten el control de revisión , donde cualquier entidad basada en IfcRoot tiene un identificador único y puede marcarse como agregada, modificada, eliminada o sin cambios. Esta capacidad permite fusionar varios archivos IFC de manera determinista, lo que garantiza la integridad de los datos sin intervención humana.