Class TIfcFile

Unit

Declaration

type TIfcFile = class(TIfcPersistent)

Description

IFC file representation.

This class is not defined in the IFC standard, but it is consistent with how the IFC file is actually represented, in both STEP and JSON encodings. The file starts with some metadata (in STEP header, on JSON top-level object) and then follows the "data" which is TIfcProject instance.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 103).

Hierarchy

Show Additional Members:

Overview

Methods

Protected function WantsGlobalId: Boolean; virtual;
Protected class function IfcClassName: String; virtual;
Public constructor Create(AOwner: TComponent); override;
Public destructor Destroy; override;
Public function BuildNode(const Mapping: TCastleIfcMapping): TX3DRootNode;

Properties

Published property GlobalId: String read FGlobalId write FGlobalId;
Public property Project: TIfcProject read FProject write FProject;
Published property EncodingType: String read FEncodingType write FEncodingType;
Published property Version: String read FVersion write FVersion;
Published property SchemaIdentifier: String read FSchemaIdentifier write FSchemaIdentifier;
Published property OriginatingSystem: String read FOriginatingSystem write FOriginatingSystem;
Published property PreprocessorVersion: String read FPreprocessorVersion write FPreprocessorVersion;
Published property TimeStamp: String read FTimeStamp write FTimeStamp;

Description

Methods

Protected function WantsGlobalId: Boolean; virtual;

This item is declared in ancestor TIfcPersistent.

If True, instances of this class will have GlobalId auto-assigned at saving, and they will be saved as part of the "data" list in IFC JSON files.

Strictly following the spec, this should be only defined for TIfcRoot, because only IfcRoot has GlobalId. In reality, we need GlobalId at TIfcPersistent to load some files, and we sometimes need WantsGlobalId = True to save some files.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 52).

Protected class function IfcClassName: String; virtual;

This item is declared in ancestor TIfcPersistent.

Name for the IFC standard, used in IFC files. By default, this is just ClassName with prefix 'T' removed.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 56).

Public constructor Create(AOwner: TComponent); override;

This item has no description.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 134).

Public destructor Destroy; override;

This item has no description.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 135).

Public function BuildNode(const Mapping: TCastleIfcMapping): TX3DRootNode;

This item has no description.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 137).

Properties

Published property GlobalId: String read FGlobalId write FGlobalId;

This item is declared in ancestor TIfcPersistent.

Globally unique identifier for the object instance.

Note: Not declared as TGUID, because TGUID cannot be published, but also we don't really need it: for our purposes, this identifier is just an arbitrary string.

Note: IFC 4.3 specification puts this only at IfcRoot, not at every IFC class. But testcase https://github.com/buildingsmart-community/Community-Sample-Test-Files/blob/main/IFC%204.0.2.1%20(IFC%204)/ISO%20Spec%20archive/wall-with-opening-and-window.json (from IFC 4.0) shows this can be present at any IFC class, in particular TIfcGeometricRepresentationContext.

In fact, TIfcGeometricRepresentationContext needs to have GlobalId to be successfully saved (avoid recursively trying to serialize it) in some cases. We indicate such classes with WantsGlobalId.

IFC JSON documentation says this, which seems to (unfortunately it is not unambiguous enough...) allow this at any IFC class: "Whereas the globalId attribute is only available to those elements that are descendent of the IfcRoot entity in the EXPRESS schema, we encourage a broader use of this globalId, to enable referencing between objects in a JSON file when useful.".

Source: scene/load/ifc/castleifc_ifc_types.inc (line 79).

Public property Project: TIfcProject read FProject write FProject;

Project, always exactly one TIfcProject instance inside IFC file. May be temporarily Nil when building a new IFC file, but all valid IFC files should have this assigned.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 142).

Published property EncodingType: String read FEncodingType write FEncodingType;

This item has no description.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 144).

Published property Version: String read FVersion write FVersion;

This item has no description.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 145).

Published property SchemaIdentifier: String read FSchemaIdentifier write FSchemaIdentifier;

This item has no description.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 146).

Published property OriginatingSystem: String read FOriginatingSystem write FOriginatingSystem;

This item has no description.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 147).

Published property PreprocessorVersion: String read FPreprocessorVersion write FPreprocessorVersion;

This item has no description.

Source: scene/load/ifc/castleifc_ifc_types.inc (line 148).

Published property TimeStamp: String read FTimeStamp write FTimeStamp;

TODO: If ever necessary, convert this to TDateTime

Source: scene/load/ifc/castleifc_ifc_types.inc (line 150).


Generated by PasDoc 0.17.0.snapshot.