IFC Guide
Kapitola 03: PROJECT CONTAINER ELEMENT AND BASE SETTINGShtmlpdf orig
Kapitola 04: SPATIAL STRUCTURE AND SPACE ELEMENTShtmlpdf orig
Kapitola 05: BUILDING ELEMENTShtmlpdf orig
Kapitola 06: BUILDING SERVICES ELEMENTS AND RELATED CONCEPTShtmlpdf orig
Kapitola 09: SHAPE REPRESENTATION OF ELEMENTShtmlpdf orig
Kapitola 10: PROPERTIES OF ELEMENTShtmlpdf orig
Obsah kapitoly

Obsah kapitoly

3 Prvky kontejneru projektu a základní nastavení

3.1 Kontejner projektu

Jakákoli databáze IFC a soubor výměny vyžaduje přítomnost právě jedné instance programu IfcProject. (s výjimkou globálních IFC serverů).

IfcProject vytváří kontext všech reprezentací v rámci projektu, zejména:

#1=IFCPROJECT('2mifZkraLA4xt6Lfl2GhCQ', #2, 'Shopping mall',
'New development project in the suburban district', 'Development project',
'Shopping mall at High Street', 'Design', (#3), #4);

IfcProject je také nejvyšší instancí třídy kontejnerů, ke které se všechny produkty (jako instance IfcProduct nebo přesněji IfcElement) musí přímonebo nepřímo vztahovat.
Nejvyšší prostorová instance třídy kontejneru (často IfcSite nebo IfcBuilding) je přímo přiřazena IfcProject pomocí vztahu IfcRelAggregates.

3.2 Unique Identification, State and Ownership

The ability to uniquely identify an object as well as preserve information about its ownership is fundamental to the IFC model. These concepts are required for all subtypes of IfcRoot and are captured within the utility resource schema of the IFC2× specification.

figure2
Figure 2 : Definition of identification and ownership at root object

3.2.1 Unique Identification of an Instance

Once an IFC instance is created, it is critical that it can be uniquely identified for its entire lifecycle. The ability to both exchange and archive data is not possible without this capability. For example, if multiple software applications are used to create instances of IfcDistributi­onElement, having a unique identifier associated with each instance allows for exchange and storage in a common archive without fear of namespace collisions.

The IfcGloballyUniqueId is an IFC defined type that is a fixed length string value. The stored value is a compressed Globally Unique Identifier (GUID) or Universal Unique Identifier (UUID) as defined by the Open Group. The IFC2× specifications contains a public domain algorithm that can be used to create, compress and decompress these values. Every time an IFC instance is created, this algorithm must be used to create a new IfcGloballyUni­queId. Re-use of an IfcGloballyUni­queId, even if the local instance is deleted, is strongly discouraged due to the inability to ensure that remote instances do not exist.

3.2.2 State and Ownership of an Instance

IfcOwnerHistory je jednoduchá definice, která usnadňuje schopnost zachytit následující informace:

Informace o vytváření a poslední modifikované aplikaci jsou uloženy v instancích aplikace IfcApplication.
Instance IfcOwnerHistory a IfcApplication mohou být sdíleny.

Storing the state of an instance is optional, but highly recommended. State information is recorded in the IfcOwnerHisto­ry.State attribute and allows applications to assert whether the instance should be modified by applications that are not the instance owner. Refer to the IFC2× specifications for details on available states.

Uložení stavu instance je nepovinné, ale vysoce doporučeno.
Informace o stavu jsou zaznamenány v atributu IfcOwnerHisto­ry.State a umožňují aplikacím určit, zda by instance měly být modifikovány aplikacemi, které nejsou vlastníkem instance.
Podrobné informace o dostupných stavech naleznete v specifikacích IFC2 ×.

Information about the user that created the instance is stored in the IfcOwnerHisto­ry.OwningUser attribute. The intent is that the user that creates the instance is the owner. There is nothing that prevents an application from transferring ownership, and in some cases this may be necessary. For example, an architect may create instances of air terminals for the initial layout of a ceiling grid, but an HVAC engineer will ultimately need to take ownership of these instances.

Informace o uživateli, který vytvořil instanci, jsou uloženy v atributu IfcOwnerHisto­ry.OwningUser. Záměrem je, aby uživatel, který vytvoří instanci, byl vlastníkem. Neexistuje nic, co by zabránilo aplikaci přenést vlastnictví, a v některých případech to může být nutné. Například architekt může vytvořit počty vzduchových terminálů pro počáteční uspořádání stropní mřížky, ale technik HVAC bude nakonec muset převzít vlastnictví těchto instancí .

If a user makes a change to an instance, information about the user is stored in the IfcOwnerHisto­ry.LastModify­ingUser attribute. Note that only the information about the last user is stored: a historical record is not preserved and is outside of the scope of this release of the IFC2× model. The nature of the change is recorded in the IfcOwnerHisto­ry.ChangeActi­on attribute. Applications that do not own the instance should only allow changes to instances whose state is marked as READWRITE.

Application information consists of the name and version of the software application, the application developer, and the registered application identifier. The application identifier is granted by the IAI to the developer to indicate that the application has been approved by the IAI facilitated approval process.

Example:
The following Part 21 data contains an example of state and ownership concepts for an IfcBuilding instance that has just been created:

#1=IFCBUILDING('WJ7yGd42kMW08n7Cp432Kr',#2,'Sample Building',$,$,$,$,$,$,$,$,$);
#2=IFCOWNERHISTORY(#3,#6,.READWRITE.,.ADDED.,87763554,#3,#6,87763554);
#3=IFCPERSONANDORGANIZATION(#4,#5,());
#4=IFCPERSON('Public','Jane','Q.',(),(),(),(),());
#5=IFCORGANIZATION($,'Architecture by Jane Q. Public, Inc.',$,(),());
#6=IFCAPPLICATION(#7,'Version 1.0','Building Architecture Toolkit','BAT1.0');
#7=IFCORGANIZATION($,'Creating Instance Software, Inc.',$,(),());

3.3 Unit Definition and Assignment

In the IFC schema there may be a number of ways to express the measure defined types (for measure values) and their units. The purpose of this section and the examples is to promote common understanding how measure types and related units should be used, i.e. instantiated.

The definitions of units and measure types are provided in the IfcMeasureResource and had been based on the specification of the measure_schema as defined in ISO 10303–41 „Integrated Generic Resources – Fundamentals of Product Description and Support“. Note: An IFC project file always has units defined for its shape representations. There are no IFC project files without a unit definitions (in contrary DXF files do not have units).

3.3.1 Introduction

In different types of units there are four basic cases:

With regard to the usage of measure defined types (IfcLengthMeasure, IfcTimeMeasure, etc.) as attribute data types in the IFC schema, there two basic cases:

ENTITY IfcCartesianPoint SUBTYPE OF (IfcPoint); Coordinates : LIST [1:3] OF IfcLengthMeasure; END_ENTITY;

The data type of an entity attribute is a measure defined type as such. In this case it’s the global unit assignment for the corresponding unit for this measure type that defines the unit for all the usages of this defined measure type. This is the case for all geometry definitions (there is only a single length unit for all geometric items within an IFC file) and for most of the other properties.

ENTITY IfcPropertySin­gleValue
SUBTYPE OF (IfcSimplePro­perty);
NominalValue : IfcValue;
Unit : OPTIONAL IfcUnit;
END_ENTITY;

For some generic property definitions, e.g. within the general property set or quantity take-off definitions, there is the ability to define local units. The convention is that if a specific unit is given, than this unit overrides a potentially provided global unit for the same measure, if no local unit is given, the globally defined unit is used. The data type of an unit is IfcUnit, which allows for definition of an unit as either SI unit, derived unit, conversion based unit or context dependent unit (or any valid combination).

In general, it is recommended not to mix different units for same measure defined types, if it can be avoided. The next subsections give some examples of each of the above cases.

Note: In the example instantiations in the form of IFC data exchange files, only the measure and unit -relevant attributes are given the values; the other attributes are given no values (in the form of $-sign) independent of whether they should actually have values because of being non-optional attributes.

3.3.2 Global unit assignment

The global unit assignment of the project defines the global units for measures and values when the units are not otherwise defined more specifically using entity type IfcMeasureWithUnit as attribute’s data type. The global unit assignment is handled at the IfcProject (see 3.1). The relevant entity within the IfcMeasureResource, which is used to list all globally defined units, is the IfcUnitAssignment.

figure3
Figure 3 : Definition of IfcUnitAssignment and the IfcUnit select

3.3.2.1 Basic SI-units as global units

SI units are defined by the SI unit name, provided as an enumeration of all SI units, as defined in ISO 1000. A Prefix (such as milli, kilo, tera, etc.) can be provided in addition. If it is omitted, the basic SI unit is given.

figure4
Figure 4 : Definition of IfcSIUnit

An example where project’s global basic length, area and volume units are defined as SI units. Here all length measures are given as millimeter, all area measures as square meter and all volume measures as cubic meter.

#1= IFCPROJECT('fabcdeghijklmnopqrst02',#7,'test project',$,$,$,$,(#20),#30); /* global units */
#30=IFCUNITASSIGNMENT((#33, #34, #35));
#33=IFCSIUNIT(*, .LENGTHUNIT., .MILLI., .METRE.);
#34=IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.);
#35=IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.);

All measures within the geometric representations of IFC objects (see chapter 9) are given by measures with defined data types referring back to the global units, i.e. all lengths are given by the same unit (e.g. millimeter as in the example above).

Another example is the exchange of the global unit for angle measures (e.g. the plane angle measures for rotations). Here the unit is given by radian.

#1= IFCPROJECT('fabcdeghijklmnopqrst02',#7,'test project',$,$,$,$,(#20),#30);
#30=IFCUNITASSIGNMENT((#33, #34, #35, #36));
#33=IFCSIUNIT(*, .LENGTHUNIT., .MILLI., .METRE.);
#34=IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.);
#35=IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.);
#36=IFCSIUNIT(*. .PLANEANGLEUNIT., $, .RADIAN.);

3.3.2.2 Conversion based units as global units

Global units within a project could also be given as derived units (although the use of standard SI units is encouraged). In this case the IfcUnitAssignment should refer to the derived unit definition, given by the unit type, a name and the conversion rate in regard to the SI units for the same unit type.

The ValueComponent of the IfcMeasureWithUnit that is used as ConversionFactor should given the amount of the base units, that equals 1 conversion based unit. Examples

If degrees should be used for plane angle measures, in contrary to the example above (i.e. 180’ instead of 3.1416, or π), than it has to be declared as a derived unit, referring to the radian as the underlying SI unit.

#1= IFCPROJECT('fabcdeghijklmnopqrst02',#7,'test project',$,$,$,$,(#20),#30);
#30= IFCUNITASSIGNMENT((#33, #34, #35, #36));
#33= IFCSIUNIT(*, .LENGTHUNIT., .MILLI., .METRE.);
#34= IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.);
#35= IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.);
#36= IFCCONVERSIONBASEDUNIT(#40, .PLANEANGLEUNIT., 'DEGREE', #41);
#40= IFCDIMENSIONALEXPONENTS(0, 0, 0, 0, 0, 0, 0);
#41= IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(57.29577951308232), #50);
#41= IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE( 0.01745329263638), #50);
#50= IFCSIUNIT(*. .PLANEANGLEUNIT., $, .RADIAN.);

Implementation agreements: The conversion factor (in the above example #41) should store the value the sending system had used for the generated IFC file. The receiving system can use that value, if it is however in contradiction to the internally preferred conversion factor, the system has the freedom to choose its internal value.

3.3.2.2.1

Conversion based Imperial units as global units An example where projects global basic length and area units are defined as imperial units (inches and square feet), which are further defined as conversion based units relative to SI units millimeter and square meter. In the example SI unit cubic meter is defined as the global volume unit:

#1=IFCPROJECT($, $, '', $, $, $, $, $, #2, $, $);
#2=IFCUNITASSIGNMENT((#6, #9, #5));
#3=IFCSIUNIT(*, .LENGTHUNIT., .MILLI., .METRE.);
#4=IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.);
#5=IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.);
#6=IFCCONVERSIONBASEDUNIT(#8, .LENGTHUNIT., 'INCH', #7);
#7=IFCMEASUREWITHUNIT(IFCLENGTHMEASURE(25.40005), #3);
#8=IFCDIMENSIONALEXPONENTS(1, 0, 0, 0, 0, 0, 0);
#9=IFCCONVERSIONBASEDUNIT(#10, .AREAUNIT., 'SQUARE_FEET', #11);
#10=IFCDIMENSIONALEXPONENTS(2, 0, 0, 0, 0, 0, 0);
#11=IFCMEASUREWITHUNIT(IFCAREAMEASURE(0.0929), #4);

3.3.2.3 Derived units as global units

An example definition of a unit for specific heat capacity (Joule / kg Kelvin), which is defined as a derived unit based on basic SI units:

#1=IFCPROJECT('abcdefghijklmnopqrst09', #100, '', $, $, $, $, (#101), #2);
#2=IFCUNITASSIGNMENT((#3));
#3=IFCDERIVEDUNIT((#5, #6, #4), .SPECIFICHEATCAPACITYUNIT., $);
#4=IFCDERIVEDUNITELEMENT(#7, 1);
#5=IFCDERIVEDUNITELEMENT(#8, -1);
#6=IFCDERIVEDUNITELEMENT(#9, -1);
#7=IFCSIUNIT(*, .ENERGYUNIT., $, .JOULE.);
#8=IFCSIUNIT(*, .MASSUNIT., .KILO., .GRAM.);
#9=IFCSIUNIT(*, .THERMODYNAMICTEMPERATUREUNIT., $, .KELVIN.);

3.3.2.4 Use of defined measure type with global unit assignment

An example where the attribute IfcScheduleti­meControl.Sche­duleDuration : IfcTimeMeasure, is of data type IfcTimeMeasure without possibility of using specific unit from IfcMeasureWithUnit. Then the global unit for time measure applies; in this case seconds (the example’s 172800 s­econds would be equivalent to 2 days):

#1=IFCPROJECT('abcdefghijklmnopqrst09', #100, '', $, $, $, $, (#101), #2);
#2=IFCUNITASSIGNMENT((#3));
#3=IFCSIUNIT(*, .TIMEUNIT., $, .SECOND.);
#4=IFCSCHEDULETIMECONTROL($, $, $, $, $, $, $, $, $, $, $, $, $, $, 172800., $, $, $, $, $, $, $);

3.3.3 Local unit assignment

An example where the IfcRelAssigns­ToProcess.Quan­tityInProcess : IfcMeasureWithUnit of data type IfcMeasureWithUnit is given a value in liters (value 10 liters e.g. as a quantity value for paint) as a conversion based unit based on SI unit cubic meter. Here an “overriding” specific unit can be defined on the instance level independent of the global unit for volume measure (here SI unit cubic meter):

#1=IFCPROJECT('abcdefghijklmnopqrst10', #100, '', $, $, $, $, $, #2, $, $);
#2=IFCUNITASSIGNMENT((#8));
#3=IFCRELASSIGNSTOPROCESS'abcdefghijklmnopqrst11', #100, $, $, (#51,#52), $, #53, #4);
#4=IFCMEASUREWITHUNIT(10., #5);
#5=IFCCONVERSIONBASEDUNIT(#6, .VOLUMEUNIT., 'LITRE', #7);
#6=IFCDIMENSIONALEXPONENTS(3, 0, 0, 0, 0, 0, 0);
#7=IFCMEASUREWITHUNIT(IFCVOLUMEMEASURE(0.001), #8);
#8=IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.);

3.4 Representation context

Each IfcRepresentation (and the subtype IfcShapeRepre­sentation) has to be founded within a representation context, established by the IfcProject (see 3.1), referencing a single or multiple instances of IfcRepresenta­tionContext (or the subtype IfcGeometricRe­presentationCon­text).

An IFC project has to have at least one representation context, but may have several contexts. Each context maybe identified by two attributes, ContextIdentifier and ContextType. Currently there are no recommendations on how to use the ContextIdentifier attribute, but there are recommendations on how to use the ContextType. Additional recommendations maybe be given within particular views or implementation agreements.

Within IFC2×2 a new subtype of IfcGeometricRe­presentationCon­text has been added, the IfcGeometricRe­presentationSub­Context, it refers to its parent context and derives the WorldCoordina­teSystem, the CoordinateSpa­ceDimension, the TrueNorth and the Precision. The intended usage of the IfcGeometricRe­presentationSub­Context is the handling of multi-view representation of the same object within the same representation context (i.e. the same coordinate space). The two attributes TargetScale and TargetView allow to specify the representation set, to which a specific shape or styled representation can be assigned to.

Example: The representation of a table might be different within the general model space (3D) and a specific representation for the 1:100 ground view. It can be achieved in IFC2×2 by assigning two IfcRepresentation instances (e.g. by the IfcShapeRepre­sentation and IfcStyledRepre­sentation subtypes) within the IfcProductDefi­nitionShape for the IfcFurnitureE­lement, and to assign the IfcStyledRepre­sentation (1:100 ground view) to an IfcGeometricRe­presentationSub­Context with TargetScale=0­.01 and TargetView=.PLAN_VI­EW.

figure5
Figure 5 : Definition of (multiple) representation contexts

In case of geometric representations of a product definition shape (as described in 9.1.3), the subtype IfcGeometricRe­presentationCon­text has to be used (since IFC2×2 also the new subtype of IfcGeometricRe­presentationCon­text, the IfcGeometricRe­presentationSub­Context can be used to differentiate between several scale and/or view dependent representations within the same geometric context). In addition to the ContextIdentifier and the ContextType, the subtype provides two mandatory attributes:

WorldCoordina­teSystem: Establishment of the world coordinate system for the representation context used by the project. It is used directly for the UoF „local absolute placement“ (see 9.1.2.1.2), where the object coordinate system in directly placed within the WCS, as established by the geometric representation context. In case of the UoF „local relative placement“ (see 9.1.2.1.1), the uppermost relative placement must relate to the WCS, as established by the geometric representation context

CoordinateSpa­ceDimension: The integer dimension count of the coordinate space used in the geometric representation context. The two optional attributes Precision and TrueNorth may give additional information about the context.

Precision : Value of the model precision for geometric models. It is a double value (REAL), typically in 1E-5 to 1E-8 range, that indicates the tolerance under which two given points are still assumed to be identical. The value can be used e.g. to sets the maximum distance from an edge curve to the underlying face surface in brep models. This information is needed for the reliable exchange of B-rep shape models, and should be provided, if shape representations of representation type „Brep“ are used.

TrueNorth : Direction of the true north relative to the world coordinate system as established by the representation context. This information maybe provided for the benefit of thermal analysis applications.

Note: If there are multiple geometric representation contexts within a project, all are required to refer to the same world co-ordinate system. In case of 2D and 3D geometric co-ordination contexts, the XY-plane has to be identical.

There is a constraint, that all instances of IfcGeometricRe­presentationCon­text have to define the same world coordinate system, if there are both, 2D and 3D geometric contexts, that they have to define identical XY planes.

The new IFC2×2 subtype IfcGeometricRe­presentationSub­Context has an ParentContext attribute, that refers to the IfcGeometricRe­presentationCon­text and establishes the same WorldCoordina­teSystem, CoordinateSpa­ceDimension, Precision, and TrueNorth for all sub contexts of the same ParentContext.

This enforces, that all geometric representation sub contexts to have an identical world coordinate system and thereby the same position and distances between its coordinates.

3.4.1 Context type of geometric representation context

If there are multiple geometric representation contexts used the attributes the ContextIdentifier and ContextType should be used to distinguish the contexts. This functionality allows to support the concept of multi-view representations (such as multi-view blocks or different display representation of the same object depending on scale and projection). Current recommendations for the label of

ContextType are:

Example:
All bounding box shape representations of the objects should be grouped within a separate IfcGeometricRe­presentationCon­text with the ContextType = “sketch view”.

Note:
A new subtype, IfcGeometricRe­presentationSub­Context, has been defined in IFC2×2, which provides additional capabilities for the definition of such context type specific sub contexts, it has two explicit attributes for defining the TargetView and the TargetScale, at which the sub context applies.