/////////////////////////////////////////////////////////////////////////////// // 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 _IFC4X3_ADD2_IFCCOVERING_AUTO_IMPL_H #define _IFC4X3_ADD2_IFCCOVERING_AUTO_IMPL_H #include "IfcBuiltElementAutoImpl.h" #include "TD_PackPush.h" /** \details The namespace contains schema-dependent classes, definitions and sub routines for work with IFC4X3_ADD2 express schema definitions. */ namespace OdIfc4x3_add2 { /** \details A covering is an element which covers some part of another element and is fully dependent on that other element. The IfcCovering defines the occurrence of a covering type, that (if specified) is expressed by the IfcCoveringType. - Details - Coverings can be assigned to: * a space represented by IfcSpace * using the inverse relationship CoversSpaces pointing to IfcRelCoversSpaces. The space is then accessible via IfcRelCoversSpaces.RelatedSpace. It defines to which space a covering is facing towards. * a space boundary represented by IfcRelSpaceBoundary * using the inverse relationship ProvidesBoundaries pointing to IfcRelSpaceBoundary. The space is then accessible via IfcRelSpaceBoundary.RelatingSpace. * a building element represented by IfcBuildingElement * using the inverse relationship Covers pointing to IfcRelCoversBldgElements. The building element is then accessible via IfcRelCoversBldgElements.RelatingBuildingElement. The following guideline applies: * (default) if the space has coverings that may not have their own shape representation and no defined relationships to the building elements they cover, then the IfcCovering is assigned to IfcSpace using the IfcRelCoversSpaces relationship. * if the space has coverings that have an own shape representation and the space has defined space boundaries, then the covering, which relates to that space, is contained in the space using IfcRelContainedInSpatialStructure. It can be assigned to the space boundaries using the IfcRelSpaceBoundary. * if the covering does not relate to a space, then the covering should be assigned to the building element or a distribution element using the IfcRelCoversBldgElements relationship. - Body SweptSolid Geometry - The following additional constraints apply to the 'SweptSolid' representation of IfcCovering: * for planar base surfaces - swept area representation * for cylindrical base surfaces - swept area representation The image below illustrates a body representation where the volume of IfcCovering is specified by an IfcExtrudedAreaSolid for planar base surfaces (here specified by the IfcRelSpaceBoundary). The extruded area (IfcArbitraryClosedProfileDef) is coplanar to the surface defined by the IfcRelSpaceBoundary. The image below illustrates a body representation where the volume of the IfcCovering is specified by an IfcExtrudedAreaSolid for cylindrical base surfaces. - Material Set - Coverings for surfaces (CEILING, FLOORING, CLADDING, CEILING, ROOFING) can have materials defined according to layers. Coverings for edges (MOLDING, SKIRTINGBOARD) can have materials defined according to profiles. This concept can be applied to the following resources: * Front - Optional front-facing material of layer-based coverings such as drywall paper. * Fill - The solid material of layer-based coverings such as drywall gypsum. * Back - Optional back-facing material of layer-based coverings such as drywall paper. * Trim - Profile of trim such as crown molding or base molding. * Lining * Finish - Object Typing - This concept can be applied to the following resources: * IfcCoveringType - Property Sets for Objects - This concept can be applied to the following resources: * Pset_CoveringCommon * Pset_CoveringFlooring (only applies to FLOORING) * Pset_CoveringTypeMembrane (only applies to MEMBRANE) * Pset_Tiling - Quantity Sets - This concept can be applied to the following resources: * Qto_CoveringBaseQuantities - Spatial Containment - The following additional constraints apply to the 'GeometricSet' representation of IfcCovering: * for planar base surfaces - bounded surface representation * for cylindrical base surfaces - swept surface representation The image below illustrates a planar surface representation where the area of IfcCovering is specified by an IfcPolyLoop for planar base surfaces (here provided by the IfcRelSpaceBoundary). The implicit planar surface of the IfcPolyLoop is identical with the planar surface defined by the IfcRelSpaceBoundary. The image below illustrates a cylindrical surface representation where the area of the IfcCovering is specified by an IfcSurfaceOfLinearExtrusion for cylindrical base surfaces (here specified by the IfcRelSpaceBoundary, such as caused by a round wall). \changes * IFC2X_FINAL changes: The attribute PredefinedType is now optional and should only be inserted when no type information, specified by IfcCoveringType, is assigned to the IfcCovering occurrence by IfcRelDefinesByType * IFC4 changes: Name of the inverse attribute Covers changed to CoversElements * IFC4X3_RC1 changes: Supertype changed from "IfcBuildingElement" to "IfcBuiltElement" */ class IFC4X3_EXPORT IfcCovering : public IfcBuiltElement { //DOM-IGNORE-BEGIN OD_EXP_DECLARE_MEMBERS(OdIfc4x3_add2::IfcCovering); //DOM-IGNORE-END public: // // OdDAI early binding accessors // /** \details Returns the value of PredefinedType attribute. This attribute represents predefined types to define the particular type of the covering. There can be property set definitions available for each predefined type. \returns Returns the value of PredefinedType attribute. \remarks The PredefinedType is only used if no IfcCoveringType is assigned, providing its own IfcCoveringType.PredefinedType. */ IfcCoveringTypeEnum getPredefinedType() const; /** \details Sets the value of PredefinedType attribute. This attribute represents predefined types to define the particular type of the covering. There can be property set definitions available for each predefined type. \param PredefinedType [in] Predefined type to set. \remarks The PredefinedType is only used if no IfcCoveringType is assigned, providing its own IfcCoveringType.PredefinedType. */ void setPredefinedType(IfcCoveringTypeEnum PredefinedType); /** \details Returns the value of CoversSpaces attribute. This attribute represents reference to the objectified relationship that handles the relationship of the covering to the covered space. \param CoversSpaces [out] Receives the value of CoversSpaces attribute. */ void getInvCoversSpaces(OdDAIObjectIds& CoversSpaces) const; /** \details Returns the value of CoversElements attribute. This attribute represents reference to the objectified relationship that handles the relationship of the covering to the covered element. \param CoversElements [out] Receives the value of CoversElements attribute. \remarks IFC4 CHANGE: The attribute Covers is renamed to CoversElements. */ void getInvCoversElements(OdDAIObjectIds& CoversElements) const; public: /** \details Default constructor for the IfcCovering class. */ IfcCovering(); /** \details Reads object's data from the specified filer. \param rdFiler [in] Pointer to a filer from which to read the data. \returns A value of OdResult type that contains the result of the method execution. */ virtual OdResult inFields(OdDAI::OdSpfFilerBase* rdFiler) override; /** \details Writes object's data the the specified filer. \param wrFiler [in] Pointer to a filer to which to write the data. \returns A value of OdResult type that contains the result of the method execution. */ virtual OdResult outFields(OdDAI::OdSpfFilerBase* wrFiler) override; /** \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 Returns an attribute value for the specified attribute name. \param attrName [in] Name of an attribute to query. \returns OdRxValue object that represents a generic variant type value. */ virtual OdRxValue getAttr(const char * attrName) const override; /** \details Early-bound version of instances comparison. \param pOther [in] Other application instance. \param ordering [out] Receives the ordering (comparison) status. \returns true if comparison was performed, false if method has no implementation, so late-bound version could be applied. \remarks If the method returns true, the ordering parameter can receive one of the following statuses: Name Value Description _kLessThan_ -1 This object < Other Object. _kEqual_ 0 This object = Other Object. _kGreaterThan_ 1 This object > Other Object. _kNotOrderable_ 2 This class is not orderable.
*/ virtual bool comparedToEarlyImpl(const OdDAI::ApplicationInstance *pOther, OdRx::Ordering &ordering) const override; /** \details Resets a value for the specified attribute. \param explicitAttrName [in] Explicit name of the attribute to reset. */ virtual void unsetAttr(const char * explicitAttrName) override; /** \details Checks whether the specified attribute is set. \param explicitAttrName [in] Explicit name of the attribute to test. \returns true if the specified attribute is set, false otherwise. */ virtual bool testAttr(const char * explicitAttrName) const override; /** \details Sets the specified attribute with a given value. \param explicitAttrName [in] Explicit name of the attribute to set. \param val [in] Value to set. \returns true if the value is successfully set for the specified attribute, false otherwise. */ virtual bool putAttr(const char * explicitAttrName, const OdRxValue &val) 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 Returns an attribute value for the specified attribute definition. \param attrDef [in] Attribute definition to query. \returns OdRxValue object that represents a generic variant type value. */ virtual OdRxValue getAttr(const OdIfc::OdIfcAttribute attrDef) const override; /** \details Resets a value for the specified attribute. \param explicitAttrDef [in] Explicit definition that represents an attribute to reset. */ virtual void unsetAttr(const OdIfc::OdIfcAttribute explicitAttrDef) override; /** \details Checks whether the specified attribute is set. \param explicitAttrDef [in] Attribute definition to test. \returns true if the specified attribute is set, false otherwise. */ virtual bool testAttr(const OdIfc::OdIfcAttribute explicitAttrDef) const override; /** \details Sets the specified attribute with a given value. \param explicitAttrDef [in] Explicit attribute definition to set. \param val [in] Value to set. \returns true if the value is successfully set for the specified attribute, false otherwise. */ virtual bool putAttr(const OdIfc::OdIfcAttribute explicitAttrDef, const OdRxValue &val) override; protected: // Fields declaration: OdDAI::Enum m_PredefinedType; // IfcCoveringTypeEnum [optional] // Declare friend classes for inverse attributes functionality: friend class IfcRelCoversSpaces; friend class IfcRelCoversBldgElements; }; /** \details A data type that represents a smart pointer to a IfcCovering object. */ typedef OdSmartPtr IfcCoveringPtr; } // namespace #include "TD_PackPop.h" #endif // _IFC4X3_ADD2_IFCCOVERING_AUTO_IMPL_H