Obsah kapitoly
Obsah kapitoly
- 9.1 GEOMETRIC REPRESENTATION OF PRODUCTS
- 9.1.1 Reference to the geometric representation
- 9.1.2 Concept of object placement
- 9.1.2.1 Concept of local placement
- 9.1.2.1.1 Concept of local relative placement
- 9.1.2.1.2 Concept of local absolute placement
- 9.1.2.2 Concept of placement relative to grid
- 9.1.3 Concept of multiple product shape representations
- 9.1.3.1 Concept of product representation and product
definition shape
- 9.1.3.2 Concept of shape representation
- 9.1.3.3 Concept of shape aspect
- 9.1.4 Concept of various shape representation types
- 9.1.4.1 Concept of direct geometric representation
- 9.1.4.1.1 Concept of Curve2D representation
- 9.1.4.1.2 Concept of Geometric Set representation
- 9.1.4.1.2.1 Concept of Geometric Curve Set representation
- 9.1.4.1.3 Concept of Surface Model representation
- 9.1.4.1.4 Concept of Solid Model representation
- 9.1.4.1.4.1 Concept of B-rep representation
- 9.1.4.1.4.2 Concept of Swept Solid representation
- 9.1.4.1.4.3 Concept of CSG representation
- 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
- 9.2 CONCEPT OF 2D REPRESENTATIONS AND PRESENTATIONS
- 9.2.1 Presentation of semantic objects
- 9.2.2 Geometric representation and presentation of annotations
- 9.2.3 Individual presentation occurrences
- 9.2.3.1 Curve style and annotation curve occurrence
- 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
- 9.2.3.5.1 Surface style shading
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:
- IfcGeometryResource – Defines the basic geometric
representation items.
- IfcTopologyResource – Defines the basic topological
representation items.
- IfcGeometricModelResource – Defines the geometric models to define the
geometric representation of objects. It utilizes the standard geometric and
topological representation items to represent geometric models.
- IfcRepresentationResource – Defines the concepts of multiple shape
representation of objects and the reference to a representation context.
- IfcGeometryConstraintResource – Defines the concept of object
placement, either using absolute or relative axis placement, or by referring to
a placement relative to grid definitions.
- IfcProfileResource
- Defines standard profile (or cross section) definitions to be used in
geometric representations or models of swept surfaces or swept solids.
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:
- to add the explicit style information for the shape representation of
products
- to add additional (no directly product related) annotations within the same
model space as the product shape representations
These new concepts will be explained in a future version of the IFC2× model
implementation guide.
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.
- ObjectPlacement Placement of the product in the spatial context, the
placement can either be absolute (relative to the world coordinate system),
relative (relative to the object placement of another product), or constrained
(e.g. relative to grid axes).
- Representation Association to the product representation, which is the
container of potentially multiple geometric representations. All geometric
representations of the product are defined within the ObjectPlacement, which
provides the object coordinate system.
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.

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:
- absolute, i.e. by an axis2 placement, relative to the world coordinate
system,
- relative, i.e. by an axis2 placement, relative to the object placement of
another product,
- by grid reference, i.e. by the virtual intersection and reference direction
given by two axes of a design grid.
The object placement defines unambiguously the object coordinate system as
either two-dimensional axis placement (IfcAxis2Placement2D) or
three-dimensional axis placement (IfcAxis2Placement3D). 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
IfcGeometricRepresentationContext.
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 IfcAxis2Placement3D, is given by:
- the location
- the direction of the local Z-axis (in case of 3D) – if omitted always
[0.,0.,1.]
- the direction within the positive XZ plane (in case of 3D) or the direction
of the X-axis (in case of 2D) – if omitted always [1.,0.,0.] – or [1.,0.]
for 2D
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 IfcGeometricRepresentationContext 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));

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:
- IfcSite shall be placed absolutely within the world coordinate system
established by the geometric representation context of the project
- IfcBuilding shall be placed relative to the local placement of IfcSite
- IfcBuildingStorey shall be placed relative to the local placement of
IfcBuilding
- IfcElement shall be placed relative:
- to the local placement of its container (normally to IfcBuildingStorey but
possibly also to IfcSite, IfcBuilding,), or
- to the local placement of the IfcElement to which it is tied by an element
relationship (i.e. by one of the following relations IfcRelVoidsElement,
IfcRelFillsElement, IfcRelCoversBldgElements, IfcRelAssembles)
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 IfcGeometricRepresentationContext 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));

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 IfcVirtualGridIntersection relation. The
IfcVirtualGridIntersection 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 PlacementRefDirection is given,
otherwise it is computed by the vector between the PlacementLocation and the
PlacementRefDirection.

