engiGetEntityArgumentName

This call is deprecated, please use call engiGetAttrNameByIndex(..) instead.

Syntax

public const string enginedll = @"engine.dll";

[DllImport(enginedll, EntryPoint = "engiGetEntityArgumentName")]
public static extern IntPtr x86_engiGetEntityArgumentName(Int32 entity, Int32 index, Int32 valueType, out IntPtr attributeName);

[DllImport(enginedll, EntryPoint = "engiGetEntityArgumentName")]
public static extern IntPtr x64_engiGetEntityArgumentName(Int64 entity, Int64 index, Int64 valueType, out IntPtr attributeName);

public static IntPtr engiGetEntityArgumentName(Int64 entity, Int64 index, Int64 valueType, out IntPtr attributeName)
		{
			if (IntPtr.Size == 4)
			{
				var _result = x86_engiGetEntityArgumentName((Int32)entity, (Int32)index, (Int32)valueType, out IntPtr _attributeName);
				attributeName = _attributeName;
				return _result;
			}
			else
			{
				return x64_engiGetEntityArgumentName(entity, index, valueType, out attributeName);
			}
		}    

Property entity

Size: 64 bit / 8 byte (value)
...

Property index

Size: 64 bit / 8 byte (value)
...

Property valueType

Size: 64 bit / 8 byte (value)
...

Property attributeName

Size: 64 bit / 8 byte (reference)
???.

Example (based on pure API calls)

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

using RDF;      //  include at least engine.cs within your solution

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

        //
        //  Print Entity name
        //
        IntPtr entityName = ifcengine.engiGetEntityName(ifcEntity);
        Console.WriteLine("Entity  " + entityName);

        //
        //  Walk over attributes
        //
        while  (attributeCnt < ifcengine.engiGetEntityNoArguments(ifcEntity)) {
            string attributeName = ifcengine.engiGetEntityArgumentName(ifcEntity, attributeCnt);
            Int64 attributeType = 0;
            ifcengine.engiGetEntityArgumentType(ifcEntity, attributeCnt, out attributeType);

            Console.Write("  " + attributeName + "  ");
            switch  (attributeType) {
                case  ifcengine.sdaiSTRING:
                    Console.WriteLine("STRING");
                    break;

                ...

                default:
                    break;
            }

            attributeCnt++;
        }

        return  attributeCnt;
    }

    return  0;
}