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

9 Tvarová reprezentace prvků

Jde o 3D (9.1) a 2D (kap. 9.2)

9.1 Geometrická reprezentace produktů

This chapter introduces the concept of geometric representations of products within the IFC2× model. Each leaf node object in IFC that derives from IfcProduct can have geometric representations.

Tato kapitola představuje koncept geometrických reprezentací produktů v modelu IFC2 ×.
Každý objekt koncového uzlu v IFC, který pochází z produktu IfcProduct, může mít geometrické reprezentace.

The schemas holding the resource definitions are:
Schémata obsahující definice zdrojů jsou:

The first three resources incorporate definitions and concepts taken from the international standard ISO/IS 10303–42 „Integrated generic resources: Geometric and topological representations“.
The fourth resource incorporates definitions and concepts taken from the international standard ISO/IS 10303–43 " Integrated Generic Resources – Representation Structures".
The fifth and sixth resource are true additions defined within the IFC model that do not have current counterparts within the Integrated Resources as provided under ISO 10303.

In IFC2×2 the concept of visual presentations of geometric representation items has been added to the IFC model.
The presentation capabilities include definition of presentation style attributes for realistic and symbolic visualizations of geometric element, including presentation styles for curve, text, filled area, symbol, and surface.
In addition it supports the definition of pre defined or externally defined character fonts, symbols, colors, and line types.
Also the image control by a layer mechanism is now in scope.

The presentation capabilities have two purposes:

These new concepts will be explained in a future version of the IFC2× model implementation gu­ide.

9.1.1 Reference to the geometric representation

Any object in IFC that has a geometric representation (i.e. is a subtype of IfcProduct) needs to have a value for the two attributes, inherited from IfcProduct. Taking IfcWall :

In the IFC model it is defined as:

ENTITY IfcWall;
ENTITY IfcRoot;
GlobalId : IfcGloballyUniqueId;
OwnerHistory : IfcOwnerHistory;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
ENTITY IfcObject;
ObjectType : OPTIONAL IfcLabel;
INVERSE
(...)
ENTITY IfcProduct;
ObjectPlacement : OPTIONAL IfcObjectPlacement;
Representation : OPTIONAL IfcProductRepresentation;
INVERSE
(...)
ENTITY IfcElement;
(...)
ENTITY IfcBuildingElement;
(...)
END_ENTITY; --IfcWall

And in the IFC file it is exchanged as:

#1=IFCWALL('abcdefghijklmnopqrst01', #2, $, $, $, #3, #4, $);
#3=IFCLOCALPLACEMENT($, #10);
#4=IFCPRODUCTDEFINITIONSHAPE($, $, (#11));

If a Representation is given to the subtype of IfcProduct, the ObjectPlacement has to be inserted as well. This constraint is enforced by a local rule at IfcProduct.

The two attributes are described below. They are defined at the level of IfcProduct and equally apply to all subtypes. Therefore a single concept of describing the geometric representation is applied throughout the whole IFC schema, and therefore the method of geometric representation is the same for e.g. IfcSpace, IfcWall, IfcFlowSegment, IfcFurniture, IfcOpeningElement, IfcProxy.

The next sections describe the concept of object placement, of multiple product representation, and of the different types of shape representation in further details.

All coordinates and geometric parameters (which are length or angle measures) are unit dependent.

The units common to all geometric representations within an IFC exchange are defined globally, i.e. within the context of IfcProject (see 3.1). The UoF „Global Unit Assignment“ is further described within 3.3.2).

9.1.2 Concept of object placement

Any product defined as subtype of IfcProduct in IFC can have one or more geometric representations (e.g. a simple representation as a bounding box, and/or a complex representation as a boundary representation model).
All of the geometric representations of the same object are defined within the same object coordinate system.
This object coordinate system is given by the reference ObjectPlacement to IfcObjectPlacement.

figure102
Figure 102 : Definition of IfcObjectPlacement

The IfcObjectPlacement has to be provided for each product, which has a shape representation defined. The entity IfcObjectPlacement is abstract and only the two subtypes, IfcLocalPlacement and IfcGridPlacement can be instantiated. The object placement can be given:

The object placement defines unambiguously the object coordinate system as either two-dimensional axis placement (IfcAxis2Place­ment2D) or three-dimensional axis placement (IfcAxis2Place­ment3D). The axis placement may have to be calculated, e.g. in the case of a grid placement.

9.1.2.1 Concept of local placement

The default way to define the placement of a product is using the relative placement, given by IfcLocalPlacement with an inserted value for the PlacementRelTo attribute.
If the value of PlacementRelTo is omitted, then the placement is given in global coordinates, i.e. within the global coordinate system, as established at the IfcGeometricRe­presentationCon­text.

9.1.2.1.1 Concept of local relative placement

The IfcLocalPlacement with the PlacementRelTo attribute value inserted defines the relative placement of a product in relation to the placement of another product and finally through the intermediate referenced placements within the geometric representation context of the project.

Each local placement is given by an axis placement, which can be either a 2D or a 3D axis placement. The type of the axis placement shall be the same for the local relative placement and the referenced placement. The axis placement, of type IfcAxis2Placement2D or IfcAxis2Place­ment3D, is given by:

Example:
In the following example, several local placements are used, that are defined relatively. Only the placement objects, IfcLocalPlacement, are shown, but not the subtypes of IfcProduct, which utilizes the placement objects.
The IfcGeometricRe­presentationCon­text is given as it establishes the global (or world) coordinate system.

/* Definition of the world coordinate system */
#1=IFCGEOMETRICREPRESENTATIONCONTEXT($, '3Dmodel', 3, 1.0E-005, #2, $);
#2=IFCAXIS2PLACEMENT3D(#3, $, $);
#3=IFCCARTESIANPOINT((0.0, 0.0, 0.0));
/* Definition of the local coordinate systems */
#4=IFCLOCALPLACEMENT($, #7);
#7=IFCAXIS2PLACEMENT3D(#10, $, $);
#10=IFCCARTESIANPOINT((0.0, 0.0, 2.0));
#5=IFCLOCALPLACEMENT(#4, #8);
#8=IFCAXIS2PLACEMENT3D(#11, $, $);
#11=IFCCARTESIANPOINT((1.0, 0.0, 0.0));
#6=IFCLOCALPLACEMENT(#4, #9);
#9=IFCAXIS2PLACEMENT3D(#12, #13, #14);
#12=IFCCARTESIANPOINT((0.0, 2.0, 2.0.));
#13=IFCDIRECTION((0.0, 1.0, 0.0.));
#14=IFCDIRECTION((0.0, 0.0, -1.0));

figure103
Figure 103 : Example of local relative placement

There are several rules applied to the referencing of parent placements. The referencing has to be a- cyclic and the following shall apply to the subtypes of IfcProduct, which have a placement:

9.1.2.1.2 Concept of local absolute placement

