Represent Product
Overview
Within the same object placement, a product may be represented by a single or 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.
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.
The functional part "represent product" has the following components and dependencies
- definition of a product representation, the container of potentially multiple geometric representations
- definition of one or several shape representations, each referring to a different geometric representation context
- potentially assigning each shape representation to a presentation layer
All shape representations are defined within the same local placement (see fp_place_object), that establishes the coordinate system for all geometric representation items used within the shape representation of the product.
Results
The product has been represented with one or several shape representations, all within the object coordinate system, and each being specific for a particular, potentially scale and projection dependent representation context.
Each shape representation may have an assignment to a presentation layer (or CAD layer, level, etc.).
Note: This assignment can be overridden by individual geometric representation items.
| Description | Entity/Pset/Functional Part | MAN | REC | OPT |
|---|---|---|---|---|
| Create a representation container for the product by having an IfcProductDefinitionShape created as a Representation for a subtype of IfcProduct(as for any building, HVAC, or other element). Note: currently there are no conventions on how to assign values for the Name and Description attribute |
IfcProductDefinitionShape linked by IfcProduct.Representation See Example 1 #50 |
|||
| Create one or several instances of IfcShapeRepresentation for each of the potentially multiple representations of the product. | IfcShapeRepresentation See Example 1 #49 See Example 1 #110 |
|||
| Provide the appropriate identifier and type for the shape representation. Note: The list of applicable identifiers and types is usually defined at the geometry use case definition for each subtype of IfcProduct - refer to the IFC specification for further details |
IfcShapeRepresentation.RepresentationIdentifier IfcShapeRepresentation.RepresentationType |
|||
| Assign the shape representation to a specific geometric representation context. | IfcShapeRepresentation.ContextOfItems see fp_set_representation_context for further details |
|||
| Note: there needs to be at least one shape representation that refers to a master (or default) context, either the 3D model context or the 2D plan context | ||||
| Scale, projection and level of detail specific shape representations shall refer to a geometric representation sub context, defining the representation setting to which this representations applies. | ||||
| Add the set of geometric representation items that represents this particular shape representation. Note: The type of the geometric representation items need to comply to the RepresentationType. See IFC specification for IfcShapeRepresentation and for the function IfcShapeRepresentationTypes for further details. Example: If the RepresentationType is 'GeometricCurveSet' the only allowed items are points and lines within a geometric (curve) set. |
IfcShapeRepresentation.Items see various functional parts for each major representation type |
|||
| Assign the shape representation to a presentation layer, using the inverse LayerAssignment relationship. Note: individual representation items within the set of Items may have their own layer assignment, it then overrides the layer assignment of the shape representation container. |
IfcShapeRepresentation.LayerAssignment see (functional part to be defined) |
EXPRESS Schema
SCHEMA FP_REPRESENT_PRODUCT;
TYPE IfcLabel = STRING;
END_TYPE;
TYPE IfcText = STRING;
END_TYPE;
ENTITY IfcRepresentation
SUPERTYPE OF (ONEOF(IfcShapeRepresentation,
IfcTopologyRepresentation,
IfcStyledRepresentation));
ContextOfItems : IfcRepresentationContext;
RepresentationIdentifier : OPTIONAL IfcLabel;
RepresentationType : OPTIONAL IfcLabel;
Items : SET [1:?] OF IfcRepresentationItem;
INVERSE
LayerAssignments : SET OF IfcPresentationLayerAssignment FOR AssignedItems;
OfProductRepresentation : SET [0:1] OF IfcProductRepresentation FOR Representations;
END_ENTITY;
ENTITY IfcShapeRepresentation
SUBTYPE OF(IfcRepresentation);
WHERE
WR21 : 'IFCREPRESENTATIONRESOURCE.IFCGEOMETRICREPRESENTATIONCONTEXT'
IN TYPEOF(SELF\IfcRepresentation.ContextOfItems);
WR22 : SIZEOF(QUERY(temp <* Items |
('IFCTOPOLOGYRESOURCE.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp))
AND (NOT(SIZEOF(
['IFCTOPOLOGYRESOURCE.IFCVERTEXPOINT',
'IFCTOPOLOGYRESOURCE.IFCEDGECURVE',
'IFCTOPOLOGYRESOURCE.IFCFACESURFACE'] * TYPEOF(temp)) = 1))
)) = 0;
WR23 : EXISTS(SELF\IfcRepresentation.RepresentationType);
WR24 : IfcShapeRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items);
END_ENTITY;
ENTITY IfcTopologyRepresentation
SUBTYPE OF(IfcRepresentation);
WHERE
WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items |
NOT('IFCTOPOLOGYRESOURCE.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp))
)) = 0;
WR22 : EXISTS(SELF\IfcRepresentation.RepresentationType);
WR23 : IfcTopologyRepresentationTypes(SELF\IfcRepresentation.RepresentationType,
SELF\IfcRepresentation.Items);
END_ENTITY;
ENTITY IfcStyledRepresentation
SUBTYPE OF(IfcRepresentation);
WHERE
WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items |
(NOT('IFCPRESENTATIONAPPEARANCERESOURCE.IFCSTYLEDITEM' IN TYPEOF(temp)))
)) = 0;
END_ENTITY;
ENTITY IfcProductRepresentation
SUPERTYPE OF (IfcProductDefinitionShape);
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
Representations : LIST [1:?] OF IfcRepresentation;
END_ENTITY;
ENTITY IfcProductDefinitionShape
SUBTYPE OF(IfcProductRepresentation);
END_ENTITY;
ENTITY IfcRepresentationContext;
INVERSE
RepresentationsInContext : SET OF IfcRepresentation FOR ContextOfItems;
-- definitions skipped
-- see e.g. fp_set_representation_context
END_ENTITY;
ENTITY IfcRepresentationItem;
-- definitions skipped
-- see e.g. various functional parts on geometric representation items
END_ENTITY;
ENTITY IfcPresentationLayerAssignment;
AssignedItems : IfcRepresentation;
-- definitions skipped
-- see e.g. fp_assign_presentation_layer
END_ENTITY;
ENTITY IfcRoot
ABSTRACT SUPERTYPE OF (IfcObjectDefinition);
-- definitions skipped
END_ENTITY;
ENTITY IfcObjectDefinition
ABSTRACT SUPERTYPE OF (IfcObject)
SUBTYPE OF(IfcRoot);
-- definitions skipped
END_ENTITY;
ENTITY IfcObject
ABSTRACT SUPERTYPE OF (IfcProduct)
SUBTYPE OF(IfcObjectDefinition);
-- definitions skipped
END_ENTITY;
ENTITY IfcProduct
SUBTYPE OF(IfcObject);
Representation : IfcProductRepresentation;
-- definitions skipped
END_ENTITY;
END_SCHEMA;
EXPRESS-G
for further reading, see also the aspect card ProIT_IFC_Aspect_081_Representation_1-0.pdf
Note: the aspect card description is based on the IFC2x definition of representation contexts, in IFC2x3 onwards, different shape representations are assigned to different geometric representation (sub) contexts.
Model Instantiation
Example 1: (Original) Definition of a proxy object with two shape representations
(a default 3D representation, and a default 2D representation) each being assigned to
/* Definition of the project */
#17=IFCPROJECT('02b_zn_n5BUhvEFQj1tiGU',#16,'DefaultProject','Automatically generated project',$,$,$,(#10,#11),#6);
/* Definition of the geometric representation context for the 3D model */
#10=IFCGEOMETRICREPRESENTATIONCONTEXT('Default 3D context','Model',3,1.E-009,#103,#99);
#103=IFCAXIS2PLACEMENT3D(#104,$,$);
#104=IFCCARTESIANPOINT((0.,0.,0.));
/* Definition of the geometric representation context for the 2D plan */
#11=IFCGEOMETRICREPRESENTATIONCONTEXT('Default 2D context','Plan',2,1.E-009,#105,#99);
#105=IFCAXIS2PLACEMENT2D(#106,$);
#106=IFCCARTESIANPOINT((0.,0.));
/* the north direction is along the positive x-axis */
#99=IFCDIRECTION((1.,0.,0.));
/* Definition of the proxy object */
#66=IFCBUILDINGELEMENTPROXY('3APQwNnyX6LvbGeU9NiaFv',#16,'Proxy 01','proxy for test geometry',$,#41,#50,$,$);
#82=IFCRELCONTAINEDINSPATIALSTRUCTURE('0eTrDwlj914vqU_U8amIYS',#16,$,$,(#66),#29);
/* Local placement of the proxy object */
/* - the local x axis is in direction of the parent y axis */
#41=IFCLOCALPLACEMENT(#28,#40);
#40=IFCAXIS2PLACEMENT3D(#37,#38,#39);
#37=IFCCARTESIANPOINT((5.,10.,0.));
#38=IFCDIRECTION((0.,0.,1.));
#39=IFCDIRECTION((0.,1.,0.));
/* Shape representation of the annotation object */
/* - multiple representations within the standard representation context */
#50=IFCPRODUCTDEFINITIONSHAPE($,$,(#110,#49));
/* 2D representation within default 2D representation context */
#49=IFCSHAPEREPRESENTATION(#11,'FootPrint','GeometricCurveSet',(#57));
#57=IFCGEOMETRICCURVESET((#56));
#56=IFCPOLYLINE((#51,#52,#53,#54,#51));
#51=IFCCARTESIANPOINT((0.,0.12));
#52=IFCCARTESIANPOINT((0.,-0.12));
#53=IFCCARTESIANPOINT((5.,-0.12));
#54=IFCCARTESIANPOINT((5.,0.12));
#110=IFCSHAPEREPRESENTATION(#10,'Body','SweptSolid',(#111));
#111=IFCEXTRUDEDAREASOLID(#112,#120,#122,2.8);
#112=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#113);
#113=IFCPOLYLINE((#114,#115,#116,#117,#114));
#114=IFCCARTESIANPOINT((0.,0.12));
#115=IFCCARTESIANPOINT((0.,-0.12));
#116=IFCCARTESIANPOINT((5.,-0.12));
#117=IFCCARTESIANPOINT((5.,0.12));
#120=IFCAXIS2PLACEMENT3D(#121,$,$);
#121=IFCCARTESIANPOINT((0.,0.,0.));
#122=IFCDIRECTION((0.,0.,1.));
Model Aspect
The functional part "multiple shape representations" is defined using the following IFC classes:
- IfcProductRepresentation
- IfcProductDefinitionShape
- (future ABS) IfcRepresentation
- IfcShapeRepresentation
- IfcTopologyRepresentation (not yet described)
- IfcStyledRepresentation (not yet described)
it uses from
- fp_set_representation_context
- (future ABS) IfcRepresentationContext
- IfcGeometricRepresentationContext
- IfcGeometricRepresentationSubContext
- fp_assign_presentation_layer
- IfcPresentationLayerAssignment
- IfcPresentationLayerAssignmentWithStyle
- various functional parts describing geometric models and items
- all subtypes of IfcGeometricRepresentationItem
- all subtypes of IfcTopologicalRepresentationItem
it is used by
- IfcProduct
- any subtype of IfcProduct that has a geometric or topological representation