Example #1
0
 private void SetUp(string filename)
 {
     if (!string.IsNullOrEmpty(filename) &&
         (Path.GetExtension(filename).ToUpper() == ".XBIMF")
         )
     {
         try
         {
             FileInfo file = new FileInfo(filename);
             if (file.Exists)
             {
                 using (FederatedModel fedModel = new FederatedModel(file))
                 {
                     if (fedModel.Model.IsFederation)
                     {
                         txtAuthor.Text    = fedModel.Author;
                         txtOrg.Text       = fedModel.Organisation;
                         txtPrj.Text       = fedModel.ProjectName;
                         FileRoles         = fedModel.RefModelRoles.ToDictionary(m => new FileInfo(m.Key.DatabaseName), m => m.Value);
                         RefModels         = new BindingList <FileInfo>(FileRoles.Keys.ToList());
                         this.Text        += " : " + file.Name;
                         FileName          = filename;
                         rolesList.Enabled = true;
                     }
                 }
             }
         }
         catch (System.ArgumentException Ex) //bad paths etc..
         {
             toolStripLabel.Text = Ex.Message;
         }
     }
 }
Example #2
0
 /// <summary>
 /// Create Federation file
 /// </summary>
 /// <param name="file">FileInfo</param>
 /// <param name="author">Authors name</param>
 /// <param name="organisation">Organisation name</param>
 /// <param name="prjName">Project name</param>
 private void CreateFedFile(FileInfo file, string author, string organisation, string prjName)
 {
     using (FederatedModel fedModel = new FederatedModel(file, author, organisation, prjName))
     {
         foreach (var item in FileRoles)
         {
             fedModel.AddRefModel(item.Key, organisation, item.Value);
         }
     }
 }
