コード例 #1
0
        /// <summary>
        /// Create XLS file from ifc/xbim files
        /// </summary>
        /// <param name="parameters">Params</param>
        /// <param name="validationTemplate"></param>
        private void GenerateFederatedCOBieFile(Params parameters, ICOBieValidationTemplate validationTemplate = null)
        {
            var outputFile = Path.ChangeExtension(parameters.ModelFile, ".xls");
            var timer      = new Stopwatch();

            timer.Start();
            var fedWorkBook = GenerateFederatedCOBieWorkBook(parameters);

            timer.Stop();
            LogBackground(String.Format("Time to generate Federated COBie data = {0} seconds", timer.Elapsed.TotalSeconds.ToString("F3")));

            // Export
            LogBackground(String.Format("Formatting as {1} using {0} template...", Path.GetFileName(parameters.TemplateFile), parameters.IsXLSX ? "XLSX" : "XLS"));
            var serialiser = new COBieXLSXSerialiser(outputFile, parameters.TemplateFile);

            serialiser.Excludes = UserFilters;
            serialiser.IsXlsx   = parameters.IsXLSX;
            serialiser.Serialise(fedWorkBook, validationTemplate);

            LogBackground(String.Format("Export Complete: {0}", outputFile));

            Process.Start(serialiser.FileName);

            LogBackground("Finished Federation COBie Generation");
        }
コード例 #2
0
        /// <summary>
        /// Validate XLS file for COBie errors, also will swap templates if required
        /// </summary>
        /// <param name="parameters">Params</param>
        /// <param name="validationTemplate"></param>
        /// <returns>Created file name</returns>
        private void ValidateXlSfile(Params parameters, ICOBieValidationTemplate validationTemplate = null)
        {
            //read xls file
            LogBackground(String.Format("Reading {0}....", parameters.ModelFile));
            var deSerialiser = new COBieXLSDeserialiser(parameters.ModelFile);
            var workbook     = deSerialiser.Deserialise();

            //extract pick list from the template sheet and swap into workbook (US / UK)
            LogBackground("Swapping PickList from template...");
            COBieSheet <COBiePickListsRow> cobiePickLists = null;

            if ((!string.IsNullOrEmpty(parameters.TemplateFile)) &&
                File.Exists(parameters.TemplateFile)
                )
            {
                //extract the pick list sheet from template
                var deSerialiserPickList = new COBieXLSDeserialiser(parameters.TemplateFile, Constants.WORKSHEET_PICKLISTS);
                var wbookPickList        = deSerialiserPickList.Deserialise();
                if (wbookPickList.Count > 0)
                {
                    cobiePickLists = (COBieSheet <COBiePickListsRow>)wbookPickList.FirstOrDefault();
                }
                //check the workbook last sheet is a pick list
                if (workbook.LastOrDefault() is COBieSheet <COBiePickListsRow> )
                {
                    //remove original pick list and replace with templates
                    workbook.RemoveAt(workbook.Count - 1);
                    workbook.Add(cobiePickLists);
                }
                else
                {
                    LogBackground("Failed to Swap PickList from template...");
                }
            }

            var context  = new COBieContext(_worker.ReportProgress);
            var progress = new COBieProgress(context);

            context.Exclude = UserFilters;

            //Validate
            progress.Initialise("Validating Workbooks", workbook.Count, 0);
            progress.ReportMessage("Building Indices...");
            foreach (var item in workbook)
            {
                item.BuildIndices();
            }
            progress.ReportMessage("Building Indices...Finished");

            // Validate the workbook
            progress.ReportMessage("Starting Validation...");

            workbook.Validate(ErrorRowIndexBase.RowTwo, null, (lastProcessedSheetIndex) =>
            {
                // When each sheet has been processed, increment the progress bar
                progress.IncrementAndUpdate();
            });
            progress.ReportMessage("Finished Validation");
            progress.Finalise();

            // Export
            LogBackground(String.Format("Formatting as {1} using {0} template...", Path.GetFileName(parameters.TemplateFile), parameters.IsXLSX ? "XLSX" : "XLS"));
            var serialiser = new COBieXLSXSerialiser(parameters.ModelFile, parameters.TemplateFile);

            serialiser.Excludes = UserFilters;
            serialiser.IsXlsx   = parameters.IsXLSX;
            serialiser.Serialise(workbook, validationTemplate);

            LogBackground(String.Format("Export Complete: {0}", parameters.ModelFile));

            Process.Start(serialiser.FileName);

            LogBackground("Finished COBie Validation");
        }