///////////////////////////////////////////////////////////////////////////////
// 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_IFCSTRUCTURALITEM_AUTO_IMPL_H
#define _IFC4_IFCSTRUCTURALITEM_AUTO_IMPL_H
#include "IfcProductAutoImpl.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
The abstract entity IfcStructuralItem is the generalization of structural members and structural connections,
that is, analysis idealizations of elements in the building model.
It defines the relation between structural members and connections with structural activities (actions and reactions).
- Coordinate Systems -
The following coordinate systems are distinguished:
* The so-called global coordinate system is the coordinate system shared
by all items and activities which are grouped in a common IfcStructuralAnalysisModel.
This coordinate system is established by SELF\IfcProduct.ObjectPlacement.
(This coordinate system is not necessarily the same as the IfcProject's world coordinate system.)
* The so-called local coordinate system is a coordinate system local to a structural item (connection or member).
This coordinate system is established by a Representation (attribute inherited from IfcProduct)
in conjunction with further use definitions and attributes of subtypes of IfcStructuralItem.
Representation items in topology representations are always given within the ObjectPlacement,
i.e. in so-called global coordinates (global with respect to the IfcStructuralAnalysisModel to which this item belongs).
- Topology Use Definitions -
Instances of IfcStructuralItem have a topology representation. It includes a placement and a product representation.
The IfcProductRepresentation is given by an item in a Representation of type IfcTopologyRepresentation.
- Local Placement -
The local placement for IfcStructuralItem is defined in its supertype IfcProduct.
It is defined by the IfcLocalPlacement, which establishes a global coordinate system
that is common to all items and activities in an IfcStructuralAnalysisModel.
- Topology Representation -
Instances of IfcStructuralItem have a topology representation given by an instance of a subtype of IfcTopologicalRepresentationItem,
which should be the single item of IfcTopologyRepresentation.Items attribute.
Depending on the dimensionality of the structural item, one of the following types of topological representation items can be used:
* Point connections are represented by an IfcVertexPoint with an underlying IfcCartesianPoint.
The Cartesian point is the reference point of the connection in the so-called global coordinate system.
The following labels are used in the IfcTopologyRepresentation:
* RepresentationIdentifier: 'Reference'
* RepresentationType: 'Vertex'
* Curve members and curve connections can either be represented by an IfcOrientedEdge, IfcEdgeCurve, or IfcEdge.
The curve to which the IfcEdgeCurve (or an IfcOrientedEdge's underlying IfcEdgeCurve)
refers to is the reference curve of the structural item in the global coordinate system.
Start and end vertex of the edge is _IfcVertexPoint_s with underlying _IfcCartesianPoint_s.
The following labels are used in the IfcTopologyRepresentation:
* RepresentationIdentifier: 'Reference'
* RepresentationType: 'Edge'
* Surface members and surface connections are represented by an IfcFaceSurface.
The underlying surface defines the reference surface of the structural surface item in the global coordinate system.
All edges in the bounds of the face conform to the rules for edge representations of structural curve item.
The following labels are used in the IfcTopologyRepresentation:
* RepresentationIdentifier: 'Reference'
* RepresentationType: 'Face'
The reference point, reference curve, or reference surface partially or completely defines the local coordinate system
of the represented structural item according to the following rules.
In all cases, the local x,y,z directions form a right-handed Cartesian coordinate system.
Structural point items
* The reference point in the representation is the origin of the local coordinate system of the structural item.
* The axes of the local coordinate system are either parallel with and directed like the so-called global coordinate axes,
or are oriented according to definitions at the respective subtype of IfcStructuralItem.
Structural curve items
* The u parameter origin of the reference curve in the representation is the origin of the local coordinate system of the structural item.
* The local x axis is parallel with the tangent on the curve and directed like the u parameter direction.
* The local y and z axes are oriented according to definitions at the respective subtypes of IfcStructuralItem.
Structural surface items
* The u,v parameter origin of the reference surface in the representation is the origin of the local coordinate system of the structural item.
* The local x and y directions follow the tangents on the surface and are in parallel with and directed like u and v respectively.
* The local z direction is in parallel with and directed like the surface normal.
\remarks
This definition cannot be instantiated.
*/
class IFC4_EXPORT IfcStructuralItem : public IfcProduct
{
//DOM-IGNORE-BEGIN
OD_EXP_NON_INSTANTIABLE_DECLARE_MEMBERS(OdIfc4::IfcStructuralItem);
//DOM-IGNORE-END
public:
//
// OdDAI early binding accessors
//
/** \details
Returns the value of AssignedStructuralActivity attribute.
This attribute represents inverse relationship to all structural activities
(i.e. to actions or reactions) which are assigned to this structural member.
\param AssignedStructuralActivity [out] Receives the value of AssignedStructuralActivity attribute.
*/
void getInvAssignedStructuralActivity(OdDAIObjectIds& AssignedStructuralActivity) const;
public:
/** \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