This call is used to open a model with Unicode character namings (technically via wchar_t, different lengths (16 bit and 32 bit) on different systems are supported). The property repository is expected to be 0 in all cases, however will be ignored. The property fileName is optional and can be 0 or an empty string, i.e. ""; in both cases an empty model against the defined schema is created. The property schemaName is non optional and has to link to an existing valid schema.


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

[DllImport(IFCEngineDLL, EntryPoint = "sdaiOpenModelBNUnicode")]
public static extern Int32 sdaiOpenModelBNUnicode(Int32 repository, byte[] fileName, byte[] schemaName);    

Property repository

Size: 32 bit / 4 byte (value)
Not relevant within the IFC Engine DLL, although several models can be loaded at once, they will always be in separate models.

Property fileName

Size: 32 bit / 4 byte (reference)
Address of string containing the path of the IFC file, for example 'C:\myPath\myFile.ifc' or 'C:\myPath\myFile.ifcXML'.

Property schemaName

Size: 32 bit / 4 byte (reference)
Address of string containing the path of the IFC schema, for example 'C:\myPath\IFC4.exp'.


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

string ifcFileName = "myFile 友𠂇又.ifc";

Int32 model = IfcEngine.x86.sdaiOpenModelBNUnicode(0, System.Text.Encoding.Unicode.GetBytes(ifcFileName), System.Text.Encoding.Unicode.GetBytes("IFC2X3_TC1.exp"));

if (model != 0)
    ...         //  Use the open model to read/write/edit the content
    ...         //  or to create geometry

    string ifcFileNameSaving = "mySavedFile 友𠂇又.ifc";

    IfcEngine.x86.sdaiSaveModelBNUnicode(model, System.Text.Encoding.Unicode.GetBytes(ifcFileNameSaving));

    model = 0;  //  Not required of course