private IFCType GetIfcType(string path) { IFCType result = IFCType.None; IntPtr ifcModel = ifcEngine.OpenModelUnicode(IntPtr.Zero, path, Constants.IFC2X3_SCHEMA_NAME); if (ifcModel != IntPtr.Zero) { ifcEngine.GetSPFFHeaderItem(ifcModel, 9, 0, IfcEngine.SdaiType.String, out IntPtr outputValue); string headerItem = Marshal.PtrToStringAnsi(outputValue); if (!string.IsNullOrEmpty(headerItem)) { if (headerItem.Contains(IFCType.IFC2.ToString())) { result = IFCType.IFC2; } else if (headerItem.Contains(IFCType.IFC4.ToString())) { result = IFCType.IFC4; } } ifcEngine.CloseModel(ifcModel); } return(result); }