Figure 105 : Definition of …
… a tady kus chybí

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.

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
IfcGeometricRepresentationItem's as items for single or multiple shape
representations) the subtypes IfcProductDefinitionShape and
IfcShapeRepresentation have to be used.
There are two concepts which have to be supported for single and multiple
representations of product shape.
- IfcProductRepresentation (and subtype IfcProductDefinitionShape) as the
container of all representations for a product (which are founded in the object
placements, as discussed in ## 9.1.2)
- IfcRepresentation (and subtype IfcShapeRepresentation) as the container of
all representation items, which are used for a particular representation (within
the multiple representations possible) for a product. Each of the
IfcRepresentation's would be assigned to a IfcRepresentationContext (or
subtype IfcGeometricRepresentationContext).
9.1.3.1 Concept of product representation and product
definition shape
The IfcProductRepresentation (or the IfcProductDefinitionShape 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 IfcProductRepresentation (or the IfcProductDefinitionShape) 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.

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 IfcShapeRepresentation below).
An instance of IfcProductRepresentation (or subtype) acts as a container for
all of the geometric and topological representations that exist for a
product.

Figure 109 : Multiple representations of a product
9.1.3.2 Concept of shape representation
Each IfcProductRepresentation (or subtype IfcProductDefinitionShape) has
to have at least one IfcRepresentation (or subtype IfcShapeRepresentation)
defined, whereby the subtype IfcProductDefinitionShape is required to have at
least one IfcShapeRepresentation assigned.
Each representation may carry additional classifications provided by the
RepresentationIdentifier and the RepresentationType.
The provision of the RepresentationType is required for the subtype
IfcShapeRepresentation. The IFC2× model describes all allowed values for the
RepresentationType and makes recommendations for the use of the
RepresentationIdentifier.
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
IfcProductDefinitionShape by assigning two instances of
IfcShapeRepresentation.
The two attributes RepresentationIdentifier and RepresentationType have the
following values: IfcShapeRepresentation for the wall path:
- RepresentationIdentifier :: „Axis“
- RepresentationType :: „Curve2D“
IfcShapeRepresentation for the wall body:
- RepresentationIdentifier :: „Body“
- RepresentationType :: „SweptSolid“
The values for RepresentationIdentifier 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.

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 IfcProductDefinitionShape at IfcProduct (or
any of its subtype) which is a kind of „black-box“ container (i.e. a single
semantic unit), the IfcProductDefinitionShape can be further semantically
decomposed into shape aspects – each aspect is a part of the product
representation which has a semantic meaning assigned.

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 items.
Note:
Still the whole shape representation of the IfcDoor is given as an
IfcShapeRepresentation (within the Representations relationship at
IfcProductDefinitionShape).
Therefore applications are not necessarily required to understand this
additional, more granular shape aspect structure in order to represent shape
representations.

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
IfcShapeRepresentation, 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:
- by its (direct) geometric representation
- by its (direct) topological representation
- by its mapped representation, referring to a Cartesian transformation of a
source 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.

