/////////////////////////////////////////////////////////////////////////////// // 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_IFCASYMMETRICISHAPEPROFILEDEF_AUTO_IMPL_H #define _IFC4X3_ADD2_IFCASYMMETRICISHAPEPROFILEDEF_AUTO_IMPL_H #include "IfcParameterizedProfileDefAutoImpl.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 IfcAsymmetricIShapeProfileDef defines a section profile that provides the defining parameters of a singly symmetric I-shaped section. Its parameters and orientation relative to the position coordinate system are according to the following illustration. The center of the position coordinate system is in the profile's center of the bounding box. IfcAsymmetricIShapeProfileDef can also be used to model rail profiles if the application scenario does not require a full explicit shape model of the rail profile. Alternatively, IfcArbitraryClosedProfileDef can be used to provide the exact shape of rail profiles. A reference to an external document or library should be provided to further define the profile as described at IfcProfileDef. The image below illustrates parameters of the asymmetric I-shaped section definition. The parameterized profile defines its own position coordinate system. The underlying coordinate system is defined by the swept area solid that uses the profile definition. It is the xy plane of: * IfcSweptAreaSolid.Position By using offsets of the position location, the parameterized profile can be positioned centric (using x,y offsets = 0.), or at any position relative to the profile. The parameterized profile is defined by a set of parameter attributes. In the illustrated example, the 'CentreOfGravityInY' property in IfcExtendedProfileProperties, if provided, is negative. \changes * IFC4 changes: * Attribute CentreOfGravityInY renamed to BottomFlangeThickness * Attribute CentreOfGravityInY is optional, changed from "True" to "False" * Attribute TopFlangeFilletRadius renamed to WebThickness * Attribute TopFlangeFilletRadius is optional, changed from "True" to "False" * Supertype changed from IfcIShapeProfileDef to IfcParameterizedProfileDef */ class IFC4X3_EXPORT IfcAsymmetricIShapeProfileDef : public IfcParameterizedProfileDef { //DOM-IGNORE-BEGIN OD_EXP_DECLARE_MEMBERS(OdIfc4x3_add2::IfcAsymmetricIShapeProfileDef); //DOM-IGNORE-END public: // // OdDAI early binding accessors // /** \details Returns the value of BottomFlangeWidth attribute. This attribute represents extent of the bottom flange, defined parallel to the x axis of the position coordinate system. \returns Returns the value of BottomFlangeWidth attribute. */ double getBottomFlangeWidth() const; /** \details Sets the value of BottomFlangeWidth attribute. This attribute represents extent of the bottom flange, defined parallel to the x axis of the position coordinate system. \param BottomFlangeWidth [in] Bottom flange width to set. */ void setBottomFlangeWidth(double BottomFlangeWidth); /** \details Returns the value of OverallDepth attribute. This attribute represents total extent of the depth, defined parallel to the y axis of the position coordinate system. \returns Returns the value of OverallDepth attribute. */ double getOverallDepth() const; /** \details Sets the value of OverallDepth attribute. This attribute represents total extent of the depth, defined parallel to the y axis of the position coordinate system. \param OverallDepth [in] Overall depth to set. */ void setOverallDepth(double OverallDepth); /** \details Returns the value of WebThickness attribute. This attribute represents thickness of the web of the I-shape. The web is centred on the x-axis and the y-axis of the position coordinate system. \returns Returns the value of WebThickness attribute. */ double getWebThickness() const; /** \details Sets the value of WebThickness attribute. This attribute represents thickness of the web of the I-shape. The web is centred on the x-axis and the y-axis of the position coordinate system. \param WebThickness [in] Web thickness to set. */ void setWebThickness(double WebThickness); /** \details Returns the value of BottomFlangeThickness attribute. This attribute represents flange thickness of the bottom flange. \returns Returns the value of BottomFlangeThickness attribute. */ double getBottomFlangeThickness() const; /** \details Sets the value of BottomFlangeThickness attribute. This attribute represents flange thickness of the bottom flange. \param BottomFlangeThickness [in] Bottom flange thickness to set. */ void setBottomFlangeThickness(double BottomFlangeThickness); /** \details Returns the value of BottomFlangeFilletRadius attribute. This attribute represents the fillet between the web and the bottom flange. 0 if sharp-edged, omitted if unknown. \returns Returns the value of BottomFlangeFilletRadius attribute. */ double getBottomFlangeFilletRadius() const; /** \details Sets the value of BottomFlangeFilletRadius attribute. This attribute represents the fillet between the web and the bottom flange. 0 if sharp-edged, omitted if unknown. \param BottomFlangeFilletRadius [in] Bottom flange fillet radius to set. */ void setBottomFlangeFilletRadius(double BottomFlangeFilletRadius); /** \details Returns the value of TopFlangeWidth attribute. This attribute represents extent of the top flange, defined parallel to the x axis of the position coordinate system. \returns Returns the value of TopFlangeWidth attribute. */ double getTopFlangeWidth() const; /** \details Sets the value of TopFlangeWidth attribute. This attribute represents extent of the top flange, defined parallel to the x axis of the position coordinate system. \param TopFlangeWidth [in] Top flange width to set. */ void setTopFlangeWidth(double TopFlangeWidth); /** \details Returns the value of TopFlangeThickness attribute. This attribute represents flange thickness of the top flange. \returns Returns the value of TopFlangeThickness attribute. */ double getTopFlangeThickness() const; /** \details Sets the value of TopFlangeThickness attribute. This attribute represents flange thickness of the top flange. \param TopFlangeThickness [in] Top flange thickness to set. */ void setTopFlangeThickness(double TopFlangeThickness); /** \details Returns the value of TopFlangeFilletRadius attribute. This attribute represents the fillet between the web and the top flange. 0 if sharp-edged, omitted if unknown. \returns Returns the value of TopFlangeFilletRadius attribute. */ double getTopFlangeFilletRadius() const; /** \details Sets the value of TopFlangeFilletRadius attribute. This attribute represents the fillet between the web and the top flange. 0 if sharp-edged, omitted if unknown. \param TopFlangeFilletRadius [in] Top flange fillet radius to set. */ void setTopFlangeFilletRadius(double TopFlangeFilletRadius); /** \details Returns the value of BottomFlangeEdgeRadius attribute. This attribute represents radius of the upper edges of the bottom flange. 0 if sharp-edged, omitted if unknown. \returns Returns the value of BottomFlangeEdgeRadius attribute. */ double getBottomFlangeEdgeRadius() const; /** \details Sets the value of BottomFlangeEdgeRadius attribute. This attribute represents radius of the upper edges of the bottom flange. 0 if sharp-edged, omitted if unknown. \param BottomFlangeEdgeRadius [in] Bottom flange edge radius to set. */ void setBottomFlangeEdgeRadius(double BottomFlangeEdgeRadius); /** \details Returns the value of BottomFlangeSlope attribute. This attribute represents slope of the upper faces of the bottom flange. Non-zero in case of of tapered bottom flange, 0 in case of parallel bottom flange, omitted if unknown. \returns Returns the value of BottomFlangeSlope attribute. */ double getBottomFlangeSlope() const; /** \details Sets the value of BottomFlangeSlope attribute. This attribute represents slope of the upper faces of the bottom flange. Non-zero in case of of tapered bottom flange, 0 in case of parallel bottom flange, omitted if unknown. \param BottomFlangeSlope [in] Bottom flange slope to set. */ void setBottomFlangeSlope(double BottomFlangeSlope); /** \details Returns the value of TopFlangeEdgeRadius attribute. This attribute represents radius of the lower edges of the top flange. 0 if sharp-edged, omitted if unknown. \returns Returns the value of TopFlangeEdgeRadius attribute. */ double getTopFlangeEdgeRadius() const; /** \details Sets the value of TopFlangeEdgeRadius attribute. This attribute represents radius of the lower edges of the top flange. 0 if sharp-edged, omitted if unknown. \param TopFlangeEdgeRadius [in] Top flange edge radius to set. */ void setTopFlangeEdgeRadius(double TopFlangeEdgeRadius); /** \details Returns the value of TopFlangeSlope attribute. This attribute represents slope of the lower faces of the top flange. Non-zero in case of of tapered top flange, 0 in case of parallel top flange, omitted if unknown. \returns Returns the value of TopFlangeSlope attribute. */ double getTopFlangeSlope() const; /** \details Sets the value of TopFlangeSlope attribute. This attribute represents slope of the lower faces of the top flange. Non-zero in case of of tapered top flange, 0 in case of parallel top flange, omitted if unknown. \param TopFlangeSlope [in] Top flange slope to set. */ void setTopFlangeSlope(double TopFlangeSlope); public: /** \details Default constructor for the IfcAsymmetricIShapeProfileDef class. */ IfcAsymmetricIShapeProfileDef(); /** \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_BottomFlangeWidth; // IfcPositiveLengthMeasure IfcPositiveLengthMeasure m_OverallDepth; // IfcPositiveLengthMeasure IfcPositiveLengthMeasure m_WebThickness; // IfcPositiveLengthMeasure IfcPositiveLengthMeasure m_BottomFlangeThickness; // IfcPositiveLengthMeasure IfcNonNegativeLengthMeasure m_BottomFlangeFilletRadius; // IfcNonNegativeLengthMeasure [optional] IfcPositiveLengthMeasure m_TopFlangeWidth; // IfcPositiveLengthMeasure IfcPositiveLengthMeasure m_TopFlangeThickness; // IfcPositiveLengthMeasure [optional] IfcNonNegativeLengthMeasure m_TopFlangeFilletRadius; // IfcNonNegativeLengthMeasure [optional] IfcNonNegativeLengthMeasure m_BottomFlangeEdgeRadius; // IfcNonNegativeLengthMeasure [optional] double m_BottomFlangeSlope; // IfcPlaneAngleMeasure [optional] IfcNonNegativeLengthMeasure m_TopFlangeEdgeRadius; // IfcNonNegativeLengthMeasure [optional] double m_TopFlangeSlope; // IfcPlaneAngleMeasure [optional] }; /** \details A data type that represents a smart pointer to a IfcAsymmetricIShapeProfileDef object. */ typedef OdSmartPtr IfcAsymmetricIShapeProfileDefPtr; } // namespace #include "TD_PackPop.h" #endif // _IFC4X3_ADD2_IFCASYMMETRICISHAPEPROFILEDEF_AUTO_IMPL_H