Syntax
public const string ifcenginedll = @"ifcengine.dll"; [DllImport(ifcenginedll, EntryPoint = "sdaiGetInstanceType")] public static extern Int32 sdaiGetInstanceType(int_t instance);
Property instance
Size: 32 bit / 4 byte (value)
Example (based on pure API calls)
Here you can find code snippets that show how the API call sdaiGetInstanceType can be used.
using RDF; // include at least IFCEngine.cs within your solution void GetInstanceProperties(Int64 model, Int64 ifcColumnInstance) { Int64 isDefinedByInstances = 0, ifcRelDefinesByType_TYPE = RDF.IFCEngine.sdaiGetEntity(model, System.Text.Encoding.UTF8.GetBytes("IFCRELDEFINESBYTYPE")), ifcRelDefinesByProperties_TYPE = RDF.IFCEngine.sdaiGetEntity(model, System.Text.Encoding.UTF8.GetBytes("IFCRELDEFINESBYPROPERTIES")); RDF.IFCEngine.sdaiGetAttrBN(ifcColumnInstance, System.Text.Encoding.UTF8.GetBytes("IsDefinedBy"), RDF.IFCEngine.sdaiAGGR, out isDefinedByInstances); if (isDefinedByInstances != 0) { Int64 typeCnt = 0, isDefinedByInstancesCnt = RDF.IFCEngine.sdaiGetMemberCount(isDefinedByInstances); for (Int64 i = 0; i < isDefinedByInstancesCnt; i++) { Int64 isDefinedByInstance = 0; RDF.IFCEngine.sdaiGetAggrByIndex(isDefinedByInstances, i, RDF.IFCEngine.sdaiINSTANCE, out isDefinedByInstance); if (RDF.IFCEngine.sdaiGetInstanceType(isDefinedByInstance) == ifcRelDefinesByType_TYPE) { ... } else if (RDF.IFCEngine.sdaiGetInstanceType(isDefinedByInstance) == ifcRelDefinesByProperties_TYPE) { ... } else { ... } } } } void GetColumns(Int64 model) { Int64 ifcColumnInstances = RDF.IFCEngine.sdaiGetEntityExtentBN(model, System.Text.Encoding.UTF8.GetBytes("IFCCOLUMN")), noIfcColumnInstances = RDF.IFCEngine.sdaiGetMemberCount(ifcColumnInstances); if (noIfcColumnInstances != 0) { for (Int64 i = 0; i < noIfcColumnInstances; i++) { Int64 ifcColumnInstance = 0; RDF.IFCEngine.sdaiGetAggrByIndex(ifcColumnInstances, i, RDF.IFCEngine.sdaiINSTANCE, out ifcColumnInstance); GetInstanceProperties(model, ifcColumnInstance); } } }