IfcProject | |||||||
IfcOwnerHistory | |||||||
IfcGeometricRepresentationContext | |||||||
IfcUnitAssignment | |||||||
IfcClassification | |||||||
IfcLibraryInformation |
The project context baseline information in every Inframodel IFC file shall include:
IfcProject is the context of all informatation exchanged in an IFC file. It specifies the units of measure in the context, and the geometric representation context (coordinate space) for shape representations.
IfcProject is also the root of IFC model hierarchy in all exchange files. The hierarchical breakdown structure is established by assigning the top level spatial structure element (IfcSite) to the IfcProject using IfcRelAggregates relationship, and then using the same relatioship type to assign IfcFacility or its subtypes (such as IfcRoad or IfcRailway) to IfcSite; in the same way, facilities may be broken down into various types of IfcFacilityPart (e.g. a road into longitudinal parts as segments and intersections). Physical elements (e.g. IfcWall, IfcPavement, IfcPipeSegment) are assigned to the hierarchy using IfcRelContainedInSaptialStrcuture, and may be broken down in turn, again using the IfcRelAggregates relationhip.
In addition to the hierarchcal breakdown structure, there may be any number of system breakdown structures or other groupings of objects. E.g. an IfcPipeSegement may be assigned to IfcDistributionSystem using IfcRelAssignsToGroup relatioship, and also to IfcInventory using another relationship of the same type. The systems and other groups are assigned to IfcProject using IfcRelDeclares relationship.
IfcProject context may also include any number of classification systems (referenced externally or embedded in the file), assigned using IfcRelAssociatesClassification, as well as project libraries for type objects or property set definitions, assigned using IfcRelDeclares relationship (embedded in the file) or using IfcRelAssociatesLibrary (external).
There shall be only one instance of IfcProject in each IFC file.
Name | name by which the project is identified | e.g. [inframodelIFCexample] | |
Description | optional textual project description | e.g. [inframodel IFC example project] | |
ObjectType | optional type designation of the project | e.g. [new | renovation | maintenance] | |
LongName | long name or project code | e.g. [P12345] | |
Phase | project phase as agreed on by parties | e.g. [zoning | preliminary plan | general plan | plan | construction plan | construction | maintenance | removal] | |
RepresentationContexts | geometric representation context (mandatory file when includes objects with shape representations) | IfcGeometricRepresentationContext | |
UnitsInContext | units of measure used in the file | IfcUnitAssignment |
Metadata on can be provided on objects: individually for each object, same for a group of objects or for all objects in the file. This is done through IfcOwnerHistory:
CreationDate | time when created | IfcTimeStamp | |
LastModifiedDate | time when last modified | IfcTimeStamp | |
State | write-protection (Read-only/Write) | In IM: READWRITE or READONLY | |
OwningUser | author | IfcPersonAndOrganization | |
LastModifyingUser | change author | IfcPersonAndOrganization | |
OwningApplication | application | IfcApplication | |
LastModifyingApplication | changing application | IfcApplication |
Objects that have shape representation are placed in local cartesian coordinate system (often called "world coordinate system" or "WCS"), established by IfcGeometricRepresentationContext. It defines the type of the context (3D or 2D) in which the shape representations are defined, and the numeric precision applicable to the geometric representation items in this context. In can also be used to offset the local coordinate system from a global point of origin. The use of one instance of IfcGeometricRepresentationContext for 3D model is mandatory when the model has objects with shape representation, the use of a second instance of IfcGeometricRepresentationContext for plan 2D view is optional.
IfcGeometricRepresentationContext:
ContextIdentifier | optional identifier as agreed in the project | e.g. [primary3D] | |
ContextType | label for context type | e.g. [Model] | |
CoordinateSpaceDimension | coordinate space dimensionality | [2 | 3] | |
Precision | indicates the tolerance under which two given points are assumed to be identical | IM: [1E-6] | |
WorldCoordinateSystem | location and orientation of the local coordinate system relative to geographic placement provided using IfcMapConversion; in most cases set with no offsets: location(0.,0.,0.) and directions x(1.,0.,0.), y(0.,1.,0.), z(0.,0.,1.). |
IfcAxis2Placement3D | |
TrueNorth | optional northing direction (in 2D) relative to the local coordinate system, shall be used only if not provided using IfcMapConversion; if neither is given, default value is (0. 1.), meaning the northing direction coincides with local y-axis (and x-axis points to east, as WCS z-axis always points upwards) |
The height and coordinate reference system (CRS) are defined using IfcProjectedCRS, where the local coordinate system is placed by IfcMapConversion. At least one coordinate system must be defined:
Exactly one horizontal system shall defined using the European Petrol Survey Group (EPSG) naming system, or some other system currently in local use. The EPSG coordinate system is set in the attribute Name as a code taken from the list recognized by the European Petroleum Survey Group, prefixed with 'EPSG:'. In case the CRS does not have an EPSG code, the Name attribute shall have value 'WKT' and the Description attribute shall have the well-known text corresponding to ISO 19162 defining the CRS parameters, or a local system name or code is given (no EPSG: prefix). Additionally, if either geodetic or vertical datum is not unambiguously defined by the code given in Name or the WKT in Description, these can be set in GeodeticDatum and VerticalDatum attributes, respectively.
IfcProjectedCRS:
Name | EPSG code or name of local coordinate system | e.g. [EPSG:3067] | |
Description | description of coordinate system as WKT | e.g. [GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]]]] | |
GeodeticDatum | optional geodetic datum if not defined by Name | e.g. [WGS84] | |
VerticalDatum | optional vertical datum if not defined by Name | e.g. [MML:N60] | |
MapProjection | optional name of map projection | e.g. [UTM] | |
MapZone | optional name of map zone | e.g. [UTM32] | |
MapUnit | optional unit of map coordinates axes | LENGTHUNIT as IfcSIUnit or IfcConversionBasedUnit |
The local engineering coordinate system can be mapped into a coordinate reference system (or one reference system to another) using IfcMapConversion. This allows to place the local origin of IfcGeometricRepresentationContext within a reference system by its easting, northing, elevation; additionally, the local coordinate system may be rotated in horizontal plane (local z shall always be the same as in the reference system). Also scaling is possible, if the MapUnit of the refence system is not the same as the units in local system.
IfcMapConversion:
SourceCRS | reference to the local coordinate system | IfcGeometricRepresentationContext or IfcCoordinateReferenceSystem | |
TargetCRS | reference to the map coordinate system | IfcCoordinateReferenceSystem | |
Eastings | easting of the local coordinate system origin | IfcLengthMeasure | |
Northings | northing of the local coordinate system origin | IfcLengthMeasure | |
OrthogonalHeight | elevation of the local coordinate system origin | IfcLengthMeasure | |
XAxisAbscissa | easting value of the local x-axis direction vector | IfcReal | |
XAxisOrdinate | northing value of the local x-axis direction vector | IfcReal | |
Scale | scaling factor between source and target system units, default is 1.0 | IfcReal | |
ScaleY | IfcReal | ||
ScaleZ | IfcReal |
The units used in the file are defined in IfcUnitAssignment.
In most cases, SI-units (with or without prefix) are preferred in Inframodel, including units that are derived using SI-units (e.g. cubic meters per second for flow rate).
Units for latitude and longitude are fixed in IfcCompoundPlaneAngleMeasure as decimal degrees (degrees, minutes, seconds and optional millionth-seconds).
The unit for IfcPlaneAngleMeasure shall be set in IfcUnitAssignment, measured counter-clockwise from the base direction (local x-axis, typically east).
The following table lists the recommended units in Inframodel exchange, but it is possible to diverge from these recommendations if another unit is more appropriate for the content.
If some part of a plan is exchanged using different units from the rest of the project, it is recommended that such data set is exchanged in a separate file.
Numeric precision in Inframodel exchange: all measures shall be given with six decimal digits (regardless of the number of digits before decimal point.).
LENGTHUNIT | unit for distance, diameter, width, height and elevation length measures | [METRE] | |
AREAUNIT | unit for area measures | [SQUARE_METRE] | |
VOLUMEUNIT | unit for volume measures | [CUBIC_METRE] | |
PLANEANGLEUNIT | unit for angular and direction measures | [RADIAN] | |
THERMODYNAMICTEMPERATUREUNIT | unit for temperature measures | [DEGREE_CELSIUS] | |
PRESSUREUNIT | unit for pressure (force per area) measures | [MEGA.PASCAL] | |
LINEARVELOCITYUNIT | unit for velocity (speed) measures | [METRE SECOND-1] | |
VOLUMETRICFLOWRATEUNIT | unit for flow rate measures | [CUBIC_METRE SECOND-1] |
The meaning (semantics) of objects and their shape aspects (collections of geometric items such as points, lines, surfaces and volumes) can be specialized by associating classification codes from various systems.
Such systems can be for instance:
1) The terrain coding system of the Finnish Transport Infrastructure Agency [Infra]
2) The surface coding system in the the general InfraBIM type coding [InfraBIM]
3) The coding system for infrastructure BIM objects (including geometry and breaklines, surfaces, pipe netweorks) in [InfraBIM]
4) Additional or alternative type coding systems used in the project as proprietary codings
Any number of classification or type coding systems can be used in the Project, each of them described as IfcClassification:
Source | optional source (or publisher) for the classification system | e.g. [buildingSMART Finland] | |||
Edition | optional version number | e.g. [1.72] | |||
EditionDate | optional date when published | e.g. [2019-08-19] | |||
Name | name of the classification system | e.g. [InfraBIM Classification System] | |||
Description | optional textual description | e.g. [Finnish coding system for infrastructures] | |||
Location | optional URI reference | e.g. [https://buildingsmart.fi/wp-content/uploads/2019/04/InfraBIM-nimikkeisto_ENG.pdf] | |||
ReferenceTokens | optional list of delimiter tokens marking individual facets (substrings) in a classification reference | e.g. [ . | ; | - | ] |
Each classification and type coding system (IfcClassification) is assigned to the Project (IfcProject) by using IfcRelAssociatesClassification relationship, where their designation (Name) and usage (Description) in the Project context is specified (one of the four types above). One system can be assigned multiple times to the Project for different usages.
IfcRelAssociatesClassification to Project:
Name | name given to coding system in the project context | e.g. [Infra | InfraBIM | myInfraCodings] | |
Description | usage description of the coding system in the project | [terrainCoding | surfaceCoding | InfraCoding | proprietaryInfraCoding] |
IfcClassification may used to provide only the necessary information to identify the system and locate it (and access online, if available), or the entire system can be exchanged as a full set of IfcClassificationReference:
Location | optional URI reference | e.g. [https://buildingsmart.fi/en/classification/] | |||
Identification | classification code | e.g. [214100] | |||
Name | human readable name | e.g. [Bonded pavements] | |||
ReferencedSource | source system of the classification code | IfcClassification | |||
Description | optional textual description | e.g. [top surface of bonded pavement] | |||
Sort | optional identifier for sorting classification facets or levels | e.g. [4] |
The contents of Inframodel extensions as IfcPropertySet with Name "imPset_xxx" in the exchange file shall follow the specifications from the Inframodel property dictionary published by bSF as part of Inframodel specification.
The Inframodel feature/property dictionary is a collection of definitions as IfcPropertySetTemplate (with Name "imPset_xxx"). These can be referenced in exchange file
In case of referencing external library by using IfcRelAssociatesLibrary, the necessary information on the Inframodel property dictionary is in IfcLibraryInformation:
Name | library name | [Inframodel] | |||
Version | library version number | [4.0.4] | |||
Publisher | organization publishing the library | IfcOrganization | |||
VersionDate | optional date when published | [YYYY-MM-DDThh:mm:ss] | |||
Location | optional URL reference | IfcURIReference | |||
Description | optional textual description | e.g. [Inframodel property definitions] |