基本3D格式
BIM文件格式
CAD文件格式
GIS文件格式

IFC4X2文件

IFC4X2是三维建模、建筑信息模型(BIM)和地理信息系统(GIS)行业中广泛使用的开放文件格式。IFC4X2(Industry Foundation Classes)是一种标准的数据交换格式,开发的目的是为了在建筑和工程领域中进行信息交流和集成。IFC4X2从逻辑上描述了建筑或工程项目的物理或功能特征,并允许在不同的设计和分析工具之间共享数据的交互性。IFC4X2是基于XML格式的,可读性强,并可在各种平台和设备上进行操纵。

文件结构

IFC4X2文件可以分解为两种不同类型的单元:物件和关系。

  • 物件

    物件表示建筑或工程中存在的实际事物,如构件、材料、设备、空间、元件等。在IFC4X2文件中,每个实体都有一个独一无二的标识符(ID),同时该实体的数据也保存在IFC4X2文件中。这些实体的数据可以包括名称、尺寸、材料、颜色、位置、旋转角度等等。

  • 关系

    关系表示物件之间的关系,这些关系包括空间关系、功能关系、分类关系等。IFC4X2文件中的关系可以更准确地描述建筑模型中实体之间的联系,以及在不同领域中使用不同的建模工具时如何交换数据。常见的IFC4X2文件中的关系包括包含关系(如房间中的墙体和门)、属于关系(如对象是哪种构件的一部分)、联系关系等。

IFC4X2文件结构一般如下:

<?xml version="1.0" encoding="UTF-8"?>
<iso_10303_28
    xmlns="http://www.iai-tech.org/ifcXML/IFC4x2/FINAL"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.iai-tech.org/ifcXML/IFC4x2/FINAL http://www.iai-tech.org/ifcXML/IFC4x2/FINAL/IFC4x2_final.xsd">
    <!-- 具体的IFC4X2数据 部分省略 -->
</iso_10303_28>

规范链接

IFC4X2是由国际ISO/TC 59/SC 13委员会(建筑和土木工程)和ISA国际委员会(信息组织和交换技术)联合制定的国际标准。IFC4X2文件的规范链接包括:

  • 官方网站:https://www.buildingsmart.org/standards/bsi-standards/
  • 完整的IFC4X2规范PDF文档:https://standards.buildingsmart.org/IFC/RELEASE/IFC4_2/FINAL/HTML/
  • IFC4X2 XML模式:http://www.buildingsmart-tech.org/schema/ifcXML4/Add1/html/index.htm
  • IFC4X2 EXPRESS模式:http://www.buildingsmart-tech.org/ifc/IFC4x2/FINAL/HTML/spec/index.htm

示例文件

IFC4X2文件通常使用在线建模工具或BIM软件生成,下面示例是一个包含房间、墙体、门和窗户的IFC4X2文件:

