IFC 4.3.2.20250327 (IFC4X3_ADD2) under development

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

8.18.6.3.3 References

Edit on Github


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_DEV_738df036

  • ,