/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// // This file is generated automatically. #ifndef _IFC2X2_FINAL_IFCPROJECTIONELEMENT_AUTO_IMPL_H #define _IFC2X2_FINAL_IFCPROJECTIONELEMENT_AUTO_IMPL_H #include "IfcFeatureElementAdditionAutoImpl.h" #include "TD_PackPush.h" /** \details The namespace contains schema-dependent classes, definitions and sub routines for work with IFC2X2_FINAL express schema definitions. */ namespace OdIfc2x2_final { /** \details The projection element is a specialization of the general feature element to represent projections applied to building elements. It represents a solid attached to any element that has physical manifestation. An IfcProjectionElement has to be linked to a element (all subtypes of IfcElement) by using the IfcRelProjectsElement relationship. Its existence depends on the existence of the master element. The relationship implies a Boolean union operation between the volume of the projection element and the volume of the element. The IfcProjectionElement does not participate in the containment relationship, i.e. it is not linked directly to the spatial structure of the project. It has a mandatory ProjectsElements inverse relationship pointing to the IfcElement that is contained in the spatial structure. * The inverse relationship ContainedInStructure should be NIL. - Body Geometry - The geometric representation of IfcProjectionElement can be defined using the swept area solid geometry. The following attribute values for the IfcShapeRepresentation holding this geometric representation are used: * IfcShapeRepresentation.RepresentationIdentifier: 'Body' * IfcShapeRepresentation.RepresentationType: 'SweptSolid' The following constraints are recommended: * IfcShapeRepresentation.Items can include a single, or multiple, instances of IfcExtrudedAreaSolid. * IfcExtrudedAreaSolid.SweptArea supports IfcRectangleProfileDef, IfcCircleProfileDef and IfcArbitraryClosedProfileDef. * IfcExtrudedAreaSolid.ExtrudedDirection extrudes the profile in a direction non-parallel to the element it is projecting. This can be horizontal for wall projections or vertically for floor projections. * If multiple instances of IfcExtrudedAreaSolid are used, the extrusion direction of each extrusion should be equal. As shown on the image below, the following interpretation of dimension parameters applies for rectangular projection: * IfcRectangleProfileDef.YDim interpreted as projection width * IfcRectangleProfileDef.XDim interpreted as projection height * IfcExtrudedAreaSolid.Depth is interpreted as projection depth The general geometric representation of IfcProjectionElement can also be defined using the Brep or Tesselation geometry. The Brep or Tessellation representation allows for the representation of complex element shapes. The following attribute values for the IfcShapeRepresentation holding this geometric representation is used: * IfcShapeRepresentation.RepresentationIdentifier: 'Body' * IfcShapeRepresentation.RepresentationType: 'Tessellation' or 'Brep' - Product Local Placement - The local placement for IfcOpeningRecess is defined in its supertype IfcProduct. It is defined by the IfcLocalPlacement, which defines the local coordinate system that is referenced by all geometric representations. * The PlacementRelTo relationship of IfcLocalPlacement should point to the local placement of the same element, to which the projection adds, i.e. referred to by ProjectsElement.RelatingBuildingElement. - Quantity Sets - This concept can be applied to the following resources: * Qto_ProjectionElementBaseQuantities */ class IFC2X2_FINAL_EXPORT IfcProjectionElement : public IfcFeatureElementAddition { //DOM-IGNORE-BEGIN OD_EXP_DECLARE_MEMBERS(OdIfc2x2_final::IfcProjectionElement); //DOM-IGNORE-END public: /** \details Returns a type of a class instance. \returns Pointer to the OdDAI::Entity type that determines an entity definition within a schema. */ virtual OdDAI::Entity* getInstanceType() const override; /** \details Checks whether the specified instance is the object derived from or belongs to this class. \param entityType [in] Entity to check. \returns true if the specified instance is the object derived from or belongs to this class, false otherwise. */ virtual bool isKindOf(OdIfc::OdIfcEntityType entityType) const override; /** \details Returns the type of this entity. \returns A value of the OdIfc::OdIfcEntityType type that represents type of this entity. */ virtual OdIfc::OdIfcEntityType type() const override; }; /** \details A data type that represents a smart pointer to a IfcProjectionElement object. */ typedef OdSmartPtr IfcProjectionElementPtr; } // namespace #include "TD_PackPop.h" #endif // _IFC2X2_FINAL_IFCPROJECTIONELEMENT_AUTO_IMPL_H