This call can be used to retrieve the type of the n-th argument of the given entity. In case of a select argument no relevant information is given by this call as it depends on the instance. Arguments of parent entities are included in the index. Both direct and inverse arguments are included.


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

[DllImport(IFCEngineDLL, EntryPoint = "engiGetEntityArgumentType")]
public static extern void engiGetEntityArgumentType(Int64 entity, Int64 index, ref Int64 argumentType);    

Property entity

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

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.

Property argumentType

Size: 64 bit / 8 byte (reference)
Type of the argument, for example sdaiSTRING, sdaiINSTANCE, sdaiREAL, ...


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

Int64 WriteEntityStructure(Int64 ifcEntity)
    if (ifcEntity != 0)
        //  Iterate over the parents
        Int64 attributeCnt = WriteEntityStructure(IfcEngine.x64.engiGetEntityParent(ifcEntity));

        //  Print Entity name
        IntPtr entityNamePtr = IntPtr.Zero;
        IfcEngine.x64.engiGetEntityName(ifcEntity, IfcEngine.x64.sdaiSTRING, out entityNamePtr);
        string entityName = Marshal.PtrToStringAnsi(entityNamePtr);
        Console.WriteLine("Entity  " + entityName);

        //  Walk over attributes
        while  (attributeCnt < IfcEngine.x64.engiGetEntityNoArguments(ifcEntity)) {
            IntPtr attributeNamePtr = IntPtr.Zero;
            Int64 attributeType = 0;
            IfcEngine.x64.engiGetEntityArgumentName(ifcEntity, attributeCnt, IfcEngine.x64.sdaiSTRING, out attributeNamePtr);
            IfcEngine.x64.engiGetEntityArgumentType(ifcEntity, attributeCnt, ref attributeType);
            string attributeName = Marshal.PtrToStringAnsi(attributeNamePtr);

            Console.Write("  " + attributeName + "  ");
            switch  (attributeType) {
                case  IfcEngine.x64.sdaiSTRING:




        return  attributeCnt;

    return  0;