<?xml version="1.0" encoding="UTF-8"?>
<iso_10303_28
    xmlns="http://www.iai-tech.org/ifcXML/IFC4x2/FINAL"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.iai-tech.org/ifcXML/IFC4x2/FINAL http://www.iai-tech.org/ifcXML/IFC4x2/FINAL/IFC4x2_final.xsd">
    <IfcWall id="3p5OvgB5r5VuHstIROwmOh" Name="Wall1" ObjectType="Wall">
        <GlobalId>3p5OvgB5r5VuHstIROwmOh</GlobalId>
        <OwnerHistory>
            <IfcPersonAndOrganization>
                <ThePerson>
                    <GivenName>John</GivenName>
                    <FamilyName>Doe</FamilyName>
                </ThePerson>
                <TheOrganization>
                    <Name>My Company</Name>
                </TheOrganization>
                <Roles>
                    <IfcRoleEnum>Architect</IfcRoleEnum>
                </Roles>
            </IfcPersonAndOrganization>
            <State>Added</State>
            <ChangeAction>None</ChangeAction>
            <CreationDate>2019-01-01</CreationDate>
        </OwnerHistory>
        <Representation>
            <IfcShapeRepresentation RepresentationType="Brep">
                <Items>
                    <IfcClosedShell>
                        <CfsFaces>
                            <IfcFace>
                                <Bounds>
                                    <IfcPolyLoop>
                                        <Coordinates>
                                            <IfcCartesianPoint>
                                                <Coordinates>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                </Coordinates>
                                            </IfcCartesianPoint>
                                            <IfcCartesianPoint>
                                                <Coordinates>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                    <IfcLengthMeasure>2000</IfcLengthMeasure>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                </Coordinates>
                                            </IfcCartesianPoint>
                                            <IfcCartesianPoint>
                                                <Coordinates>
                                                    <IfcLengthMeasure>3000</IfcLengthMeasure>
                                                    <IfcLengthMeasure>2000</IfcLengthMeasure>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                </Coordinates>
                                            </IfcCartesianPoint>
                                            <IfcCartesianPoint>
                                                <Coordinates>
                                                    <IfcLengthMeasure>3000</IfcLengthMeasure>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                </Coordinates>
                                            </IfcCartesianPoint>
                                        </Coordinates>
                                    </IfcPolyLoop>
                                </Bounds>
                            </IfcFace>
                        <CfsFaces>
                    </IfcClosedShell>
                </Items>
				 <Representation>
            <IfcShapeRepresentation RepresentationType="Brep">
                <Items>
                    <IfcClosedShell>
                        <CfsFaces>
                            <IfcFace>
                                <Bounds>
                                    <IfcPolyLoop>
                                        <Coordinates>
                                            <IfcCartesianPoint>
                                                <Coordinates>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                    <IfcLengthMeasure>3000</IfcLengthMeasure>
                                                </Coordinates>
                                            </IfcCartesianPoint>
                                            <IfcCartesianPoint>
                                                <Coordinates>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                    <IfcLengthMeasure>1000</IfcLengthMeasure>
                                                    <IfcLengthMeasure>3000</IfcLengthMeasure>
                                                </Coordinates>
                                            </IfcCartesianPoint>
                                            <IfcCartesianPoint>
                                                <Coordinates>
                                                    <IfcLengthMeasure>1000</IfcLengthMeasure>
                                                    <IfcLengthMeasure>1000</IfcLengthMeasure>
                                                    <IfcLengthMeasure>3000</IfcLengthMeasure>
                                                </Coordinates>
                                            </IfcCartesianPoint>
                                            <IfcCartesianPoint>
                                                <Coordinates>
                                                    <IfcLengthMeasure>1000</IfcLengthMeasure>
                                                    <IfcLengthMeasure>0</IfcLengthMeasure>
                                                    <IfcLengthMeasure>3000</IfcLengthMeasure>
                                                </Coordinates>
                                            </IfcCartesianPoint>
                                        </Coordinates>
                                    </IfcPolyLoop>
                                </Bounds>
                            </IfcFace>
                        <CfsFaces>
                    </IfcClosedShell>
                </Items>
            </IfcShapeRepresentation>
        </Representation>
    </IfcWall>
    <IfcBuildingStorey id="4p6Of8W4c4BU9mqIMxwnUe" Name="First Floor">
        <GlobalId>4p6Of8W4c4BU9mqIMxwnUe</GlobalId>
        <OwnerHistory>
            <!-- OwnerHistory省略 -->
        </OwnerHistory>
        <CompositionType>Element</CompositionType>
        <ObjectPlacement>
            <!-- ObjectPlacement省略 -->
        </ObjectPlacement>
        <Representation>
            <IfcProductDefinitionShape>
                <Representations>
                    <IfcShapeRepresentation RepresentationType="FootPrint">
                        <Items>
                            <IfcPolyline>
                                <Points>
                                    <IfcCartesianPoint>
                                        <Coordinates>
                                            <IfcLengthMeasure>0</IfcLengthMeasure>
                                            <IfcLengthMeasure>0</IfcLengthMeasure>
                                            <IfcLengthMeasure>0</IfcLengthMeasure>
                                        </Coordinates>
                                    </IfcCartesianPoint>
                                    <IfcCartesianPoint>
                                        <Coordinates>
                                            <IfcLengthMeasure>0</IfcLengthMeasure>
                                            <IfcLengthMeasure>4000</IfcLengthMeasure>
                                            <IfcLengthMeasure>0</IfcLengthMeasure>
                                        </Coordinates>
                                    </IfcCartesianPoint>
                                    <IfcCartesianPoint>
                                        <Coordinates>
                                            <IfcLengthMeasure>6000</IfcLengthMeasure>
                                            <IfcLengthMeasure>4000</IfcLengthMeasure>
                                            <IfcLengthMeasure>0</IfcLengthMeasure>
                                        </Coordinates>
                                    </IfcCartesianPoint>
                                    <IfcCartesianPoint>
                                        <Coordinates>
                                            <IfcLengthMeasure>6000</IfcLengthMeasure>
                                            <IfcLengthMeasure>0</IfcLengthMeasure>
                                            <IfcLengthMeasure>0</IfcLengthMeasure>
                                        </Coordinates>
                                    </IfcCartesianPoint>
                                </Points>
                            </IfcPolyline>
                        </Items>
                    </IfcShapeRepresentation>
                </Representations>
            </IfcProductDefinitionShape>
        </Representation>
    </IfcBuildingStorey>
    <IfcDoor id="5p7Ow9Z6d6ZsUuteJRxn14" Name="Door1" PredefinedType="SingleSwingLeft">
        <!-- 物体省略 -->
    </IfcDoor>
    <IfcWindow id="6p8Ox7A7e7AtVvtiKSyo15" Name="Window1" PredefinedType="TopHung">
        <!-- 物体省略 -->
    </IfcWindow>
</iso_10303_28>

以上示例中,包含3个IFC物体:墙体、楼层和门窗。其中,墙体和楼层的位置数据是通过多个CartesianPoint对象定义的,表示其在全局坐标系中的位置和方向。门和窗户对象包括预定义的门和窗类型信息,同时也包含其在空间中的位置信息。 IF4X2格式使三维建模、BIM和GIS数据的交互更加准确、可读性更高、流程更加可控。