sdaiGetAttrBN

...

Syntax

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

[DllImport(IFCEngineDLL, EntryPoint = "sdaiGetAttrBN")]
public static extern Int32 sdaiGetAttrBN(Int32 instance, string attributeName, Int32 valueType, out  Int32 value);

[DllImport(IFCEngineDLL, EntryPoint = "sdaiGetAttrBN")]
public static extern Int32 sdaiGetAttrBN(Int32 instance, string attributeName, Int32 valueType, out double value);

[DllImport(IFCEngineDLL, EntryPoint = "sdaiGetAttrBN")]
public static extern Int32 sdaiGetAttrBN(Int32 instance, string attributeName, Int32 valueType, out IntPtr value);

[DllImport(IFCEngineDLL, EntryPoint = "sdaiGetAttrBN")]
public static extern Int32 sdaiGetAttrBN(Int32 instance, byte[] attributeName, Int32 valueType, out  Int32 value);

[DllImport(IFCEngineDLL, EntryPoint = "sdaiGetAttrBN")]
public static extern Int32 sdaiGetAttrBN(Int32 instance, byte[] attributeName, Int32 valueType, out double value);

[DllImport(IFCEngineDLL, EntryPoint = "sdaiGetAttrBN")]
public static extern Int32 sdaiGetAttrBN(Int32 instance, byte[] attributeName, Int32 valueType, out IntPtr value);    

Property instance

Size: 32 bit / 4 byte (value)
Handle of an instance within an IFC file, for example #31313 = IFCWALLSTANDARDCASE(...)

Property attributeName

Size: 32 bit / 4 byte (reference)
Name of the attribute, for example Name of IFCROOT as defined in IFC4.exp.

Property valueType

Size: 32 bit / 4 byte (value)
Type of the value, for example sdaiSTRING, sdaiINSTANCE, sdaiREAL, ...

Property value

Size: 32 bit / 4 byte (reference)
Placeholder for the information, formatting depending on defined valueType.

Examples

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

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

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

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

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