This call retrieves an aggregation that contains all instances of the entity given.


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

[DllImport(IFCEngineDLL, EntryPoint = "sdaiGetEntityExtentBN")]
public static extern Int64 sdaiGetEntityExtentBN(Int64 model, string entityName);

[DllImport(IFCEngineDLL, EntryPoint = "sdaiGetEntityExtentBN")]
public static extern Int64 sdaiGetEntityExtentBN(Int64 model, byte[] entityName);    

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 entityName

Size: 64 bit / 8 byte (reference)
Name of the entity (schema item/class), for example IFCWALLSTANDARDCASE as defined in IFC4.exp.


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

void GetColumns(Int64 model)
    Int64 ifcColumnInstances = IfcEngine.x64.sdaiGetEntityExtentBN(model, System.Text.Encoding.UTF8.GetBytes("IFCCOLUMN")),
          noIfcColumnInstances = IfcEngine.x64.sdaiGetMemberCount(ifcColumnInstances);
    if (noIfcColumnInstances != 0)
        for (Int64 i = 0; i < noIfcColumnInstances; i++)
            Int64 ifcColumnInstance = 0;
            IfcEngine.x64.engiGetAggrElement(ifcColumnInstances, i, IfcEngine.x64.sdaiINSTANCE, out ifcColumnInstance);

            IntPtr globalIdPtr = IntPtr.Zero;
            IfcEngine.x64.sdaiGetAttrBN(ifcColumnInstance, System.Text.Encoding.UTF8.GetBytes("GlobalId"), IfcEngine.x64.sdaiUNICODE, out globalIdPtr);
            string globalId = Marshal.PtrToStringUni(globalIdPtr);

            IntPtr namePtr = IntPtr.Zero;
            IfcEngine.x64.sdaiGetAttrBN(ifcColumnInstance, System.Text.Encoding.UTF8.GetBytes("Name"), IfcEngine.x64.sdaiUNICODE, out namePtr);
            string name = Marshal.PtrToStringUni(namePtr);

            IntPtr descriptionPtr = IntPtr.Zero;
            IfcEngine.x64.sdaiGetAttrBN(ifcColumnInstance, System.Text.Encoding.UTF8.GetBytes("Description"), IfcEngine.x64.sdaiUNICODE, out descriptionPtr);
            string description = Marshal.PtrToStringUni(descriptionPtr);