IFC 4.4.0.0 build 20261005 (IFC4X4_DEV_20260525) ⚠ buildingSMART Working Draft. All content is under development.

  • Help suggest improvements
  • Get user or developer support

8.18.6.3 IfcShapeRepresentationTypes

8.18.6.3.1 Semantic definition

The function gets the representation type and the assigned set of representation items as input and verifies whether the correct items are assigned according to the representation type given.

8.18.6.3.2 Formal representation

FUNCTION IfcShapeRepresentationTypes
(RepType : IfcLabel; Items : SET OF IfcRepresentationItem) : LOGICAL;
LOCAL
Count : INTEGER := 0;
END_LOCAL;
CASE RepType OF
'Point' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCPOINT' IN TYPEOF(temp))
OR ('IFC4X4_DEV_20260525.IFCCARTESIANPOINTLIST' IN TYPEOF(temp))));
END;
'PointCloud' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCCARTESIANPOINTLIST3D' IN TYPEOF(temp))));
END;
'Curve' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCCURVE' IN TYPEOF(temp))));
END;
'Curve2D' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCCURVE' IN TYPEOF(temp))
AND (temp\IfcCurve.Dim = 2)));
END;
'Curve3D' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCCURVE' IN TYPEOF(temp))
AND (temp\IfcCurve.Dim = 3)));
END;
'Segment' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCSEGMENT' IN TYPEOF(temp))));
END;
'Surface' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCSURFACE' IN TYPEOF(temp))));
END;
'Surface2D' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCSURFACE' IN TYPEOF(temp))
AND (temp\IfcSurface.Dim = 2)));
END;
'Surface3D' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCSURFACE' IN TYPEOF(temp))
AND (temp\IfcSurface.Dim = 3)));
END;
'SectionedSurface' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | 'IFC4X4_DEV_20260525.IFCSECTIONEDSURFACE' IN TYPEOF(temp)));
END;
'FillArea' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCANNOTATIONFILLAREA' IN TYPEOF(temp))));
END;
'Text' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCTEXTLITERAL' IN TYPEOF(temp))));
END;
'AdvancedSurface' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | 'IFC4X4_DEV_20260525.IFCBSPLINESURFACE' IN TYPEOF(temp)));
END;
'Annotation2D' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | (
SIZEOF(TYPEOF(temp) * [
'IFC4X4_DEV_20260525.IFCPOINT',
'IFC4X4_DEV_20260525.IFCCURVE',
'IFC4X4_DEV_20260525.IFCGEOMETRICCURVESET',
'IFC4X4_DEV_20260525.IFCANNOTATIONFILLAREA',
'IFC4X4_DEV_20260525.IFCTEXTLITERAL']) = 1)
));
END;
'GeometricSet' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCGEOMETRICSET' IN TYPEOF(temp))
OR ('IFC4X4_DEV_20260525.IFCPOINT' IN TYPEOF(temp))
OR ('IFC4X4_DEV_20260525.IFCCURVE' IN TYPEOF(temp))
OR ('IFC4X4_DEV_20260525.IFCSURFACE' IN TYPEOF(temp))));
END;
'GeometricCurveSet' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCGEOMETRICCURVESET' IN TYPEOF(temp))
OR ('IFC4X4_DEV_20260525.IFCGEOMETRICSET' IN TYPEOF(temp))
OR ('IFC4X4_DEV_20260525.IFCPOINT' IN TYPEOF(temp))
OR ('IFC4X4_DEV_20260525.IFCCURVE' IN TYPEOF(temp))));
REPEAT i:=1 TO HIINDEX(Items);
IF ('IFC4X4_DEV_20260525.IFCGEOMETRICSET' IN TYPEOF(Items[i]))
THEN
IF (SIZEOF(QUERY(temp <* Items[i]\IfcGeometricSet.Elements | 'IFC4X4_DEV_20260525.IFCSURFACE' IN TYPEOF(temp))) > 0)
THEN
Count := Count - 1;
END_IF;
END_IF;
END_REPEAT;
END;
'Tessellation' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | 'IFC4X4_DEV_20260525.IFCTESSELLATEDITEM' IN TYPEOF(temp)));
END;
'SurfaceOrSolidModel' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | SIZEOF([
'IFC4X4_DEV_20260525.IFCTESSELLATEDITEM',
'IFC4X4_DEV_20260525.IFCSHELLBASEDSURFACEMODEL',
'IFC4X4_DEV_20260525.IFCFACEBASEDSURFACEMODEL',
'IFC4X4_DEV_20260525.IFCSOLIDMODEL'] * TYPEOF(temp)) >= 1
));
END;
'SurfaceModel' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | SIZEOF([
'IFC4X4_DEV_20260525.IFCTESSELLATEDITEM',
'IFC4X4_DEV_20260525.IFCSHELLBASEDSURFACEMODEL',
'IFC4X4_DEV_20260525.IFCFACEBASEDSURFACEMODEL'] * TYPEOF(temp)) >= 1
));
END;
'SolidModel' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCSOLIDMODEL' IN TYPEOF(temp))));
END;
'SweptSolid' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | (SIZEOF([
'IFC4X4_DEV_20260525.IFCEXTRUDEDAREASOLID',
'IFC4X4_DEV_20260525.IFCREVOLVEDAREASOLID'] * TYPEOF(temp)) >= 1
) AND (SIZEOF([
'IFC4X4_DEV_20260525.IFCEXTRUDEDAREASOLIDTAPERED',
'IFC4X4_DEV_20260525.IFCREVOLVEDAREASOLIDTAPERED'] * TYPEOF(temp)) = 0
)
));
END;
'AdvancedSweptSolid' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | SIZEOF([
'IFC4X4_DEV_20260525.IFCSWEPTAREASOLID',
'IFC4X4_DEV_20260525.IFCSWEPTDISKSOLID',
'IFC4X4_DEV_20260525.IFCSECTIONEDSOLIDHORIZONTAL'] * TYPEOF(temp)) >= 1
));
END;
'CSG' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | SIZEOF([
'IFC4X4_DEV_20260525.IFCBOOLEANRESULT',
'IFC4X4_DEV_20260525.IFCCSGPRIMITIVE3D',
'IFC4X4_DEV_20260525.IFCCSGSOLID'] * TYPEOF(temp)) >= 1
));
END;
'Clipping' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | SIZEOF([
'IFC4X4_DEV_20260525.IFCCSGSOLID',
'IFC4X4_DEV_20260525.IFCBOOLEANCLIPPINGRESULT'] * TYPEOF(temp)) >= 1
));
END;
'Brep' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCFACETEDBREP' IN TYPEOF(temp))));
END;
'AdvancedBrep' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCMANIFOLDSOLIDBREP' IN TYPEOF(temp))));
END;
'BoundingBox' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCBOUNDINGBOX' IN TYPEOF(temp))));
IF (SIZEOF(Items) > 1)
THEN
Count := 0;
END_IF;
END;
'SectionedSpine' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCSECTIONEDSPINE' IN TYPEOF(temp))));
END;
'LightSource' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCLIGHTSOURCE' IN TYPEOF(temp))));
END;
'MappedRepresentation' :
BEGIN
Count := SIZEOF(QUERY(temp <* Items | ('IFC4X4_DEV_20260525.IFCMAPPEDITEM' IN TYPEOF(temp))));
END;
OTHERWISE : RETURN(?);
END_CASE;
RETURN (Count = SIZEOF(Items));
END_FUNCTION;

8.18.6.3.3 References

Edit on Github

5 contributor(s): ArturTomczakbSI-BotThomas KrijnenAndrejDion Moult
Last change: Improve definition split (#876) * bring back headers headers were previously removed by mistake, now bringing them back * add new lines and rename the tag add the word 'short' in it * unify newlines make exactly one newline before and two after the tag * resolving typos Because bringing back headers required to go back in time to previous version, I'm now re-resolving the issues: #861, #860, #856 by ArturTomczak on 2024-07-16T16:07:28+02:00

Is this page difficult to understand? Let us know!

8.18.6.3.4 Changelog

8.18.6.3.4.1 IFC4

  • ,

8.18.6.3.4.2 IFC4.3_ADD2

  • ,