This call returns a specific entity based on an index, the index needs to be 0 or higher but lower then the number of entities in the loaded schema.


public const string IFCEngineDLL = @"IFCEngine.dll";

[DllImport(IFCEngineDLL, EntryPoint = "engiGetEntityElement")]
public static extern Int64 engiGetEntityElement(Int64 model, Int64 index);    

Property model

Size: 64 bit / 8 byte (value)
Handle of the model containing the IFC file, this handle is needed in many other calls and given when the model is created.

Property index

Size: 64 bit / 8 byte (value)
Integer value equal or larger then 0 and smaller than given maximum length of array/list/aggregation used.


Here you can find code snippits that show how the API call engiGetEntityElement can be used.

void WriteEntities(Int64 model)
    Int64 i = 0, cnt = IfcEngine.x64.engiGetEntityCount(model);
    while  (i < cnt)
        IntPtr entityNamePtr = IntPtr.Zero;
        Int64 ifcEntity = IfcEngine.x64.engiGetEntityElement(model, i);
        IfcEngine.x64.engiGetEntityName(ifcEntity, IfcEngine.x64.sdaiSTRING, out entityNamePtr);
        string entityName = Marshal.PtrToStringAnsi(entityNamePtr);
        Console.WriteLine("Entity  " + entityName);