The IfcLocalPlacement with the PlacementRelTo attribute left unassigned defines the absolute placement of a product in relation to the world coordinate system as established by the assigned geometric representation context of the project.
The definition of the axis placement is the same as for the local relative placement (see ## 9.1.2.1.1).

Example:
Taking a similar example as for the local relative placement, several object placements are used, that are defined absolutely in regard to the world coordinate system. Only the placement objects, IfcLocalPlacement, are shown, but not the subtypes of IfcProduct, which utilizes the placement objects.
The IfcGeometricRe­presentationCon­text is given as it establishes the global (or world) coordinate system.

/* Definition of the world coordinate system */
#1=IFCGEOMETRICREPRESENTATIONCONTEXT($, '3Dmodel', 3, 1.0E-05, #2, $);
#2=IFCAXIS2PLACEMENT3D(#3, $, $);
#3=IFCCARTESIANPOINT((0.0, 0.0, 0.0));

/* Definition of the local absolute coordinate systems */
#4=IFCLOCALPLACEMENT($, #7);
#7=IFCAXIS2PLACEMENT3D(#10, $, $);
#10=IFCCARTESIANPOINT((3.8, 1.4, 0.0));

#5=IFCLOCALPLACEMENT($, #8);
#8=IFCAXIS2PLACEMENT3D(#11, #16, #17);
#11=IFCCARTESIANPOINT((1.2, 1.4, 0.0));
#16=IFCDIRECTION((0.0, 0.0, 1.0));
#17=IFCDIRECTION((0.96592, 0.25881, 0.0));

#6=IFCLOCALPLACEMENT($, #9);
#9=IFCAXIS2PLACEMENT3D(#12, #13, #14);
#12=IFCCARTESIANPOINT((2.2., 2.4, 5.0));
#13=IFCDIRECTION((1.0, 0.0, 0.0));
#14=IFCDIRECTION((0.0, 0.0, -1.0));

figure104
Figure 104 : Example of global absolute placement

9.1.2.2 Concept of placement relative to grid

The subtype IfcGridPlacement allows to definition of an object placement relative to the intersection of two grid lines, IfcGridAxis, within the same grid, IfcGrid through the IfcVirtualGri­dIntersection relation. The IfcVirtualGri­dIntersection specifies the object placement of the object coordinate system by pointing to exactly two IfcGridAxis.
The intersection point, established by the PlacementLocation, defines the Location of the object placement (which maybe offset from the exact intersection point). The X-axis orientation of the object placement defaults to the direction of the first intersection axis, if no PlacementRefDi­rection is given, otherwise it is computed by the vector between the PlacementLocation and the PlacementRefDi­rection.

figure105
Figure 105 : Definition of …

… a tady kus chybí

figure106
Figure 106 : Example for placement relative to grid

More explanations to the grid placement are later given at the description of the leaf node entity IfcGrid elsewhere in the document.

9.1.3 Concept of multiple product shape representations

Within the same object placement, a product may be represented by a single or multiple shape representations – this functionality is introduced as UoF „multiple shape representations“.
Each of the individual shape representations may refer to a different representation context and have a different representation name and type. However all geometric representation contexts are required to refer to the same global (or world) coordinate system.

figure107
Figure 107 : Definition of (multiple) shape representations

If the product has a product representation, it also has to have an object placement.
The object placement provides for the object coordinate system, in which all the geometric representation items of all shape representations are founded. For geometric representations (established by the use of IfcGeometricRe­presentationI­tem's as items for single or multiple shape representations) the subtypes IfcProductDefi­nitionShape and IfcShapeRepre­sentation have to be used.

There are two concepts which have to be supported for single and multiple representations of product shape.

9.1.3.1 Concept of product representation and product definition shape

The IfcProductRepre­sentation (or the IfcProductDefi­nitionShape as required for geometric representations) represents the container for all individual, or alternative representations of the same product.
It allows for a characterization of the product representation by a Name and for the provision of an additional Description. Currently there are no recommendations on how to use both attributes. However additional recommendations maybe be given within particular views or implementation agreements.
In general it can be said that the Name may be used as a specific identifier for the product representation as a whole (as opposed to the name of individual representations contained within the instance).
The Description may be used to add further meaningful information that characterizes the instance.

An IfcProductRepre­sentation (or the IfcProductDefi­nitionShape) is a property of IfcProduct (introduced at the IfcKernel level) that defines the geometric or topological representation of an instance of IfcProduct.
Note that the only subtype of IfcObject that can have a product representation is IfcProduct.

figure108
Figure 108 : Definition of product representation

An IfcProduct may have one or many representations. For instance, there may be a topological representation and any of several different types of geometric representation (see discussion on IfcShapeRepre­sentation below).
An instance of IfcProductRepre­sentation (or subtype) acts as a container for all of the geometric and topological representations that exist for a product.

figure109
Figure 109 : Multiple representations of a product

9.1.3.2 Concept of shape representation

Each IfcProductRepre­sentation (or subtype IfcProductDefi­nitionShape) has to have at least one IfcRepresentation (or subtype IfcShapeRepre­sentation) defined, whereby the subtype IfcProductDefi­nitionShape is required to have at least one IfcShapeRepre­sentation assigned.

Each representation may carry additional classifications provided by the Representatio­nIdentifier and the RepresentationType.
The provision of the RepresentationType is required for the subtype IfcShapeRepre­sentation. The IFC2× model describes all allowed values for the RepresentationType and makes recommendations for the use of the Representatio­nIdentifier.
Therefore both attributes should only be used to carry attribute values are described within the IFC2× specification, mainly within the geometry use sections of the individual subtypes of IfcElement.

Example:
The shape representation of a standard wall shall include the wall path and the wall body. It would require a multiple representation of the IfcProductDefi­nitionShape by assigning two instances of IfcShapeRepre­sentation.
The two attributes Representatio­nIdentifier and RepresentationType have the following values: IfcShapeRepre­sentation for the wall path:

IfcShapeRepre­sentation for the wall body:

The values for Representatio­nIdentifier and RepresentationType have to be specified either within the IFC model specification or within the specific views for implementation.
Implementations of the IFC Geometry capabilities should support these conventions.

Example:
As discussed in the previous example the following picture and the attached *.ifc file cut-out shows the multiple geometric representation of a wall, including the wall axis and the wall basis.
It should be noted, that the presentation (i.e. the line color (blue and red) and the line style (continuous and dashed)) is not currently in scope of the IFC2× based exchange.
The display of the wall is determined by the wall style settings within the various software systems, participating in the IFC based exchange.

figure110
Figure 110 : Example of multiple geometric representation of wall

#1=IFCWALLSTANDARDCASE('abcdefghijklmnopqrst01', #2, $, $, $, #3, #4, $);

/* UoF local absolute placement */
#3=IFCLOCALPLACEMENT($, #10);
#10=IFCAXIS2PLACEMENT3D(#16, $, $);
#16=IFCCARTESIANPOINT((2.000000E+00, 1.000000E+00, 0.000000E+00));

/* UoF representation context */
#12=IFCGEOMETRICREPRESENTATIONCONTEXT($, $, 3, $, #14, $);
#14=IFCAXIS2PLACEMENT3D(#15, $, $);
#15=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));

/* UoF multiple geometric representations */
#4=IFCPRODUCTDEFINITIONSHAPE($, $, (#11, #13));

/* first geometric representation for the wall axis */
#11=IFCSHAPEREPRESENTATION(#12, 'Axis', 'Curve2D', (#18));
#18=IFCTRIMMEDCURVE(#19,(#20),(#21),.T.,.CARTESIAN.);
#19=IFCLINE(#30, #31);
#30=IFCCARTESIANPOINT((0.0E+00, 0.0E+00));
#31=IFCVECTOR(#32,2.8E+00);
#32=IFCDIRECTION((1.0E+00, 0.0E+00));
#20=IFCCARTESIANPOINT((0.0E+00, 0.0E+00));
#21=IFCCARTESIANPOINT((2.80E+00, 0.0E+00));

/* second geometric representation for the wall body */
#13=IFCSHAPEREPRESENTATION(#12, 'Body', 'SweptSolid', (#22));
#22=IFCEXTRUDEDAREASOLID(#23, #26, #29, 2.80E+00);
#26=IFCAXIS2PLACEMENT3D(#28, $, $);
#28=IFCCARTESIANPOINT((0.0E+00, 0.0E+00, 0.0E+00));
#29=IFCDIRECTION((0.0E+00, 0.0E+00, 1.0E+00));
#23=IFCARBITRARYCLOSEDPROFILEDEF(.AREA., $, #40);
#40=IFCPOLYLINE((#41,#42,#43,#44,#41));
#41=IFCCARTESIANPOINT((0.0E+00, 1.0E-01));
#42=IFCCARTESIANPOINT((2.8E+00, 1.0E-01));
#43=IFCCARTESIANPOINT((2.8E+00, -1.0E-01));
#44=IFCCARTESIANPOINT((0.0E+00, -1.0E-01));

9.1.3.3 Concept of shape aspect

In addition of having only an IfcProductDefi­nitionShape at IfcProduct (or any of its subtype) which is a kind of „black-box“ container (i.e. a single semantic unit), the IfcProductDefi­nitionShape can be further semantically decomposed into shape aspects – each aspect is a part of the product representation which has a semantic meaning assigned.

figure111
Figure 111 : Definition of shape aspect

An IfcShapeAspect is a concept for grouping of representation items that represent aspects (or components) of the shape of a product. That is, a shape aspect represents a distinctive part of a product that can be explicitly addressed as a shape representation.
For instance, for an instance of IfcDoor, the shape representation of the door cill and the door swing might need to be addressed separately. Each of these can be defined as a shape aspect comprising distinct sets of geometric representation i­tems.

Note:
Still the whole shape representation of the IfcDoor is given as an IfcShapeRepre­sentation (within the Representations relationship at IfcProductDefi­nitionShape).
Therefore applications are not necessarily required to understand this additional, more granular shape aspect structure in order to represent shape representations.

figure112
Figure 112 : Addressable shape aspects of a door

Note:
The example files shows the three shape representations for the door, one for the whole, two for subsets (which does not have to be mutually exclusive nor have to sum up to the whole).

#1=IFCDOOR('abcdefghijklmnopqrst11', #2, $, $, $, #3, #100, $, $, $);
#10=IFCSHAPEASPECT((#200), ‘Door Cill’, $, .UNKNOWN., #100);
#11=IFCSHAPEASPECT((#201), ‘Door Swing’, $, .UNKNOWN., #100);

/* See elsewhere for guidance of product definition shape and shape representation */
#100=IFCPRODUCTDEFINITIONSHAPE ($, $, (#101));

/* See elsewhere for guidance of shape representation */
#101=IFCSHAPEREPRESENTATION (..); /* common shape representation of the door */
#200=IFCSHAPEREPRESENTATION (..); /* shape representation of the door cill */
#201=IFCSHAPEREPRESENTATION (..); /* shape representation of the door swing */

9.1.4 Concept of various shape representation types

Each of the IfcRepresentation, and particularly each of the IfcShapeRepre­sentation, are determined by the representation items, which are included within the Items attribute.
There are three different ways to describe the items of an representation:

For the representation of shape, topological representation items are not used directly, but only through geometric representation items.
Therefore only two UoF, the various forms of direct geometric representation and the mapped representation, are discussed here.

Example:
A B-rep of a shape uses the geometric representation item, such as the IfcFacetedBrep, which refers to one or several intermediate topological representation items, such as IfcClosedShell and IfcFace, before being geometrically established by IfcPolyLoop.

figure113
Figure 113 : Concept of shape representations

9.1.4.1 Concept of direct geometric representation

The attribute Items of IfcRepresentation (used also by IfcShapeRepre­sentation) allows to assign one or several instances of IfcRepresenta­tionItem to describe the representation. For providing the concept of „Direct geometric representation“, these instances are required to be all subtypes of IfcGeometricRe­presentationI­tem.
A further subdivision of the concept of „Direct geometric representation“ is established by the various forms of the RepresentationType (given as attribute of IfcRepresentation).

The following representation types are distinguished:

9.1.4.1.1 Concept of Curve2D representation

The representation type Curve2D is used to provide a geometric representation of a path based on a bounded curve with a parametric range.
It may only be used to provide 2D representation of a linear form (the path).

The IfcBoundedCurve should be used to provide the only item of IfcShapeRepre­sentation.Item­s.
For multi-segmented path, the IfcCompositeCurve shall be used. The Curve2D representation is used, e.g. to provide the wall path information.

A single line segment can be represented using an IfcLine, or (recommended) an IfcPolyline, referring to two IfcCartesianPo­int’s.

See example based on Figure 109 within Section ## 9.1.3.2 for an example of how to use Curve2D representations.

9.1.4.1.2 Concept of Geometric Set representation

The representation type GeometricSet is used to provide a geometric representation based on a collection of points, lines and surfaces, where no topological structure is available.
It may be used to provide either a 2D or a 3D representation of the form, where the items establishing the geometric set should be either all 2D or all 3D but not a mixture of both.

The IfcGeometricSet should be used to provide the only item of IfcShapeRepre­sentation.Item­s. An IfcGeometricSet contains one or several Elements, which are either subtypes of IfcPoint, IfcCurve or IfcSurface.

The representation type of GeometricSet is used, e.g., for the 2D representation of elements, such as furniture, equipment, distribution and building elements, or for special representations, such as the footprint representation of spaces. It also includes general 3D representations, where no solid model is given, and no topological information is available.

figure114
Figure 114 : Definition of Geometric Set representations

The use of geometric set representation for defining a 3D shape (without topological and solid information) includes the swept surface and the rectangular trimmed surface representation (mainly used for revolved surfaces with angle 360’).

Within IFC2×2 a new subtype of IfcGeometricSet has been introduced, the IfcGeometricCur­veSet.
It has an additional Where Rule, that restricts all Elements to be either points or curves, but not surfaces. This new subtype can be used to enforce a geometric set representation to be a point and curves only (e.g. a wire frame representation with no topological information).

figure115
Figure 115 : Definition of surface representations within geometric set

Example:
The geometric representation of the “thin metal” circular duct (which should be given by a surface, not by a solid model) is given by extruding the profile, IfcCircleProfi­leDef, along a depth.

The circle profile definition is a parametric profile, which is mapped into the XY plane of the position coordinate system of the swept surface and extruded (here perpendicular) to the XY plane by the depth.

figure116
Figure 116 : Example of Geometric Set representation of a duct (using swept surface)

#1=IFCFLOWSEGMENT('abcdefghijklmnopqrst12', #2, $, $, $, #3, #4, $, .FLUIDFLOW.,.DUCTSEGMENT.);
#2=IFCOWNERHISTORY(#6, #7, .READWRITE., .NOCHANGE., $, $, $, 978921854);

/* UoF local absolute placement */
#3=IFCLOCALPLACEMENT($, #10);
#10=IFCAXIS2PLACEMENT3D(#16, $, $);
#16=IFCCARTESIANPOINT((2.000000E+00, 1.000000E+00, 0.000000E+00));

/* UoF representation context */
#12=IFCGEOMETRICREPRESENTATIONCONTEXT($, $, 3, $, #14, $);
#14=IFCAXIS2PLACEMENT3D(#15, $, $);
#15=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));

/* geometric set representation for the duct segment */
#4=IFCPRODUCTDEFINITIONSHAPE($, $, (#11));
#11=IFCSHAPEREPRESENTATION(#12, '', 'GeometricSet', (#13));
#12=IFCGEOMETRICREPRESENTATIONCONTEXT($, $, 3, $, #14, $);
#14=IFCAXIS2PLACEMENT3D(#15, $, $);
#15=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));
#16=IFCCARTESIANPOINT((2.000000E+00, 1.000000E+00, 0.000000E+00));

/* use of swept surface for the geometric set */
#13=IFCGEOMETRICSET((#17));
#17=IFCSURFACEOFLINEAREXTRUSION(#18, #21, #25, 2.000000E+00);
#18=IFCCIRCLEPROFILEDEF(.CURVE., $, #19, 1.000000E+00);
#19=IFCAXIS2PLACEMENT2D(#20, $);
#20=IFCCARTESIANPOINT((1.000000E+00, 0.000000E+00));
#21=IFCAXIS2PLACEMENT3D(#22, #23, #24);
#22=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));
#23=IFCDIRECTION((0.000000E+00, 1.000000E+00, 0.000000E+00));
#24=IFCDIRECTION((0.000000E+00, 0.000000E+00, 1.000000E+00));
#25=IFCDIRECTION((0.000000E+00, 0.000000E+00, 1.000000E+00));

9.1.4.1.2.1 Concept of Geometric Curve Set representation

The representation type GeometricCurveSet is used to provide a geometric representation based on a collection of points and lines, where no topological structure is available.
It may be used to provide either a 2D or a 3D representation of the form, where the items establishing the geometric set should be either all 2D or all 3D but not a mixture of both.

The representation type GeometrcCurveSet therefore further restricts the type GeometricSet, its use is foreseen in future, if further distinctions of geometric sets are required by implementations. Currently the use of geometric curve set is proposed for all cases of point and line representations, that provides 2D representations of elements.

Since IFC2×2 the new subtype IfcGeometricCur­veSet shall be used to express a collection of points and curves only.

Example:
In many cases simple 2D representations of furniture and equipment are sufficient, or may be given in addition to the 3D surface or solid model representations.
In this example, the shape of a furniture of type ‚Chair‘ is represented as a 2D geometric set, established within the XY plane of the object coordinate system.
The geometric set contains a set of line elements, provided as IfcPolyline's.

figure117
Figure 117 : Example of Geometric Curve Set representation of furniture

#1=IFCFURNITUREELEMENT('abcdefghijklmnopqrst02', #2, $, $, $, #3, #4, $);
#2=IFCOWNERHISTORY(#6, #7, .READWRITE., .NOCHANGE., $, $, $, 978921854);

/* UoF local absolute placement */
#3=IFCLOCALPLACEMENT($, #10);
#10=IFCAXIS2PLACEMENT3D(#16, $, $);
#16=IFCCARTESIANPOINT((2.000000E+00, 1.000000E+00, 0.000000E+00));

/* UoF representation context */
#12=IFCGEOMETRICREPRESENTATIONCONTEXT($, $, 3, $, #14, $);
#14=IFCAXIS2PLACEMENT3D(#15, $, $);
#15=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));

/* geometric set representation for the furniture */
#4=IFCPRODUCTDEFINITIONSHAPE($, $, (#11));
#11=IFCSHAPEREPRESENTATION(#12, '', 'GeometricCurveSet', (#18));
#18=IFCGEOMETRICCURVESET((#19, #24));

/* #18=IFCGEOMETRICSET((#19, #24)); -- until IFC2x */
#19=IFCPOLYLINE((#20, #21, #22, #23, #20));
#20=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));
#21=IFCCARTESIANPOINT((0.700000E+00, 0.000000E+00, 0.000000E+00));
#22=IFCCARTESIANPOINT((0.700000E+00, 0.600000E+00, 0.000000E+00));
#23=IFCCARTESIANPOINT((0.000000E+00, 0.600000E+00, 0.000000E+00));
#24=IFCPOLYLINE((#25, #26));
#25=IFCCARTESIANPOINT((0.100000E+00, 0.000000E+00, 0.000000E+00));
#26=IFCCARTESIANPOINT((0.100000E+00, 0.600000E+00, 0.000000E+00));

9.1.4.1.3 Concept of Surface Model representation

The representation type SurfaceModel is used to provide a geometric representation based on a collection of faces, provided by face bounds based on poly loops, where a topological structure is available.
It may be used to provide a 3D representation of the form. It is normally used to describe the (explicit) 3D form of an object, where no volume information is available or desired.

NOTE: Often the rigid solid B-rep representation is not applicable, e.g. for “thin metal” structures, as cupper plates, etc. where an open shell is more applicable to describe the form, or the B-rep representation can not be satisfied by applications without a sophisticated geometry engine.
In these cases the SurfaceModel may provide an alternative to exchange the 3D explicit shape.

The representation type SurfaceModel is used, e.g., for the shape representation of distribution (flow) elements, metal plates and other elements.

figure118
Figure 118 : Definition of Surface Model representations

NOTE:
Topological representation items, such as IfcOpenShell, IfcClosedShell, and IfcConnectedFaceSet are not allowed to be immediately referenced by the Items attribute of IfcShapeRepre­sentation.
It is required, that an intermediate geometric representation item, either IfcFaceBasedSur­faceModel or IfcShellBased­SurfaceModel, has to be used.

Example:
Often the use of surface models are more appropriate for building service equipment, although it would not allow clash detection based on the volume of elements. Surface models my also be used for terrain models.
The example shows a simple surface model of a duct, given by the IfcDistributi­onFlowSegment.

figure119
Figure 119 : Example of Surface Model representation of a piece of duct

NOTE:
Within the example, a face based surface model had been used, where also a shell based surface model (based on an open shell) would have been available. The decision was arbitrary for the example.

#1=IFCFLOWSEGMENT('abcdefghijklmnopqrst02', #2, $, $, $, #3, #4, $);
#2=IFCOWNERHISTORY(#6, #7, .READWRITE., .NOCHANGE., $, $, $, 978921854);

/* UoF local absolute placement */
#3=IFCLOCALPLACEMENT($, #10);
#10=IFCAXIS2PLACEMENT3D(#16, $, $);
#16=IFCCARTESIANPOINT((2.000000E+00, 1.000000E+00, 0.000000E+00));

/* UoF representation context */
#12=IFCGEOMETRICREPRESENTATIONCONTEXT($, $, 3, $, #14, $);
#14=IFCAXIS2PLACEMENT3D(#15, $, $);
#15=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));

/* surface model representation for the duct */
#4=IFCPRODUCTDEFINITIONSHAPE($, $, (#11));
#11=IFCSHAPEREPRESENTATION(#12, '', 'SurfaceModel', (#18));
#18=IFCFACEBASEDSURFACEMODEL((#19));
#19=IFCCONNECTEDFACESET((#23, #21, #22, #20));
#20=IFCFACE((#24));
#21=IFCFACE((#25));
#22=IFCFACE((#26));
#23=IFCFACE((#27));
#24=IFCFACEOUTERBOUND(#28, .T.);
#25=IFCFACEOUTERBOUND(#29, .T.);
#26=IFCFACEOUTERBOUND(#30, .T.);
#27=IFCFACEOUTERBOUND(#31, .T.);
#28=IFCPOLYLOOP((#40, #41, #42, #43));
#29=IFCPOLYLOOP((#50, #51, #52, #53));
#30=IFCPOLYLOOP((#60, #61, #62, #63));
#31=IFCPOLYLOOP((#70, #71, #72, #73));
#40=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));
#41=IFCCARTESIANPOINT((1.200000E+00, 0.000000E+00, 0.000000E+00));
#42=IFCCARTESIANPOINT((1.200000E+00, 0.000000E+00, 6.000000E-01));
#43=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 6.000000E-01));
#50=IFCCARTESIANPOINT((0.000000E+00, 6.000000E-01, 0.000000E+00));
#51=IFCCARTESIANPOINT((0.000000E+00, 6.000000E-01, 6.000000E-01));
#52=IFCCARTESIANPOINT((1.200000E+00, 6.000000E-01, 6.000000E-01));
#53=IFCCARTESIANPOINT((0.000000E+00, 6.000000E-01, 0.000000E+00));
#60=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 6.000000E-01));
#61=IFCCARTESIANPOINT((1.200000E+00, 0.000000E+00, 6.000000E-01));
#62=IFCCARTESIANPOINT((1.200000E+00, 6.000000E-01, 6.000000E-01));
#63=IFCCARTESIANPOINT((0.000000E+00, 6.000000E-01, 6.000000E-01));
#70=IFCCARTESIANPOINT((0.000000E+00, 0.000000E+00, 0.000000E+00));
#71=IFCCARTESIANPOINT((0.000000E+00, 6.000000E-01, 0.000000E+00));
#72=IFCCARTESIANPOINT((1.200000E+00, 6.000000E-01, 0.000000E+00));
#73=IFCCARTESIANPOINT((1.200000E+00, 6.000000E-01, 6.000000E-01));

9.1.4.1.4 Concept of Solid Model representation

A solid model is the most complete representation of the nominal shape of a product.
It determines that all points in the interior are connected and that any point in the domain can be classified as being inside, outside or on the boundary of a solid.

Within the IFC2× model there are three different types of solid model representations defined:

The three different specializations of the SolidModel representation type then require the correct usage of the different subtypes of IfcSolidModel to provide the shape representation of the product.

figure120
Figure 120 : Definition of IfcSolidModel with subtypes (without CSG)

The IfcSweptAreaSolid, when referencing parameterized profile definitions, is normally used as the preferred geometric representation for building elements.

9.1.4.1.4.1 Concept of B-rep representation

The representation type ‚Brep‘ is used to provide a geometric representation based on a collection of faces, provided by face bounds based on poly loops, where a topological structure is available, and the interior (or volume) is defined.
Therefore the topological normal of the B-rep at each point of its boundary is the surface normal direction that points away from the solid material. Therefore all faces needs to be (explicitly or implicitly) oriented.
All Euler formulas need to the satisfied for the B-rep. It may be used to provide a 3D representation of the form. It is normally used to describe the (explicit) 3D form of an object, where volume information is available or desired.
The exchange of B-rep shape allows for the exchange of (almost) every shape for elements in building & construction.

B-rep representations are restricted to faceted boundary representations only within the IFC2× model. Therefore the only form for face bounds are polyloops, curvatures have to be faceted using approximation techniques.

B-rep representation requires the complete definition of the boundaries of the shape. E.g. all edges of the B-rep are shared by (at least) two faces in the closed shell. In order to determine that the shell is closed and the same edge is referenced twice, the coordinates of the vertices have to be coincident.

This can either be achieved by sharing the same instance of the IfcCartesianPoint by two or more face bounds (provided through the IfcPolyLoop entity), or by using identical copies of the IfcCartesianPoint.

In the latter case, the Precision attribute of the IfcGeometricRe­presentationCon­text determines, which is the maximum difference, under which two points are still be considered to be identical.

Example:
The standard geometric representation of any (non-standard) building element, provided by the IfcBuildingEle­mentProxy, is the Brep representation. The following example shows the Brep shape representation of a proxy with the shape of a box.

figure121
Figure 121 : Example of B-rep Model representation of a proxy

NOTE:
The example shows the reference of polyloop vertices by multiple instance reference.^16

#1=IFCBUILDINGELEMENTPROXY('abcdefghijklmnopqrst02', #2, 'Box', $, $, #3, #4, $,$);
#2=IFCOWNERHISTORY(#6, #7, .READWRITE., .NOCHANGE., $, $, $, 978921854);

/* UoF local absolute placement */
#3=IFCLOCALPLACEMENT($, #10);
#10=IFCAXIS2PLACEMENT3D(#16, $, $);
#16=IFCCARTESIANPOINT((2.0, 1.0, 0.0));

/* UoF representation context */
#12=IFCGEOMETRICREPRESENTATIONCONTEXT($, $, 3, 1.0E-06, #14, $);
#14=IFCAXIS2PLACEMENT3D(#15, $, $);
#15=IFCCARTESIANPOINT((0.0, 0.0, 0.0));

/* b-rep model representation for the duct */
#4=IFCPRODUCTDEFINITIONSHAPE($, $, (#11));
#11=IFCSHAPEREPRESENTATION(#12, '', 'Brep', (#174));
#174=IFCFACETEDBREP(#173);
#173=IFCCLOSEDSHELL((#148,#151,#154,#157,#160,#163,#166,#169,#172));

Note16
In contrary to the previous examples, this example uses „normal“ REAL value formats, instead of the notation with exponents in other examples. Both are valid instantiations of the REAL data type and may be used.

#132=IFCCARTESIANPOINT((0.25,0.25,1.5));
#133=IFCCARTESIANPOINT((1.,0.25,1.5));
#134=IFCCARTESIANPOINT((1.,1.,1.5));
#135=IFCCARTESIANPOINT((0.25,1.,1.5));
#136=IFCCARTESIANPOINT((0.25,0.25,2.5));
#137=IFCCARTESIANPOINT((1.,0.25,2.5));
#138=IFCCARTESIANPOINT((0.25,1.,2.5));
#139=IFCCARTESIANPOINT((-1.,-1.,0.));
#140=IFCCARTESIANPOINT((1.,-1.,0.));
#141=IFCCARTESIANPOINT((1.,1.,0.));
#142=IFCCARTESIANPOINT((-1.,1.,0.));
#143=IFCCARTESIANPOINT((-1.,-1.,2.5));
#144=IFCCARTESIANPOINT((1.,-1.,2.5));
#145=IFCCARTESIANPOINT((-1.,1.,2.5));
#146=IFCPOLYLOOP((#138,#136,#132,#135));
#147=IFCFACEOUTERBOUND(#146,.T.);
#148=IFCFACE((#147));
#149=IFCPOLYLOOP((#136,#137,#133,#132));
#150=IFCFACEOUTERBOUND(#149,.T.);
#151=IFCFACE((#150));
#152=IFCPOLYLOOP((#132,#133,#134,#135));
#153=IFCFACEOUTERBOUND(#152,.T.);
#154=IFCFACE((#153));
#155=IFCPOLYLOOP((#137,#136,#138,#145,#143,#144));
#156=IFCFACEOUTERBOUND(#155,.T.);
#157=IFCFACE((#156));
#158=IFCPOLYLOOP((#138,#135,#134,#141,#142,#145));
#159=IFCFACEOUTERBOUND(#158,.T.);
#160=IFCFACE((#159));
#161=IFCPOLYLOOP((#133,#137,#144,#140,#141,#134));
#162=IFCFACEOUTERBOUND(#161,.T.);
#163=IFCFACE((#162));
#164=IFCPOLYLOOP((#143,#145,#142,#139));
#165=IFCFACEOUTERBOUND(#164,.T.);
#166=IFCFACE((#165));
#167=IFCPOLYLOOP((#144,#143,#139,#140));
#168=IFCFACEOUTERBOUND(#167,.T.);
#169=IFCFACE((#168));
#170=IFCPOLYLOOP((#140,#139,#142,#141));
#171=IFCFACEOUTERBOUND(#170,.T.);
#172=IFCFACE((#171));

9.1.4.1.4.2 Concept of Swept Solid representation

The representation type SweptSolid is used to provide a geometric representation based on sweeping a profile (given by a planar bounded area). There are two different types of sweeping operations:

The position of the swept body depends on the axis placement of the swept area solid, where the XY plane of the placement is used to place the profile.

9.1.4.1.4.3 Concept of CSG representation

The representation type CSG is used to provide a geometric representation based on the CSG model of the represented object. A solid represented as a CSG model is defined by a collection of so-called primitive solids, combined using regularized Boolean operations.

The use of CSG is currently restricted to the Boolean operations on other solid models, as no CSG primitives are included in the IFC2× specification.
The provision of CSG representations mainly allows for clipping operations between swept area solids and half space solids.

figure122
Figure 122 : Definition of Boolean results

NOTE:
Current Geometry use definitions do not foresee the use of other Boolean operations, than the clipping (expressed by a Boolean difference), therefore no Boolean unions or intersections are momentarily used.

9.1.4.1.4.3.1 Con­cept of Clipping representation

The representation type Clipping is used to provide a geometric representation based on the CSG model of the represented object, where the first operand is a solid model, or another Boolean result within the CSG tree and the second operand is a half space solid.
The Boolean operator is always DIFFERENCE.

The representation type Clipping is normally used to clip part of the solid (given by a swept area solid), whereas several clippings allowed within the CSG tree. The only representation item within the list of Items is the IfcBooleanClip­pingResult.

ENTITY IfcBooleanClippingResult
SUBTYPE OF (IfcBooleanResult);
WHERE
WR1: ('IFCGEOMETRICMODELRESOURCE.IFCSWEPTAREASOLID' IN TYPEOF(FirstOperand)) OR
('IFCGEOMETRICMODELRESOURCE.IFCBOOLEANCLIPPINGRESULT' IN TYPEOF(FirstOperand));
WR2: ('IFCGEOMETRICMODELRESOURCE.IFCHALFSPACESOLID' IN TYPEOF(SecondOperand));
WR3: Operator = DIFFERENCE;
END_ENTITY;

The where rules restrict the clipping to proper Boolean operands and operator. The following example shows the use of clipping for a wall body. The wall body is represented by a swept solid (as explained in ## 9.1.4.1.4.2) and the clipping by an IfcHalfSpaceSolid. There are two different types of clipping solids, the unlimited IfcHalfSpaceSolid (or the computationally optimized IfcBoxedHalfSpace) and the limited IfcPolygonalBou­ndedHalfSpace.

figure123
Figure 123 : Definition of half space solids

Example shows a clipped wall, based on the example given in Figure 10## 9.

figure124
Figure 124 : Use of clipping for a wall body

The IFC file would look like:

#1=IFCWALLSTANDARDCASE('abcdefghijklmnopqrst01', #2, $, $, $, #3, #4, $);
#3=IFCLOCALPLACEMENT($, #10);
#4=IFCPRODUCTDEFINITIONSHAPE($, $, (#11, #13));
#10=IFCAXIS2PLACEMENT3D(#16, $, $);
#16=IFCCARTESIANPOINT((2.0E+00, 1.0E+00, 0.0E+00));
#12=IFCGEOMETRICREPRESENTATIONCONTEXT($, $, 3, $, #14, $);
#14=IFCAXIS2PLACEMENT3D(#15, $, $);
#15=IFCCARTESIANPOINT((0.0E+00, 0.0E+00, 0.0E+00));

/* shape representation of the wall axis */
#11=IFCSHAPEREPRESENTATION(#12, 'Axis', 'Curve2D', (#18));
#18=IFCTRIMMEDCURVE(#19,(#20),(#21),.T.,.CARTESIAN.);
#19=IFCLINE(#30, #31);
#30=IFCCARTESIANPOINT((0.0E+00, 0.0E+00));
#31=IFCVECTOR(#32,2.8E+00);
#32=IFCDIRECTION((1.0E+00, 0.0E+00));
#20=IFCCARTESIANPOINT((0.0E+00, 0.0E+00));
#21=IFCCARTESIANPOINT((2.80E+00, 0.0E+00));

/* shape representation of the clipped body */
#13=IFCSHAPEREPRESENTATION(#12, 'Body', 'Clipping', (#50));
#50=IFCBOOLEANCLIPPINGRESULT(.DIFFERENCE., #22, #51);

/* geometric representation of the extruded solid */
#22=IFCEXTRUDEDAREASOLID(#23, #26, #29, 2.80E+00);
#26=IFCAXIS2PLACEMENT3D(#28, $, $);
#28=IFCCARTESIANPOINT((0.0E+00, 0.0E+00, 0.0E+00));
#29=IFCDIRECTION((0.0E+00, 0.0E+00, 1.0E+00));
#23=IFCARBITRARYCLOSEDPROFILEDEF(.AREA., $, #40);
#40=IFCPOLYLINE((#41,#42,#43,#44,#41));
#41=IFCCARTESIANPOINT((0.0E+00, 1.0E-01));
#42=IFCCARTESIANPOINT((2.8E+00, 1.0E-01));
#43=IFCCARTESIANPOINT((2.8E+00, -1.0E-01));
#44=IFCCARTESIANPOINT((0.0E+00, -1.0E-01));

/* geometric representation of the clipping plane */
#51=IFCHALFSPACESOLID(#52, .F.);
#52=IFCPLANE(#53);
#53=IFCAXIS2PLACEMENT3D(#54, #55, #56);
#54=IFCCARTESIANPOINT((0.0E+00, 0.0E+00, 2.0E+00));
#55=IFCDIRECTION((0.0E+00, -0.7070106E+00, 0.7070106E+00));
#56=IFCDIRECTION((1.0E+00, 0.0E+00, 0.0E+00));

9.1.4.1.5 Concept of Bounding Box representation

9.1.4.1.6 Concept of Sectioned Spine representation

9.1.4.2 Mapped representations

The IFC2× specification allows for the use of mapped representations in order to reuse the shape of a particular object type at all particular instances of this object.

The concept of mapped representations can be compared with the concept of a block17 definition and block insertions within most of CAD systems.
The block contains geometric items within a local (block) coordinate system, which can be inserted one or several times into the actual drawing model by using a block reference, including a Cartesian transformation operator, which normally includes scaling.

A similar concept is used in IFC2×, where IfcRepresenta­tionMap represents the block definition, and IfcMappedItem represents the block insertion. The IfcRepresenta­tionMap can include any representation by containing one or several IfcGeometricRe­presentationI­tem.

figure125
Figure 125 : Definition of mapped items and representation maps

NOTE:
Similar as in CAD systems, the extensive use of representation maps helps to reduce the file size of the IFC exchange and could help to improve the performance of the received file, if the reading application does convert the representation maps into its internal block/cell/macro structure.

The MappedRepresen­tation is usually of type IfcShapeRepre­sentation (although in principle it could also be of type IfcMappedItem, and thereby it provides for the capability of nested blocks – but this is not further elaborated here). Any RepresentationType (as discussed in ## 9.1.4.1) can be used as a MappedRepresen­tation.

Example:
A sample use of representation maps shows the reuse of geometry for a (very simplified) flow terminal, like an air outlet. It reuses the geometry as shown in Figure 118.

Instead of assigning the same geometry item instances to all instances of the various air outlets, all reference it by sharing the same representation map.
The example includes mapped representations using uniform scaling and non-uniform scaling of the original representation map. 17 Beside the term „block“, other terms, like cell, macro or library part are used to denote the same or similar concepts

figure126
Figure 126 : Example for mapped items

The three instances of IfcFlowSegment uses different IfcMappedItem­.MappingTarget.
Segment [1] has an uniform scale of 1.0, segment [2] a non-uniform scale of 2.0,1.0,1.0 and segment [3] an uniform scale of 1.5.

/* placement and block insertion for the first flow segment */
#10=IFCFLOWSEGMENT('abcdefghijklmnopqrst02', #1000, $, $, $, #11, #14, $);
#11=IFCLOCALPLACEMENT($, #12);
#12=IFCAXIS2PLACEMENT3D(#13, $, $);
#13=IFCCARTESIANPOINT((2.0E+00, 1.0E+00, 0.0E+00));
#14=IFCPRODUCTDEFINITIONSHAPE($, $, (#15));
#15=IFCSHAPEREPRESENTATION(#100, '', 'MappedRepresentation', (#16));
#16=IFCMAPPEDITEM(#105,#17);
#17=IFCCARTESIANTRANSFORMATIONOPERATOR3D($,$,#18,$,$);
#18=IFCCARTESIANPOINT((0.0E+00, 0.0E+00, 0.0E+00));

/* placement and block insertion for the second flow segment */
#20=IFCFLOWSEGMENT('abcdefghijklmnopqrst03', #1000, $, $, $, #21, #24, $);
#21=IFCLOCALPLACEMENT($, #22);
#22=IFCAXIS2PLACEMENT3D(#23, $, $);
#23=IFCCARTESIANPOINT((1.0E+00, 2.0E+00, 1.0E+00));
#24=IFCPRODUCTDEFINITIONSHAPE($, $, (#25));
#25=IFCSHAPEREPRESENTATION(#100, '', 'MappedRepresentation', (#26));
#26=IFCMAPPEDITEM(#105,#27);
#27=IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM($,$,#28,2.0,$,1.0,1.0);
#28=IFCCARTESIANPOINT((0.0E+00, 0.0E+00, 0.0E+00));

/* placement and block insertion for the third flow segment */
#30=IFCFLOWSEGMENT('abcdefghijklmnopqrst03', #1000, $, $, $, #31, #34, $);
#31=IFCLOCALPLACEMENT($, #32);
#32=IFCAXIS2PLACEMENT3D(#33, $, $);
#33=IFCCARTESIANPOINT((2.0E+00, 1.0E+00, 0.0E+00));
#34=IFCPRODUCTDEFINITIONSHAPE($, $, (#35));
#35=IFCSHAPEREPRESENTATION(#100, '', 'MappedRepresentation', (#36));
#36=IFCMAPPEDITEM(#105,#37);
#37=IFCCARTESIANTRANSFORMATIONOPERATOR3D($,$,#38,1.5,$);
#38=IFCCARTESIANPOINT((0.0E+00, 0.0E+00, 0.0E+00));

/* shared definition of the block */
#105=IFCREPRESENTATIONMAP(#106,#111);
#106=IFCAXIS2PLACEMENT3D(#107, $, $);
#107=IFCCARTESIANPOINT((0.0E+00, 0.0E+00, 0.0E+00));
#111=IFCSHAPEREPRESENTATION(#100, '', 'SurfaceModel', (#118));
#118=IFCFACEBASEDSURFACEMODEL((#119));
#119=IFCCONNECTEDFACESET((#123, #121, #122, #120));
/* further geometry definition skipped */

9.2 Concept of 2D representations and presentations

The new IFC2×2 provides for the capability to capture and exchange also 2D representations, not only geometric items (which had been available before) but also annotation items, such as text, hatching, tiling, dimensioning.
In addition it offers a range of presentation capabilities to describe the system (or appearance) of symbols, curves, surfaces, filled areas and text.

The IFC2×2 model therefore allows to include all geometric and graphical content which is part of the model space18, i.e. given within a single geometric representation context and not subjected to any projection. The paper space, i.e. the projection by a camera model onto one or several 2D sheets, and the additional annotations of such a paper space are both out of scope for IFC2×2. 2D representations and presentations can be used for:

The 2D representations and presentations can be given as a default 2D representation to each semantic object or annotation, or can be defined scale and projection dependent.
The same geometric representation can have multiple presentations, different for selected scale and projection specific geometric representation contexts. This provides for the capability to handle “multi-view blocks” or “view dependent macros, or cells” which are now part of modern CAD systems.

Note:
In order to offer backward compatibility with existing IFC2× applications, complying to the IFC2× coordination view, the provision of presentation information for semantic objects shall not interfere with the established concept of shape representation.

The usage of all new 2D drafting capabilities, that have been added within the IFC2×2 model, has to follow the same principles, as the general geometric representations, introduced in section 2.

The next section describes the principle strategy to include the presentation capabilities in a backward compatible fashion in order to guarantee the platform stability of the IFC2× platform. The Figure 126 shows the new entities introduced in IFC2×2 by using the brown color filling.

18 The model space is used here to differentiate it from the 2D projection, often referred to as paper space or plots. The model space is characterized that it does not have an original scale and refers to a single world coordinate system.

figure127
Figure 127 : entities for the presentation model of IFC2×2

9.2.1 Presentation of semantic objects

Each representation is included (or encapsulated – following the object-oriented principles) within the definition of an individual semantic object

Each geometric representation (IfcShapeRepre­sentation) is defined in its own object coordinate system, in the case of product occurrences, the object coordinate system is placed through a local placement (IfcObjectPla­cement) either directly into the world coordinate system, or through some intermediate object placements . Each semantic object can have zero, one or many geometric representations, each being contained in a separate instance of IfcShapeRepre­sentation, but all are placed by a single instance of IfcObjectPlacement.

In order to maintain backward compatibility, each subtype of IfcProduct (with the exception of IfcAnnotation) should have at least one IfcShapeRepre­sentation within the List of IfcProductDefi­nitionShape.Re­presentations. In addition to that, it may have zero, one or many IfcStyledRepre­sentation, each including one or more subtypes of IfcStyledItem.

The IfcStyledItem is the container for a styled representation (i.e. a representation with presentation information). It may contain IfcGeometricRe­presentationI­tem’s within its list of Items, or may reference IfcGeometricRe­presentationI­tem’s from another shape representation of the same product. The following gives a simple example for a wall, having shape representations and a presentation information for the axis (given separately to maintain backward compatibility).

Note:
The surface color is only partially shown, but the example uses a unique color (R:247, G:198, B:0) for the whole body surface and a unique edge color (R:179 , G:179, B:179) for the wall.

figure128
Figure 128 : Representation of the wall example

/* wall object with local placement and relationships */
#53=IFCWALLSTANDARDCASE('0vZnM3yZjD48ZdN7dQ17oA',#16,$,'IfcWall #1',$,#28,#37,$);
#59=IFCRELCONTAINEDINSPATIALSTRUCTURE('2$WrbX8KbDhRdQlWgOqya4',#16,$,$,(#53),#23);
#58=IFCRELASSOCIATESMATERIAL('257hs0LEjCXB2lXfXjwIIL',#16,$,$,(#53),#57);
#37=IFCPRODUCTDEFINITIONSHAPE($,$,(#36,#52));
#28=IFCLOCALPLACEMENT(#22,#27);
#27=IFCAXIS2PLACEMENT3D(#24,#25,#26);
#24=IFCCARTESIANPOINT((2.,1.,0.));
#25=IFCDIRECTION((0.,0.,1.));
#26=IFCDIRECTION((1.,0.,0.));

/* first representation - wall axis */
#36=IFCSHAPEREPRESENTATION(#11,'Axis','GeometricSet',(#35));
#35=IFCTRIMMEDCURVE(#32,(IFCPARAMETERVALUE(0.),#33),(IFCPARAMETERVALUE(1.),#34),.T.,
.CARTESIAN.);
#32=IFCLINE(#29,#31);
#29=IFCCARTESIANPOINT((0.,0.));
#31=IFCVECTOR(#30,2.8);
#30=IFCDIRECTION((1.,0.));
#33=IFCCARTESIANPOINT((0.,0.));
#34=IFCCARTESIANPOINT((2.8,0.));

/* second representation - wall extrusion of a profile */
#52=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#50));
#50=IFCEXTRUDEDAREASOLID(#44,#48,#49,2.8);
#44=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#43);
#43=IFCPOLYLINE((#38,#39,#40,#41,#42));
#38=IFCCARTESIANPOINT((0.,0.1));
#39=IFCCARTESIANPOINT((0.,-0.1));
#40=IFCCARTESIANPOINT((2.8,-0.1));
#41=IFCCARTESIANPOINT((2.8,0.1));
#42=IFCCARTESIANPOINT((0.,0.1));
#48=IFCAXIS2PLACEMENT3D(#45,#46,#47);
#45=IFCCARTESIANPOINT((0.,0.,0.));
#46=IFCDIRECTION((0.,0.,1.));
#47=IFCDIRECTION((1.,0.,0.));
#49=IFCDIRECTION((0.,0.,1.));

/* styled representation - presentation for axis */
#52=IFCSTYLEDREPRESENTATION(#12,'AxisStyle','',(#107));
#107=IFCANNOTATIONCURVEOCCURRENCE(#35,(#108),'');
#108=IFCPRESENTATIONSTYLEASSIGNMENT((#109));

/* styled representation - presentation for body */
#62=IFCSTYLEDREPRESENTATION(#13,'BodyStyle','',(#120));
#120=IFCANNOTATIONSURFACEOCCURRENCE(#50,(#121),'');
#121=IFCPRESENTATIONSTYLEASSIGNMENT((#122,#132));

/* curve style for axis - maybe shared */
#109=IFCCURVESTYLE($,#110,$,#115);
#110=IFCCURVESTYLEFONTANDSCALING('',#111,0.01);
#111=IFCCURVESTYLEFONT('Strichpunkt',(#112,#113));
#112=IFCCURVESTYLEFONTPATTERN(6.27,6.26);
#113=IFCCURVESTYLEFONTPATTERN(0.02,6.26);
#114=IFCCURVESTYLEFONTPATTERN(6.27,0.);
#115=IFCDRAUGHTINGPREDEFINEDCOLOUR('red');

/* curve style for body - maybe shared */
#132=IFCCURVESTYLE($,#133,$,#134);
#133=IFCDRAUGHTINGPREDEFINEDCURVEFONT('continuous');
#134=IFCCOLOURRGB(0.7019607843,0.7019607843,0.7019607843);

/* surface style for body - maybe shared */
#122=IFCSURFACESTYLE(.BOTH.,$,$,(#123));
#123=IFCSURFACESTYLESHADING(#124);
#124=IFCCOLOURRGB(0.9686274509,0.7764705882,0.);

/* assignment to layer structure */
#221=IFCPRESENTATIONLAYERASSIGNMENT('A-WALL-AXIS','Wall Axis',(#35));
#222=IFCPRESENTATIONLAYERASSIGNMENT('A-WALL-EXT','External Walls (Body)',(#50));

/* associated material and wall layering information */
#57=IFCMATERIALLAYERSETUSAGE(#56,.AXIS2.,.POSITIVE.,-0.1);
#56=IFCMATERIALLAYERSET((#55),'Single Layer Concrete');
#55=IFCMATERIALLAYER(#54,0.2,.F.);
#54=IFCMATERIAL('Single Layer Concrete');

/* different representation contexts for multiple representations */
/* master geometric representation context */
#11=IFCGEOMETRICREPRESENTATIONCONTEXT('Model','',3,0.0000001,#10,$);
#10=IFCAXIS2PLACEMENT3D(#7,#8,#9);
#7=IFCCARTESIANPOINT((0.,0.,0.));
#8=IFCDIRECTION((0.,0.,1.));
#9=IFCDIRECTION((1.,0.,0.));

/* geometric representation sub context for the single line axis representation */
#12=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('','Graph',*,*,*,*,#11,$,.GRAPH_VIEW.,$);
#13=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('','Model',*,*,*,*,#11,$,.MODEL_VIEW.,$);

9.2.2 Geometric representation and presentation of annotations

The new IFC2×2 entity IfcAnnotation is used to encapsulate all “free” or “unassigned” geometries, that not directly relate to a semantic object (i.e. any specific subtype of IfcElement or any IfcProxy). Examples are free text and annotations, dimensions, etc. not associated to a single object

The IfcAnnotation, as subtype of IfcProduct, does have the same units of functionality as other IfcElement’s but with some practical restrictions (e.g. no typing, no decomposition).
All instances of IfcAnnotation can therefore perform:

The IfcAnnotation can be seen as a container object, that includes a single or many annotations, that are placed within the local coordinate system of a spatial structure element (usually the building story), and that have one to many representations and presentations of its content, which could be specific to a certain scale or projection, as expressed by the IfcGeometricRe­presentationSub­Context.

The annotations, that cannot be assigned to object representations, are group according to a spatial structure. Usually it would be IfcBuildingStorey, or IfcBuilding, or IfcSite. The local placement of the IfcAnnotation is then relative to these spatial structure elements, or to the global world coordinate system. If a 2D local placement is used, it is placed within the XY plane of the referenced coordinate system.

Example:
The following simple example shows two geometric representation items (a line and a circle) that have curve presentation properties (color and line type)and are grouped an annotation of the building storey.
Both color and line type are given explicitly (i.e. not through layer setting).

figure129
Figure 129 : Example of annotation object

The examples shows the assignment of the “free lines” to an annotation object for the whole building storey. The geometric representation items are grouped as a shape representation (for IFC2× upward compatibility) and the presentation information is given as an IfcStyledRepre­sentation.
In this example, only one presentation (applicable to the model) is given, which is independent to scale and projection.

/* annotation object with local placement and containment */
#100=IFCANNOTATION('0vZnM3yZjD48ZdN7dQ17oA',#2,$,$,$,#102,$);
#101=IFCRELCONTAINEDINSPATIALSTRUCTURE('2$WrbX8KbDhRdQlWgOqya4',#2,$,$,(#100),#31);
#102=IFCLOCALPLACEMENT(#32,#103);
#103=IFCAXIS2PLACEMENT3D(#104,$,$);
#104=IFCCARTESIANPOINT((0.,0.,0.));

/* shape representation of annotation */
#110=IFCSHAPEREPRESENTATION(#21,'','',(#112,#116));
#112=IFCPOLYLINE((#113,#114,#115));
#113=IFCCARTESIANPOINT((0.,3.,0.));
#114=IFCCARTESIANPOINT((5.,3.,0.));
#115=IFCCARTESIANPOINT((5.,5.,0.));
#116=IFCCIRCLE(#117,1.);
#117=IFCAXIS2PLACEMENT3D(#118,$,$);
#118=IFCCARTESIANPOINT((5.,6.,0.));
/* presentation of annotation -general for model- */
#120=IFCSTYLEDREPRESENTATION(#23,'','',(#121,#123));
#121=IFCANNOTATIONCURVEOCCURRENCE(#112,(#122),'');
#122=IFCPRESENTATIONSTYLEASSIGNMENT((#130));
#123=IFCANNOTATIONCURVEOCCURRENCE(#116,(#124),'');
#124=IFCPRESENTATIONSTYLEASSIGNMENT((#140));

/* curve styles for polyline and circle */
#130=IFCCURVESTYLE('',#131,$,#132);
#131=IFCDRAUGHTINGPREDEFINEDCURVEFONT('dashed');
#132=IFCDRAUGHTINGPREDEFINEDCOLOUR('black');
#140=IFCCURVESTYLE('',#141,$,#142);
#141=IFCDRAUGHTINGPREDEFINEDCURVEFONT('continuous');
#142=IFCDRAUGHTINGPREDEFINEDCOLOUR('red');

/* assignment to layer structure */
#201=IFCPRESENTATIONLAYERASSIGNMENT('0','',(#112,#116));

/* project definition */
#1=IFCPROJECT('0q5sIyGrnDjvVsgb$_5xee',#2,'TestProject','Testing','','IFC 2x2 Processor Development Test file','',(#21),#3);
#40=IFCRELAGGREGATES('1ufOV9ozf9hAHd1ewIoSxA',#2,'Testrelation','Default Site',#1,(#41));
#41=IFCSITE('1EksLiLvv4BRGS0LTK2cuG',#2,'Testsite','Default Site',$,#42,$,'',.ELEMENT.,$,$,0.,'',$);
#42=IFCLOCALPLACEMENT($,#43);
#43=IFCAXIS2PLACEMENT3D(#44,#45,#46);
#44=IFCCARTESIANPOINT((0.,0.,0.));
#45=IFCDIRECTION((0.,0.,1.));
#46=IFCDIRECTION((1.,0.,0.));
#30=IFCRELAGGREGATES('2IjqaFItn6ivAK75iq_317',#2,'Testrelation','Default Building',#41,(#31));
#31=IFCBUILDING('0ZI8XAX9v7ax9yB28Rf6mc',#2,'Testbuilding','Default Building',$,#32,$,'',.ELEMENT.,0.,0.,$);
#32=IFCLOCALPLACEMENT(#42,#33);
#33=IFCAXIS2PLACEMENT3D(#34,#35,#36);
#34=IFCCARTESIANPOINT((0.,0.,0.));
#35=IFCDIRECTION((0.,0.,1.));
#36=IFCDIRECTION((1.,0.,0.));

/* master geometric representation context */
#21=IFCGEOMETRICREPRESENTATIONCONTEXT('Model','',3,0.0000001,#22,$);
#22=IFCAXIS2PLACEMENT3D(#27,#28,#29);
#27=IFCCARTESIANPOINT((0.,0.,0.));
#28=IFCDIRECTION((0.,0.,1.));
#29=IFCDIRECTION((1.,0.,0.));

/* geometric representation sub context for the general presentation */
#23=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('','Model',*,*,*,*,#21,$,.MODEL_VIEW.,$);

9.2.3 Individual presentation occurrences

This section discusses how the styled items and annotation occurrences are defined depending on their style assignment. The current IFC2×2 differentiates between:

Each style is introduced in a sub section. The style definition always contains an geometric representation item (the geometric instance), an appearance definition (the shared style information) and a style body (the relation between the two).

9.2.3.1 Curve style and annotation curve occurrence

An IfcStyledItem being an IfcAnnotation­CurveOccurren­ce is a geometric curve definition (see subtypes of IfcCurve) together with an IfcCurveStyle.
An IfcCurveStyle can also be associated with geometric surface definitions (to define the appearance of boundary curves) and with geometric solid definitions (to define the appearance of solid edges).

In a simple example, a line, given by IfcPolyline, shall have a line style. The Figure 129 shows the definition needed to provide for a styled line.
The additional presentation entities allow for the presentation for the line color (blue, red, etc.), the line style (continuous, dashed, etc.), and the line width.
The four attributes of IfcCurveStyle shall be interpreted as:

figure130
Figure 130 : Definition of curve style

9.2.3.2 Symbol style and annotation symbol occurrence

9.2.3.3 Fill area style and annotation fill area occurrence

9.2.3.4 Text style and annotation text occurrence

9.2.3.5 Surface style and annotation surface occurrence

An IfcStyledItem being an IfcAnnotation­SurfaceOccurren­ce is a geometric surface definition, face based or shell based representation, or solid model, together with an IfcSurfaceStyle.
It is applicable to:

An IfcCurveStyle can also be associated with geometric surface definitions (to define the appearance of boundary curves) and with geometric solid definitions (to define the appearance of solid edges).

9.2.3.5.1 Surface style shading

The shading style is the most simple surface style that can be defined within IFC. It includes the definition of a surface color and optionally a definition of the curve color which is used for the color appearance of edges, if the shading mode selected includes visible edges.
The necessary elements for enabling the shading definitions are explained in Figure 130.

figure131
Figure 131 : Definition of surface style shading