/////////////////////////////////////////////////////////////////////////////// // 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_IFCDOOR_AUTO_IMPL_H #define _IFC4X3_ADD2_IFCDOOR_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 The door is a built element that is predominately used to provide controlled access for people, goods, animals and vehicles. It includes constructions with hinged, pivoted, sliding, and additionally revolving and folding operations. A door can: * be a "free standing" door, contained in an IfcSpatialElement such as an IfcBuildingStorey * fill an opening, typically in a wall. The door will then have a FillsVoids attribute which uses the IfcRelFillsElement relationship to relate the IfcDoor with the IfcOpeningElement * be part of an element assembly, typically an IfcCurtainWall. The door will then have a Decomposes attribute which uses the the IfcRelAggregates relationship to relate the door with the assembly of elements There are two main representations for door occurrences: * IfcDoor entities that have a 3D rectangle 'Profile' shape representation defined. This profile can then be used to parametrically generate the geometry of a door. If not provided, the profile of the IfcOpeningElement can be used if the door fills an opening. The parameters are specified on the relating IfcDoorType that references IfcDoorLiningProperties and IfcDoorPanelProperties for each panel in the door * IfcDoor entities that are not parametrically generated and have only 'Brep', or 'SurfaceModel' geometry The parameters of a door are defined by both the IfcDoor occurrence and its IfcDoorType. The IfcDoor specifies: * the door width and height * the door opening direction (by the positive y-axis of the ObjectPlacement) The IfcDoorType specifies parameters which are common to all of its occurrences of IfcDoor: * the operation type (single swing, double swing, revolving, etc.) * the door hinge side (by using two different styles for right and left opening doors) * the particular attributes for the lining by the IfcDoorLiningProperties * the particular attributes for the panels by the IfcDoorPanelProperties - Door Attributes - The opening direction is determined by the local placement of IfcDoor and the OperationType of the IfcDoorType. The IfcDoorTypeOperationEnum defines the general layout of the door type and its symbolic presentation. Depending on the enumerator, the appropriate instances of IfcDoorLiningProperties and IfcDoorPanelProperties are attached in the list of HasPropertySets. The IfcDoorTypeOperationEnum mainly determines the hinge side (left hung, or right hung), the operation (swinging, sliding, folding, etc.) and the number of panels. There are different definitions in various countries on what a left opening or left hung or left swing door is (same for right). Therefore the IFC definition can derivate from the local standard and need to be mapped appropriately. - Material Set - This concept can be applied to the following resources: * Lining - Indicates that the material constituent applies to the door lining * Framing - Indicates that the material constituent applies to the door panel(s); if not provided, the 'Lining' material information applies to panel(s) as well * Glazing - Indicates that the material constituent applies to the glazing part - Object Typing - This concept can be applied to the following resources: * IfcDoorType - Product Local Placement - The product placement is used to determine the opening direction of the door. Restrictions for this concept: * The PlacementRelTo relationship of IfcLocalPlacement points to the local placement of the same element (if specified), in which the IfcDoor is used as a filling (normally an IfcOpeningElement), as provided by the IfcRelFillsElement relationship * If the IfcDoor is part of an assembly, e.g. an IfcCurtainWall, then the PlacementRelTo relationship of IfcLocalPlacement points (if specified) to the local placement of that assembly * If the IfcDoor is not inserted into an IfcOpeningElement, then the PlacementRelTo relationship of IfcLocalPlacement points (if specified) to the local placement of the same IfcSpatialStructureElement that is used in the ContainedInStructure inverse attribute or to a referenced spatial structure element at a higher level - Profile 3D Geometry - The door profile is represented by a three-dimensional closed curve lying in the xz plane. The profile is used to apply the parameters of a parametric door representation. The following attribute values for the IfcShapeRepresentation holding this geometric representation is used: * RepresentationIdentifier: 'Profile' * RepresentationType: 'Curve3D' or 'GeometricCurveSet'. In case of 'GeometricCurveSet' only a single closed curve is contained in the set of IfcShapeRepresentation.Items The image below illustrates applying the door lining parameters to the door profile shape representation. The profile defines the outer boundary to which the door lining parameters relate as: * IfcDoorLiningProperties.LiningDepth starting at distance defined by LiningOffset going into the positive y direction * IfcDoorLiningProperties.LiningThickness offset into the inner side of the rectangle * IfcDoorLiningProperties.LiningOffset distance along the positive y direction to where the LiningDepth applies * IfcDoorLiningProperties.ThresholdThickness starting at the bottom edge of the rectangle into the inner side of the rectangle * IfcDoorLiningProperties.ThresholdDepth starting at distance defined by LiningOffset going into the positive y direction * IfcDoorLiningProperties.TransomOffset starting at the bottom edge of the rectangle (along local x axis) into the inner side of the rectangle, distance provided as percentage of overall height. Distance to the center line of the transom - Property Sets for Objects - * Pset_ProcessCapacity * Pset_DoorCommon * Pset_DoorWindowGlazingType * Pset_TicketProcessing (only applies to BOOM_BARRIER) * Pset_TicketProcessing (only applies to TURNSTILE) * Pset_DoorTypeTurnstile (only applies to TURNSTILE) - Quantity Sets - This concept can be applied to the following resources: * Qto_DoorBaseQuantities - Spatial Containment - The IfcDoor, as any subtype of IfcBuildingElement, can participate alternatively in one of the two different containment relationships: * the Spatial Containment (defined here) * the Element Composition The IfcDoor can also be connected to the IfcOpeningElement in which it is placed as a filler. In this case, the spatial containment relationship is provided, see the image below. \remarks It is recommended to use an IfcDoor with a 'Profile' representation instead of IfcDoorStandardCase, since IfcDoorStandardCase entity has been removed \changes * IFC4X3_RC1 changes: Supertype changed from "IfcBuildingElement" to "IfcBuiltElement" */ class IFC4X3_EXPORT IfcDoor : public IfcBuiltElement { //DOM-IGNORE-BEGIN OD_EXP_DECLARE_MEMBERS(OdIfc4x3_add2::IfcDoor); //DOM-IGNORE-END public: // // OdDAI early binding accessors // /** \details Returns the value of OverallHeight attribute. This attribute represents overall measure of the height, it reflects the Z Dimension of a bounding box, enclosing the body of the door opening. If omitted, the OverallHeight should be taken from the geometric representation of the IfcOpening in which the door is inserted. \returns Returns the value of OverallHeight attribute. \remarks The body of the door might be taller then the door opening (e.g. in cases where the door lining includes a casing). In these cases the OverallHeight is still specified as the door opening height, and not as the total height of the door lining. */ double getOverallHeight() const; /** \details Sets the value of OverallHeight attribute. This attribute represents overall measure of the height, it reflects the Z Dimension of a bounding box, enclosing the body of the door opening. If omitted, the OverallHeight should be taken from the geometric representation of the IfcOpening in which the door is inserted. \param OverallHeight [in] Overall height to set. \remarks The body of the door might be taller then the door opening (e.g. in cases where the door lining includes a casing). In these cases the OverallHeight is still specified as the door opening height, and not as the total height of the door lining. */ void setOverallHeight(double OverallHeight); /** \details Returns the value of OverallWidth attribute. This attribute represents overall measure of the width, it reflects the X Dimension of a bounding box, enclosing the body of theE door opening. If omitted, the OverallWidth should be taken from the geometric representation of the IfcOpening in which the door is inserted. \returns Returns the value of OverallWidth attribute. \remarks The body of the door might be wider then the door opening (e.g. in cases where the door lining includes a casing). In these cases the OverallWidth is still specified as the door opening width, and not as the total width of the door lining. */ double getOverallWidth() const; /** \details Sets the value of OverallWidth attribute. This attribute represents overall measure of the width, it reflects the X Dimension of a bounding box, enclosing the body of theE door opening. If omitted, the OverallWidth should be taken from the geometric representation of the IfcOpening in which the door is inserted. \param OverallWidth [in] Overall width to set. \remarks The body of the door might be wider then the door opening (e.g. in cases where the door lining includes a casing). In these cases the OverallWidth is still specified as the door opening width, and not as the total width of the door lining. */ void setOverallWidth(double OverallWidth); /** \details Returns the value of PredefinedType attribute. This attribute represents a list of types to further identify the object. Some property sets can be specifically applicable to one of these types. \returns Returns the value of PredefinedType attribute. \remarks If the object has an associated IfcTypeObject with a PredefinedType, then this attribute is not used. */ IfcDoorTypeEnum getPredefinedType() const; /** \details Sets the value of PredefinedType attribute. This attribute represents a list of types to further identify the object. Some property sets can be specifically applicable to one of these types. \param PredefinedType [in] Predefined type to set. \remarks If the object has an associated IfcTypeObject with a PredefinedType, then this attribute is not used. */ void setPredefinedType(IfcDoorTypeEnum PredefinedType); /** \details Returns the value of OperationType attribute. This attribute represents type defining the general layout and operation of the door type in terms of the partitioning of panels and panel operations. \returns Returns the value of OperationType attribute. \remarks The OperationType is only used if no type object IfcDoorType is assigned, providing its own IfcDoorType.OperationType. */ IfcDoorTypeOperationEnum getOperationType() const; /** \details Sets the value of OperationType attribute. This attribute represents type defining the general layout and operation of the door type in terms of the partitioning of panels and panel operations. \param OperationType [in] Operation type to set. \remarks The OperationType is only used if no type object IfcDoorType is assigned, providing its own IfcDoorType.OperationType. */ void setOperationType(IfcDoorTypeOperationEnum OperationType); /** \details Returns the value of UserDefinedOperationType attribute. This attribute represents designator for the user defined operation type is only provided if the value of OperationType is set to USERDEFINED. \returns Returns the value of UserDefinedOperationType attribute. */ const OdAnsiString& getUserDefinedOperationType() const; /** \details Sets the value of UserDefinedOperationType attribute. This attribute represents designator for the user defined operation type is only provided if the value of OperationType is set to USERDEFINED. \param UserDefinedOperationType [in] User-defined operation type to set. */ void setUserDefinedOperationType(const OdAnsiString& UserDefinedOperationType); public: /** \details Default constructor for the IfcDoor class. */ IfcDoor(); /** \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: IfcPositiveLengthMeasure m_OverallHeight; // IfcPositiveLengthMeasure [optional] IfcPositiveLengthMeasure m_OverallWidth; // IfcPositiveLengthMeasure [optional] OdDAI::Enum m_PredefinedType; // IfcDoorTypeEnum [optional] OdDAI::Enum m_OperationType; // IfcDoorTypeOperationEnum [optional] OdAnsiString m_UserDefinedOperationType; // IfcLabel [optional] }; /** \details A data type that represents a smart pointer to a IfcDoor object. */ typedef OdSmartPtr IfcDoorPtr; } // namespace #include "TD_PackPop.h" #endif // _IFC4X3_ADD2_IFCDOOR_AUTO_IMPL_H