Class TIfcProduct

Unit

Declaration

type TIfcProduct = class abstract(TIfcObject)

Description

Any object that relates to a geometric or spatial context.

Spec: https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/lexical/IfcProduct.htm

Hierarchy

Overview

Methods

Public function BuildNode(const Mapping: TCastleIfcMapping): TTransformNode; override;
Public procedure AddMeshRepresentation( const Context: TIfcGeometricRepresentationContext; const Coordinates: array of TVector3; const Indexes: array of Integer);
Public procedure AddBoxRepresentation( const Context: TIfcGeometricRepresentationContext; const Box: TBox3D);
Public function PlacementRelativeToParent: Boolean;

Properties

Public property RelativePlacement: TVector3 read GetRelativePlacement write SetRelativePlacement;
Published property ObjectPlacement: TIfcObjectPlacement read FObjectPlacement write FObjectPlacement;
Published property Representation: TIfcProductRepresentation read FRepresentation write FRepresentation;

Description

Methods

Public function BuildNode(const Mapping: TCastleIfcMapping): TTransformNode; override;

This item has no description.

Public procedure AddMeshRepresentation( const Context: TIfcGeometricRepresentationContext; const Coordinates: array of TVector3; const Indexes: array of Integer);

Add mesh representation to the given product.

The mesh is expressed as a set of 3D points (Coordinates) and indexes to these coordinates (Indexes) that determine polygons. The indexes are 0-based and can be separated by -1 to delimit polygons.

See examples/ifc/ for an example usage of this routine to define walls and floors.

Parameters
Context
Geometric representation context instance, usually TIfcProject.ModelContext (for 3D models) or TIfcProject.PlanContext (for 2D floor plans).
Public procedure AddBoxRepresentation( const Context: TIfcGeometricRepresentationContext; const Box: TBox3D);

Add box representation to the given product.

Right now, the Box is transformed into a proper mesh representation, so this is just equivalent to calling AddMeshRepresentation with the 8 box corners and proper indexes to define 6 box sides.

Public function PlacementRelativeToParent: Boolean;

Does ObjectPlacement express a simple translation relative to the parent. This implies that using RelativePlacement to operate indirectly on ObjectPlacement makes sense, i.e. you do not loose information this way.

Properties

Public property RelativePlacement: TVector3 read GetRelativePlacement write SetRelativePlacement;

Position of this product relative to parent.

Check PlacementRelativeToParent before using this property.

  • Using this property when PlacementRelativeToParent is True makes most sense: it means that this simple property represents really everything interesting about the placement.

  • Using this property when PlacementRelativeToParent is False means that reading it returns TVector.Zero, and setting it overrides the previous placement setup. This may or may not be intuitive to your usage.

    In general, IFC offers various possibilities to define the placement of an object, relative to various parents. This property offers a simple way to change translation in the most common case, when the placement is relative to our parent in the hierarchy. If the ObjectPlacement defines placement in any other complicated way (e.g. with respect to some other object) then this property returns TVector3.Zero and PlacementRelativeToParent is False. Setting this property in such case will override the previous placement, which may result in object "jumping" suddenly to unexpected place.

Published property ObjectPlacement: TIfcObjectPlacement read FObjectPlacement write FObjectPlacement;

Object coordinate system and placement of the product in space.

Published property Representation: TIfcProductRepresentation read FRepresentation write FRepresentation;

Representations of the product.


Generated by PasDoc 0.16.0-snapshot.