Figure 113 : Concept of shape representations
9.1.4.1 Concept of direct geometric representation
The attribute Items of IfcRepresentation (used also by
IfcShapeRepresentation) allows to assign one or several instances of
IfcRepresentationItem to describe the representation. For providing the
concept of „Direct geometric representation“, these instances are required
to be all subtypes of IfcGeometricRepresentationItem.
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:
- Curve2D – allows the use of 2D curves for the representation of line
based representations, normally used to represent a path;
- GeometricSet – allows the use of points, curves, surfaces (both as 2D and
3D elements) for the shape representation (and it includes swept surfaces (both
surfaces of extrusion and revolution) for the 3D geometric representation);
- GeometricCurveSet – further restricts the representation type
GeometricSet to only include points and curves (both as 2D and 3D elements) for
the shape representation;
- SurfaceModel – allows the use of face based surface model and shell based
surface model, which includes facetted face sets and shells (both open and
closed shells) for the shape representation, surface models are always 3D
representations;
- SolidModel – allows the use of solids, which includes swept solids,
Boolean results and B-rep bodies for the shape representation, solid models are
always 3D representations. More specific types are:
- Brep – further restricts the representation type SolidModel to only
include faceted B-rep with and without voids. B-rep models require the
satisfaction of the stipulated Euler formulas. No other types of manifold
boundary representations then faceted B-rep are currently in scope
of IFC2×;
- SweptSolid – further restricts the representation type SolidModel to only
include swept area solids, including both swept solid by extrusion and swept
solid by revolution;
- CSG – further restricts the representation type SolidModel to only
include Boolean results of operations between solid models, half spaces and
other Boolean results. Operations include union, intersection and difference;
- Clipping – further restricts the representation type CSG to only include
Boolean results resulting in the clipping of an solid and thus restricting the
Boolean operation to difference and the second operand to half
space solid.
- AdvancedSweptSolid – new in IFC2×2 – further restricts the
representation type SolidModel to only include swept area solids created by
sweeping a profile along a directrix – either a swept disk solid (sweeping of
a circle along any 3D directrix) or a surface curve swept area solid (sweeping
of any profile along a 3D directrix on a reference surface).
- BoundingBox – as an additional representation type it allows for a
simplistic 3D representation given by a bounding box. It may be added as an
additional representation to enable the display of the shape by application not
being able to handle complex shape;
- SectionedSpine – as an additional representation type it allows for a
cross section based representation of a spine curve and planar cross sections.
It can represent a surface or a solid swept along any path (composed of straight
lines and arcs) but the interpolations of the form between the cross sections is
not defined. The SectionedSpine representation may be used within engineering
applications for complex duct and pipe shapes (as an example).
- MappedRepresentation – a presentation based on a mapped item, referring
to a representation map. It can be seen as an inserted block reference. The
shape representation of the mapped item has a representation type declaring the
type of its representation items.
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
IfcShapeRepresentation.Items.
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 IfcCartesianPoint’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
IfcShapeRepresentation.Items. 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.

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
IfcGeometricCurveSet.
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).

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,
IfcCircleProfileDef, 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.

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 IfcGeometricCurveSet 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.

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.

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 IfcShapeRepresentation.
It is required, that an intermediate geometric representation item, either
IfcFaceBasedSurfaceModel or IfcShellBasedSurfaceModel, 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
IfcDistributionFlowSegment.

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:
- Boundary model representation (restricted to faceted, manifold b-rep with or
without voids);
- Swept area solid representation (using either extrusion or revolution);
- Constructive solid geometry representation, represented by their component
solids and the sequence of Boolean operations (it maybe further restricted to
solely clipping operations).
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.

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
IfcGeometricRepresentationContext 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 IfcBuildingElementProxy, is the Brep representation. The
following example shows the Brep shape representation of a proxy with the shape
of a box.

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:
- linear extrusion
- revolution
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.

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 Concept 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
IfcBooleanClippingResult.
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 IfcPolygonalBoundedHalfSpace.

