sdaiGetAttrDefinition

...

Syntax

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

[DllImport(enginedll, EntryPoint = "sdaiGetAttrDefinition")]
public static extern Int64 x86_sdaiGetAttrDefinition(Int32 entity, string attributeName);

[DllImport(enginedll, EntryPoint = "sdaiGetAttrDefinition")]
public static extern Int64 x64_sdaiGetAttrDefinition(Int64 entity, string attributeName);

public static Int64 sdaiGetAttrDefinition(Int64 entity, string attributeName)
		{
			if (IntPtr.Size == 4)
			{
				var _result = x86_sdaiGetAttrDefinition((Int32)entity, attributeName);
				return _result;
			}
			else
			{
				return x64_sdaiGetAttrDefinition(entity, attributeName);
			}
		}

[DllImport(enginedll, EntryPoint = "sdaiGetAttrDefinition")]
public static extern Int64 x86_sdaiGetAttrDefinition(Int32 entity, byte[] attributeName);

[DllImport(enginedll, EntryPoint = "sdaiGetAttrDefinition")]
public static extern Int64 x64_sdaiGetAttrDefinition(Int64 entity, byte[] attributeName);

public static Int64 sdaiGetAttrDefinition(Int64 entity, byte[] attributeName)
		{
			if (IntPtr.Size == 4)
			{
				var _result = x86_sdaiGetAttrDefinition((Int32)entity, attributeName);
				return _result;
			}
			else
			{
				return x64_sdaiGetAttrDefinition(entity, attributeName);
			}
		}    

Property entity

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 sdaiGetAttrDefinition can be used.

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

Int64 localGetAttrBN(Int64 instance, byte[] attributeName, Int64 valueType, out Int64 value)
{
    //
    //  This function is an alternative to the API call sdaiGetAttrBN()
    //  based on sdaiGetAttr().
    //
    //  Use of sdaiGetAttr() can lead to performance improvement compared to sdaiGetAttrBN().
    //
    Int64 instanceType = ifcengine.sdaiGetInstanceType(instance),
          attribute = ifcengine.sdaiGetAttrDefinition(instanceType, attributeName);

    return ifcengine.sdaiGetAttr(instance, attribute, valueType, out value);
}

Int64 localGetAttrBN(Int64 instance, byte[] attributeName, Int64 valueType, out double value)
{
    //
    //  This function is an alternative to the API call sdaiGetAttrBN()
    //  based on sdaiGetAttr().
    //
    //  Use of sdaiGetAttr() can lead to performance improvement compared to sdaiGetAttrBN().
    //
    Int64 instanceType = ifcengine.sdaiGetInstanceType(instance),
          attribute = ifcengine.sdaiGetAttrDefinition(instanceType, attributeName);

    return ifcengine.sdaiGetAttr(instance, attribute, valueType, out value);
}

Int64 localGetAttrBN(Int64 instance, byte[] attributeName, Int64 valueType, out IntPtr value)
{
    //
    //  This function is an alternative to the API call sdaiGetAttrBN()
    //  based on sdaiGetAttr().
    //
    //  Use of sdaiGetAttr() can lead to performance improvement compared to sdaiGetAttrBN().
    //
    Int64 instanceType = ifcengine.sdaiGetInstanceType(instance),
          attribute = ifcengine.sdaiGetAttrDefinition(instanceType, attributeName);

    return ifcengine.sdaiGetAttr(instance, attribute, valueType, out value);
}