///////////////////////////////////////////////////////////////////////////////
// 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 _IFC4_IFCFLOWSEGMENT_AUTO_IMPL_H
#define _IFC4_IFCFLOWSEGMENT_AUTO_IMPL_H
#include "IfcDistributionFlowElementAutoImpl.h"
#include "TD_PackPush.h"
/** \details
The namespace contains schema-dependent classes, definitions and sub routines
for work with IFC4 express schema definitions.
*/
namespace OdIfc4 {
/** \details
IfcFlowSegment defines the occurrence of a segment of a flow distribution system.
The IfcFlowSegment defines a particular occurrence of a segment inserted in the spatial context of a project.
The parameters defining the type of the segment and/or its shape are defined by the IfcFlowSegmentType,
which is related by the inverse relationship IsDefinedBy pointing to IfcRelDefinesByType.
- Axis Geometry -
Standard representations are defined at the supertype IfcDistributionFlowElement.
For parametric flow segments where IfcMaterialProfileSetUsage is defined and an 'Axis' representation is defined,
then the 'Body' representation can be generated using the 'SweptSolid' or
'AdvancedSweptSolid' representation types by sweeping the profile(s) along the axis.
- Material Profile Set Usage -
The material of the IfcFlowSegment is defined using one of the following entities:
* IfcMaterialProfileSetUsage : for parametric segments, this defines the cross section
and alignment to the 'Axis' representation, from which the 'Body' representation can be generated.
* IfcMaterialProfileSet : for non-parametric segments (having fixed length or path),
this can define the cross section for analysis purposes, however the 'Body' representation is independently generated.
* IfcMaterialConstituentSet : for elements containing multiple materials where profiles are not applicable, this indicates materials at named parts.
* IfcMaterial : for elements comprised of a single material where profiles are not applicable, this indicates the material.
The material is attached by the RelatingMaterial attribute on the IfcRelAssociatesMaterial relationship.
It is accessible by the HasAssociations inverse attribute.
Material information can also be given at the IfcFlowSegmentType, defining the common attribute data for all occurrences of the same type.
- Object Typing -
This concept can be applied to the following resources:
* IfcFlowSegmentType
*/
class IFC4_EXPORT IfcFlowSegment : public IfcDistributionFlowElement
{
//DOM-IGNORE-BEGIN
OD_EXP_DECLARE_MEMBERS(OdIfc4::IfcFlowSegment);
//DOM-IGNORE-END
public:
/** \details
Returns a type of a class instance.
\returns
Pointer to the