/// <summary>
 ///  Creates and opens a new Xbim Database
 /// </summary>
 /// <param name="dbFileName">Name of the Xbim file</param>
 /// <param name="access"></param>
 /// <returns></returns>
 public static XbimModel CreateModel(string dbFileName, XbimDBAccess access = XbimDBAccess.ReadWrite)
 {
     try
     {
         if (string.IsNullOrWhiteSpace(Path.GetExtension(dbFileName)))
         {
             dbFileName += ".xBIM";
         }
         var model = new XbimModel();
         model.CreateDatabase(dbFileName);
         model.Open(dbFileName, access);
         model.Header = new StepFileHeader(StepFileHeader.HeaderCreationMode.InitWithXbimDefaults)
         {
             FileName = { Name = dbFileName }
         };
         foreach (var schemasId in model.Factory.SchemasIds)
         {
             model.Header.FileSchema.Schemas.Add(schemasId);
         }
         return(model);
     }
     catch (Exception e)
     {
         throw new XbimException("Failed to create and open xBIM file \'" + dbFileName + "\'\n" + e.Message, e);
     }
 }
        public static XbimModel CreateTemporaryModel()
        {
            var tmpFileName = Path.GetTempFileName();

            try
            {
                var model = new XbimModel();
                model.CreateDatabase(tmpFileName);
                model.Open(tmpFileName, XbimDBAccess.ReadWrite, true);
                model.Header = new StepFileHeader(StepFileHeader.HeaderCreationMode.InitWithXbimDefaults);
                foreach (var schemasId in model.Factory.SchemasIds)
                {
                    model.Header.FileSchema.Schemas.Add(schemasId);
                }
                return(model);
            }
            catch (Exception e)
            {
                throw new XbimException("Failed to create and open temporary xBIM file \'" + tmpFileName + "\'\n" + e.Message, e);
            }
        }