Example #3
0
        /// <summary>
        /// On Click Browse Model File Button
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnBrowse_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter = "All XBim Files|*.ifc;*.ifcxml;*.ifczip;*.xbim;*.xbimf|IFC Files|*.ifc;*.ifcxml;*.ifczip|Xbim Files|*.xbim|Xbim Federated Files|*.xbimf|Excel Files|*.xls;*.xlsx|Json Files|*.json|Xml Files|*.xml"; //
            dlg.Title  = "Choose a source file";

            dlg.CheckFileExists = true;
            // Show open file dialog box
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                txtPath.Text = dlg.FileName;
                string fileExt = Path.GetExtension(txtPath.Text);
                MapRefModelsRoles.Clear();
                if (fileExt.Equals(".xbimf", StringComparison.OrdinalIgnoreCase))
                {
                    using (var fedModel = new FederatedModel(new FileInfo(txtPath.Text)))
                    {
                        if (fedModel.Model.IsFederation)
                        {
                            MapRefModelsRoles = fedModel.RefModelRoles.ToDictionary(m => new FileInfo(m.Key.DatabaseName), m => m.Value);
                        }
                        else
                        {
                            throw new XbimException(string.Format("Model is not Federated: {0}", fedModel.FileNameXbimf));
                        }
                    }
                }
                rolesList.Enabled = !(fileExt.Equals(".xbimf", StringComparison.OrdinalIgnoreCase) ||
                                      fileExt.Equals(".json", StringComparison.OrdinalIgnoreCase) ||
                                      fileExt.Equals(".xml", StringComparison.OrdinalIgnoreCase) ||
                                      fileExt.Equals(".xls", StringComparison.OrdinalIgnoreCase) ||
                                      fileExt.Equals(".xlsx", StringComparison.OrdinalIgnoreCase)
                                      );

                chkBoxOpenFile.Enabled = cmboxFiletype.Text.Equals("XLS", StringComparison.OrdinalIgnoreCase) || cmboxFiletype.Text.Equals("XLSX", StringComparison.OrdinalIgnoreCase);
                chkBoxOpenFile.Checked = chkBoxOpenFile.Enabled;
            }
        }
        /// <summary>
        /// Generate Facilities for a xbimf federated file
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        private List <Facility> GenerateFedFacility(Params parameters)
        {
            var facilities = new List <Facility>();

            try
            {
                using (var fedModel = new FederatedModel(new FileInfo(parameters.ModelFile)))
                {
                    if (fedModel.Model.IsFederation)
                    {
                        Dictionary <XbimModel, OutPutFilters>     FedFilters      = parameters.Filter.SetFedModelFilter <XbimModel>(fedModel.RefModelRoles);
                        Dictionary <RoleFilter, List <Facility> > RolesFacilities = new Dictionary <RoleFilter, List <Facility> >();
                        foreach (var item in FedFilters)
                        {
                            var ifcToCoBieLiteUkExchanger = new IfcToCOBieLiteUkExchanger(item.Key, new List <Facility>(), Worker.ReportProgress, item.Value, parameters.ConfigFile, parameters.ExtId, parameters.SysMode);
                            ifcToCoBieLiteUkExchanger.ReportProgress.Progress = Worker.ReportProgress;
                            var rolesFacility = ifcToCoBieLiteUkExchanger.Convert();

                            //facilities.AddRange(rolesFacility);
                            if (RolesFacilities.ContainsKey(item.Value.AppliedRoles))
                            {
                                RolesFacilities[item.Value.AppliedRoles].AddRange(rolesFacility);
                            }
                            else
                            {
                                RolesFacilities.Add(item.Value.AppliedRoles, rolesFacility);
                            }
                        }
                        var fedFacilities = RolesFacilities.OrderByDescending(d => d.Key.HasFlag(RoleFilter.Architectural)).SelectMany(p => p.Value).ToList(); //pull architectural roles facilities to the top
                        //fedFacilities = RolesFacilities.Values.SelectMany(f => f).OrderByDescending(f => f.AssetTypes.Count).ToList(); //pull facility with largest number of AssetTypes to the top
                        //fedFacilities = RolesFacilities.Values.SelectMany(f => f).ToList(); //flatten value lists
                        if (fedFacilities.Any())
                        {
                            Facility baseFacility = fedFacilities.First();
                            fedFacilities.RemoveAt(0);
                            if (parameters.Log)
                            {
                                var logfile = Path.ChangeExtension(parameters.ModelFile, "merge.log");
                                using (StreamWriter sw = new StreamWriter(logfile))
                                //using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput())) //to debug console **slow**
                                {
                                    sw.AutoFlush = true;
                                    foreach (Facility mergeFacility in fedFacilities)
                                    {
                                        baseFacility.Merge(mergeFacility, sw);
                                    }
                                }
                            }
                            else
                            {
                                foreach (Facility mergeFacility in fedFacilities)
                                {
                                    baseFacility.Merge(mergeFacility, null);
                                }
                            }
                            facilities.Add(baseFacility);
                        }
                    }
                    else
                    {
                        throw new XbimException(string.Format("Model is not Federated: {0}", fedModel.FileNameXbimf));
                    }
                }
            }
            catch (ArgumentException Ex) //bad paths etc..
            {
                Worker.ReportProgress(0, Ex.Message);
            }
            catch (XbimException Ex) //not federated
            {
                Worker.ReportProgress(0, Ex.Message);
            }

            return(facilities);
        }
        /// <summary>
        /// On Click Browse Model File Button
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnBrowse_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "All XBim Files|*.ifc;*.ifcxml;*.ifczip;*.xbim;*.xbimf|IFC Files|*.ifc;*.ifcxml;*.ifczip|Xbim Files|*.xbim|Xbim Federated Files|*.xbimf|Excel Files|*.xls;*.xlsx|Json Files|*.json|Xml Files|*.xml"; //
            dlg.Title = "Choose a source file";

            dlg.CheckFileExists = true;
            // Show open file dialog box 
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                txtPath.Text = dlg.FileName;
                string fileExt = Path.GetExtension(txtPath.Text);
                MapRefModelsRoles.Clear();
                if (fileExt.Equals(".xbimf", StringComparison.OrdinalIgnoreCase))
                {
                    using (var fedModel = new FederatedModel(new FileInfo(txtPath.Text)))
                    {
                        if (fedModel.Model.IsFederation)
                        {
                            MapRefModelsRoles = fedModel.RefModelRoles.ToDictionary(m => new FileInfo(m.Key.DatabaseName), m => m.Value);
                        }
                        else
                        {
                            throw new XbimException(string.Format("Model is not Federated: {0}", fedModel.FileNameXbimf));
                        }
                    }
                   
                }
                rolesList.Enabled = !(fileExt.Equals(".xbimf", StringComparison.OrdinalIgnoreCase) 
                    || fileExt.Equals(".json", StringComparison.OrdinalIgnoreCase)
                    || fileExt.Equals(".xml", StringComparison.OrdinalIgnoreCase)
                    || fileExt.Equals(".xls", StringComparison.OrdinalIgnoreCase)
                    || fileExt.Equals(".xlsx", StringComparison.OrdinalIgnoreCase)
                    );

                chkBoxOpenFile.Enabled = cmboxFiletype.Text.Equals("XLS", StringComparison.OrdinalIgnoreCase) || cmboxFiletype.Text.Equals("XLSX", StringComparison.OrdinalIgnoreCase);
                chkBoxOpenFile.Checked = chkBoxOpenFile.Enabled;
            }
            
        }
        /// <summary>
        /// Generate Facilities for a xbimf federated file
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        private List<Facility> GenerateFedFacility(Params parameters)
        {
            var facilities = new List<Facility>();
            try
            {
                using (var fedModel = new FederatedModel(new FileInfo(parameters.ModelFile)))
                {
                    if (fedModel.Model.IsFederation)
                    {
                        Dictionary<XbimModel, OutPutFilters> FedFilters = parameters.Filter.SetFedModelFilter<XbimModel>(fedModel.RefModelRoles);
                        Dictionary<RoleFilter, List<Facility>> RolesFacilities = new Dictionary<RoleFilter, List<Facility>>();
                        foreach (var item in FedFilters)
                        {
                            var ifcToCoBieLiteUkExchanger = new IfcToCOBieLiteUkExchanger(item.Key, new List<Facility>(), Worker.ReportProgress, item.Value, parameters.ConfigFile, parameters.ExtId, parameters.SysMode);
                            ifcToCoBieLiteUkExchanger.ReportProgress.Progress = Worker.ReportProgress;
                            var rolesFacility = ifcToCoBieLiteUkExchanger.Convert();

                            //facilities.AddRange(rolesFacility);
                            if (RolesFacilities.ContainsKey(item.Value.AppliedRoles))
                            {
                                RolesFacilities[item.Value.AppliedRoles].AddRange(rolesFacility);
                            }
                            else
                            {
                                RolesFacilities.Add(item.Value.AppliedRoles, rolesFacility);
                            }

                        }
                        var fedFacilities = RolesFacilities.OrderByDescending(d => d.Key.HasFlag(RoleFilter.Architectural)).SelectMany(p => p.Value).ToList(); //pull architectural roles facilities to the top
                        //fedFacilities = RolesFacilities.Values.SelectMany(f => f).OrderByDescending(f => f.AssetTypes.Count).ToList(); //pull facility with largest number of AssetTypes to the top
                        //fedFacilities = RolesFacilities.Values.SelectMany(f => f).ToList(); //flatten value lists
                        if (fedFacilities.Any())
                        {
                            Facility baseFacility = fedFacilities.First();
                            fedFacilities.RemoveAt(0);
                            if (parameters.Log)
                            {
                                var logfile = Path.ChangeExtension(parameters.ModelFile, "merge.log");
                                using (StreamWriter sw = new StreamWriter(logfile))
                                //using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput())) //to debug console **slow**
                                {
                                    sw.AutoFlush = true;
                                    foreach (Facility mergeFacility in fedFacilities)
                                    {
                                        baseFacility.Merge(mergeFacility, sw);
                                    }
                                }
                            }
                            else
                            {
                                foreach (Facility mergeFacility in fedFacilities)
                                {
                                    baseFacility.Merge(mergeFacility, null);
                                }
                            }
                            facilities.Add(baseFacility);
                        }

                    }
                    else
                    {
                        throw new XbimException(string.Format("Model is not Federated: {0}", fedModel.FileNameXbimf));
                    }
                }
            }
            catch (ArgumentException Ex) //bad paths etc..
            {
                Worker.ReportProgress(0, Ex.Message);
            }
            catch (XbimException Ex) //not federated
            {
                Worker.ReportProgress(0, Ex.Message);
            }

            return facilities;
        }