/////////////////////////////////////////////////////////////////////////////// // 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 _IFC4X2_IFCSLABSTANDARDCASE_AUTO_IMPL_H #define _IFC4X2_IFCSLABSTANDARDCASE_AUTO_IMPL_H #include "IfcSlabAutoImpl.h" #include "TD_PackPush.h" /** \details The namespace contains schema-dependent classes, definitions and sub routines for work with IFC4X2 express schema definitions. */ namespace OdIfc4x2 { /** \details The standard slab, IfcSlabStandardCase, defines a slab with certain constraints for the provision of material usage, parameters and with certain constraints for the geometric representation. The IfcSlabStandardCase handles all cases of slabs, that: * have a reference to the IfcMaterialLayerSetUsage defining the material layers of the slab with thicknesses * are based on an extrusion of a planar surface as defined by the slab profile * have a constant thickness along the extrusion direction * are consistent in using the correct material layer set offset to the base planar surface in regard to the shape representation * are extruded either perpendicular or slanted to the plane surface - Material Layer Set Usage - Multi-layer slabs can be represented by referring to several IfcMaterialLayer's within the IfcMaterialLayerSet that is referenced from the IfcMaterialLayerSetUsage. Material information can also be given at the IfcSlabType, defining the common attribute data for all occurrences of the same type. It is then accessible by the inverse IsDefinedBy relationship pointing to IfcSlabType.HasAssociations and via IfcRelAssociatesMaterial.RelatingMaterial. The IfcSlabStandardCase defines in addition that the IfcSlabType should have a unique IfcMaterialLayerSet, that is referenced by the IfcMaterialLayerSetUsage assigned to all occurrences of this IfcSlabType. The image below illustrates assignment of IfcMaterialLayerSetUsage and IfcMaterialLayerSet to the IfcSlabStandardCase as the slab occurrence and to the IfcSlabType. The same IfcMaterialLayerSet is shared by many occurrences of IfcMaterialLayerSetUsage. This relationship is consistent to the relationship between the IfcSlabType and the IfcSlabStandardCase. The image below illustrates slab material usage, where the following conventions are met: * The reference coordinate system is the coordinate system established by the IfcExtrudedAreaSolid.Position. * The reference plane is the plane defined by the extruded profile of IfcExtrudedAreaSolid.SweptSolid. The IfcMaterialLayerSetUsage.OffsetFromReferenceLine is given as a distance from this plane. * The IfcMaterialLayerSetUsage.DirectionSense defines how the IfcMaterialLayer's are assigned to the reference plane. POSITIVE means in direction to the positive z-axis of the reference coordinate system. * The IfcMaterialLayerSetUsage.OffsetFromReferenceLine is the distance parallel to the reference plane and always perpendicular to the base (XY) plane of the reference coordinate system. * The Thickness of each IfcMaterialLayer is the parallel distance (measured perpendicular to the base plane). The TotalThickness of the IfcMaterialLayerSet is the sum of all layer thicknesses and in case of a perpendicular extrusion identical with IfcExtrudedAreaSolid.Depth * The IfcMaterialLayerSetUsage.LayerSetDirection is always AXIS3. - Body SweptSolid Geometry - The following additional constraints apply to the swept solid representation: * Solid: IfcExtrudedAreaSolid is required, * Profile: IfcArbitraryClosedProfileDef, IfcRectangleProfileDef, IfcCircleProfileDef, IfcEllipseProfileDef are supported. * Extrusion: The profile can be extruded perpendicularly or non-perpendicularly to the plane of the swept profile. * Material: The definition of the IfcMaterialLayerSetUsage, particularly of the OffsetFromReferenceLine and the ForLayerSet.TotalThickness, has to be consistent to the 'SweptSolid' representation. The image below illustrates a 'SweptSolid' geometric representation. The following interpretation of dimension parameter applies for polygonal slabs (in ground floor view): IfcArbitraryClosedProfileDef.OuterCurve: closed bounded curve interpreted as area (or foot print) of the slab. - Body Clipping Geometry - The following constraints apply to the 'Clipping' representation: * Solid: see 'SweptSolid' shape representation, * Profile: see 'SweptSolid' shape representation, * Extrusion: see 'SweptSolid' shape representation, * Material: see 'SweptSolid' shape representation, * Boolean result: The IfcBooleanClippingResult is supported, providing Boolean differences between the swept solid (here IfcExtrudedAreaSolid) and one or several IfcHalfSpaceSolid. The image below illustrates a 'Clipping' geometric representation with definition of a roof slab using advanced geometric representation. The profile is extruded non-perpendicular and the slab body is clipped at the eave. */ class IFC4X2_EXPORT IfcSlabStandardCase : public IfcSlab { //DOM-IGNORE-BEGIN OD_EXP_DECLARE_MEMBERS(OdIfc4x2::IfcSlabStandardCase); //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 IfcSlabStandardCase object. */ typedef OdSmartPtr IfcSlabStandardCasePtr; } // namespace #include "TD_PackPop.h" #endif // _IFC4X2_IFCSLABSTANDARDCASE_AUTO_IMPL_H