Figure 123 : Definition of half space solids
Example shows a clipped wall, based on the example given in Figure
10## 9.

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 IfcRepresentationMap represents
the block definition, and IfcMappedItem represents the block insertion. The
IfcRepresentationMap can include any representation by containing one or
several IfcGeometricRepresentationItem.

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 MappedRepresentation is usually of type IfcShapeRepresentation
(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 MappedRepresentation.
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

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:
- representation and presentation of semantic objects (or elements), such as
building elements, building service elements, electrical elements, equipment
elements, etc.
- representation and presentation of “free” geometry and annotations that
are not attached to any semantic object
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.
- it has to be included into the IFC product definition structure, including
the ObjectPlacement and Representation concepts of IfcProduct. There is not
geometric representation outside of an IfcProduct definition,
- it has to be encapsulated (as any geometry is encapsulated in the IfcProduct
definition),
- the (potentially multiple) presentations of semantic objects are handled as
styled representations included in the (subtype of) IfcProduct.Representation,
in addition to the “master” geometric representation, as shown in
## 9.1.3.
- the (potentially multiple) presentations of 2D representation of “free”
annotations, i.e. those geometries that are independent of any product
representation (such as free text, additional lines, non-associated dimensions,
etc) are representations of an new IfcAnnotation object. It is used to
encapsulate those “unassigned” graphical presentations.
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.

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
- being either a product occurrence, i.e. subtypes of IfcProduct), or a
product type (or block) then a subtype of IfcTypeProduct.
Each geometric representation (IfcShapeRepresentation) is defined in its
own object coordinate system, in the case of product occurrences, the object
coordinate system is placed through a local placement (IfcObjectPlacement)
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
IfcShapeRepresentation, 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
IfcShapeRepresentation within the List of
IfcProductDefinitionShape.Representations. In addition to that, it may have
zero, one or many IfcStyledRepresentation, 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
IfcGeometricRepresentationItem’s within its list of Items, or may
reference IfcGeometricRepresentationItem’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.

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:
- „Identification“ and „Change Management“, see section 3.1.
- „External References“ to documents, classifications and libraries, see
section 10.4.
- „Placement“ and „Shape Representation“, see section 2, refined as
spatial structure element specific shape representation (also referred to as
geometry use cases) within this section. – „Element in Space
Containment“, see section 3.
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
IfcGeometricRepresentationSubContext.
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).

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 IfcStyledRepresentation.
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:
- curve styles
- symbol styles
- fill area styles
- text styles
- surface styles
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 IfcAnnotationCurveOccurrence 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:
- Name: the name of the curve style, if part of a curve style library. If no
significant name is available, an empty string, ‘’, shall be exchanged.
- CurveFont: the curve font appearance, since only the model space
presentation is in scope, the actual length of segments within a curve font may
have to be adjusted by a scaling factor. The curve font can be given as:
- explicit setting of an individual curve font: the font is then given by
assigning a value to the CurveFont attribute, this value could be:
- an IfcDraughtingPreDefinedCurveFont for standard fonts currently including
‚continuous‘, ‚chain‘, ‚chain double dash‘, ‚dashed‘, and
‚dotted‘. A table within the IFC specification gives the lengths for the
visible and invisible segments of each font.
- an IfcCurveStyleFont for user or system defined fonts, the length of the
visible and invisible segments are explicitly exchanged as values of
IfcPositiveLengthMeasure (i.e. given by the global length unit).
- an IfcCurveStyleFontAndScaling for curve fonts (being either
IfcCurveStyleFont or IfcDraughtingPreDefinedCurveFont) that have a scale
factor, this allows to share the same curve font definition, if only the scale
varies, but the proportion remains the same.
- setting of the curve font by layer settings: the CurveFont attribute shall
be undetermined (nil) and the representation item (the
IfcGeometricRepresentationItem) shall be an AssignedItems of an
IfcPresentationLayerAssignmentWithStyle having a value given for the
attribute LayerCurveFont. Then the curve font given to the layer shall
be taken.
- default setting ‘continuous’ shall be used, if no value is given for the
CurveFont attribute and either no layer information, given by
IfcPresentationLayerAssignmentWithStyle is available, or the LayerCurveFont
attribute of IfcPresentationLayerAssignmentWithStyle is not provided.
- CurveColour: the curve colour appearance to be used to display the curve,
The curve colour can be given as:
- explicit setting of an individual curve color: the color is then given by
assigning a value to the CurveColour attribute, this value could be:
- an IfcDraughtingPreDefinedColour for standard colours currently including
‚black‘, ‚red‘, ‚green‘, ‚blue‘, ‚yellow‘, ‚magenta‘,
‚cyan‘, and ‚white‘. A table within the IFC specification gives the RGB
values for each colour name.
- an IfcColourRgb for user or system defined colours using the RGB colour
model, the individual values for the red, green, and blue component are
explicitly exchanged as values of IfcNormalisedRatioMeasure (Note: the often
used values 0..255 have to be transformed in normalised values 0..1).
- setting of the curve colour by layer settings: the CurveColour attribute
shall be undetermined (nil) and the representation item (the
IfcGeometricRepresentationItem) shall be an AssignedItems of an
IfcPresentationLayerAssignmentWithStyle having a value given for the
attribute LayerCurveColour. Then the curve colour given to the layer shall
be taken.
- default setting ‘black’ shall be used, if no value is given for the
CurveFont attribute and either no layer information, given by
IfcPresentationLayerAssignmentWithStyle is available, or if the
LayerCurveColour attribute of IfcPresentationLayerAssignmentWithStyle is not
provided.
- CurveWidth: the curve width appearance to be used to display the curve,
since only model space representation is in scope, the curve width may not be
shown (but might be used for later projections onto paper space). The curve
width can be given as:
- explicit setting of an individual curve width: the width is then given by
assigning a value to the CurvWidth attribute, this value could be either given
within the global length unit (as IfcPositiveLengthMeasure) or with explicit
units (as IfcMeasureValueWithUnit – usually mm is used for metric
measures).
- setting of the curve width by layer settings: the CurveWidth attribute shall
be undetermined (nil) and the representation item (the
IfcGeometricRepresentationItem) shall be an AssignedItems of an
IfcPresentationLayerAssignmentWithStyle having a value given for the
attribute LayerCurveWidth. Then the curve width given to the layer shall
be taken.
- if no value is given for the CurveFont attribute and either no layer
information, given by IfcPresentationLayerAssignmentWithStyle is available,
or if the LayerCurveColour attribute of
IfcPresentationLayerAssignmentWithStyle is not provided, then a system
default shall be used for curve width.

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 IfcAnnotationSurfaceOccurrence is a geometric
surface definition, face based or shell based representation, or solid model,
together with an IfcSurfaceStyle.
It is applicable to:
- IfcSurface
- IfcSolidModel
- IfcShellBasedSurfaceModel
- IfcFaceBasedSurfaceModel
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.

Figure 131 : Definition of surface style shading