Arbitrary profile defintions are used to describe cross-sections of swept solid geometry using curve segments defined by closed two-dimensional curves.
Figure 49 illustrates an instance diagram.
![]() |
Figure 49 — Arbitrary Profile Definition |
<?xml version="1.0" encoding="utf-8"?>
<ConceptTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" uuid="c375c12b-7e67-435f-8b70-b581db356991" name="Arbitrary Profile Definition" applicableSchema="IFC4" applicableEntity="IfcProfileDef">
<Rules>
<AttributeRule AttributeName="ProfileType">
<EntityRules>
<EntityRule EntityName="IfcProfileTypeEnum" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ProfileName">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
</Rules>
<SubTemplates>
<ConceptTemplate uuid="63832052-221d-4c41-95d4-a56ee5d69e88" name="CompositeCurve Profile Definition" applicableSchema="IFC4" applicableEntity="IfcArbitraryProfileDefWithVoids">
<Rules>
<AttributeRule AttributeName="ProfileType">
<EntityRules>
<EntityRule EntityName="IfcProfileTypeEnum" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ProfileName">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="OuterCurve">
<EntityRules>
<EntityRule EntityName="IfcCompositeCurve">
<AttributeRules>
<AttributeRule AttributeName="Segments">
<EntityRules>
<EntityRule EntityName="IfcCompositeCurveSegment">
<AttributeRules>
<AttributeRule AttributeName="Transition">
<EntityRules>
<EntityRule EntityName="IfcTransitionCode" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SameSense">
<EntityRules>
<EntityRule EntityName="IfcBoolean" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcTrimmedCurve">
<AttributeRules>
<AttributeRule AttributeName="BasisCurve">
<EntityRules>
<EntityRule EntityName="IfcPolyline">
<AttributeRules>
<AttributeRule AttributeName="Points">
<EntityRules>
<EntityRule EntityName="IfcCartesianPoint" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
<EntityRule EntityName="IfcCircle">
<AttributeRules>
<AttributeRule AttributeName="Position">
<EntityRules>
<EntityRule EntityName="IfcAxis2Placement2D" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Radius">
<EntityRules>
<EntityRule EntityName="IfcPositiveLengthMeasure" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
<EntityRule EntityName="IfcEllipse">
<AttributeRules>
<AttributeRule AttributeName="Position">
<EntityRules>
<EntityRule EntityName="IfcAxis2Placement2D" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SemiAxis1">
<EntityRules>
<EntityRule EntityName="IfcPositiveLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SemiAxis2">
<EntityRules>
<EntityRule EntityName="IfcPositiveLengthMeasure" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Trim1">
<EntityRules>
<EntityRule EntityName="IfcCartesianPoint" />
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Trim2">
<EntityRules>
<EntityRule EntityName="IfcCartesianPoint" />
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SenseAgreement">
<EntityRules>
<EntityRule EntityName="IfcBoolean" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="MasterRepresentation">
<EntityRules>
<EntityRule EntityName="IfcTrimmingPreference" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="InnerCurves">
<EntityRules>
<EntityRule EntityName="IfcCompositeCurve" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="0373a86a-1387-45bd-bf09-bb3cc39092d9" name="PolyCurve Profile Definition" applicableSchema="IFC4" applicableEntity="IfcArbitraryClosedProfileDef">
<Rules>
<AttributeRule AttributeName="ProfileType">
<EntityRules>
<EntityRule EntityName="IfcProfileTypeEnum" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ProfileName">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="OuterCurve">
<EntityRules>
<EntityRule EntityName="IfcIndexedPolyCurve">
<AttributeRules>
<AttributeRule AttributeName="Points">
<EntityRules>
<EntityRule EntityName="IfcCartesianPointList2D" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Segments">
<EntityRules>
<EntityRule EntityName="IfcLineIndex" />
<EntityRule EntityName="IfcArcIndex" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SelfIntersect">
<EntityRules>
<EntityRule EntityName="IfcBoolean" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="d3b8661b-e65b-4077-adc7-c6742d219691" name="PolyCurve with Voids Profile Definition" applicableSchema="IFC4" applicableEntity="IfcArbitraryProfileDefWithVoids">
<Rules>
<AttributeRule AttributeName="ProfileType">
<EntityRules>
<EntityRule EntityName="IfcProfileTypeEnum" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ProfileName">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="OuterCurve">
<EntityRules>
<EntityRule EntityName="IfcIndexedPolyCurve">
<AttributeRules>
<AttributeRule AttributeName="Points">
<EntityRules>
<EntityRule EntityName="IfcCartesianPointList2D" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Segments">
<EntityRules>
<EntityRule EntityName="IfcArcIndex" />
<EntityRule EntityName="IfcLineIndex" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SelfIntersect">
<EntityRules>
<EntityRule EntityName="IfcBoolean" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="InnerCurves">
<EntityRules>
<EntityRule EntityName="IfcIndexedPolyCurve" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>