public bool getSectionInfo(MEPSection section, DataTable sectionTB, bool forHTML = false)
        {
            if (section == null || sectionTB == null)
            {
                return(false);
            }

            PressureLossReportHelper helper = PressureLossReportHelper.instance;

            if (helper == null)
            {
                return(false);
            }

            PressureLossReportData reportData = helper.ReportData;

            if (reportData == null)
            {
                return(false);
            }

            List <string> sectionFields = new List <string>();

            getFields(sectionFields);

            getSectionTable(section, sectionTB, sectionFields, reportData, forHTML);

            return(true);
        }
        public void upgrade1(PressureLossReportData data, int nVersion = 1) //add "Element ID" fields to segment and fitting fields
        {
            if (data == null || data.Version >= nVersion)
            {
                return;
            }

            //segment
            {
                PressureLossParameter PLParam = new PressureLossParameter(ReportResource.elementId, false, -1, (int)SectionMemberType.Segment);
                if (!data.StraightSegFields.Contains(PLParam))
                {
                    data.StraightSegFields.Add(PLParam);
                }
            }

            //fitting
            {
                PressureLossParameter PLParam = new PressureLossParameter(ReportResource.elementId, false, -1, (int)SectionMemberType.Fitting);
                if (!data.FittingFields.Contains(PLParam))
                {
                    data.FittingFields.Add(PLParam);
                }
            }

            data.Version = nVersion;
            PressureLossReportDataManager.Instance.save(data);
        }
        /// <summary>
        /// save the data to the xml file, please catch InvalidOperationException to
        /// identify the existing file is broken.
        /// </summary>
        /// <param name="data">format data</param>
        public void save(PressureLossReportData data)
        {
            try
            {
                XmlSerializer             serializer = new XmlSerializer(typeof(PressureLossReportFormats));
                PressureLossReportFormats formats    = new PressureLossReportFormats();
                if (File.Exists(formatFileName))
                {
                    formats = getAllFormats(false);
                    //formats can't been null, it may throw exception.
                    //this format exists
                    if (formats != null && formats.Contains(data))
                    {
                        formats.Remove(data);
                    }
                }

                formats.Add(data);
                using (TextWriter writer = new StreamWriter(formatFileName))
                {
                    serializer.Serialize(writer, formats);
                }
            }
            catch
            {
                //do nothing
            }
        }
Пример #4
0
        private void Btn_Yes_Click(object sender, EventArgs e)
        {
            reportFormatName = textBox1.Text;
            //check if the name is valid
            if (reportFormatName.Length < 1)
            {
                UIHelperFunctions.postWarning(ReportResource.plrSettings, ReportResource.formatNameMsg);
            }
            else
            {
                //check if the name exists
                PressureLossReportDataManager reportDataMgr = PressureLossReportDataManager.Instance;
                PressureLossReportData        reportData    = reportDataMgr.getData(reportFormatName);
                if (reportData != null) //post task dialog
                {
                    TaskDialog tdlg = new TaskDialog(ReportResource.plrSettings);
                    tdlg.MainInstruction   = ReportResource.formatNameDuplicateMsg;
                    tdlg.AllowCancellation = true;
                    tdlg.CommonButtons     = TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No;
                    tdlg.DefaultButton     = TaskDialogResult.No;
                    tdlg.TitleAutoPrefix   = false; // suppress the prefix of title.
                    if (tdlg.Show() != TaskDialogResult.Yes)
                    {
                        textBox1.Focus();
                        return;
                    }
                }

                DialogResult = DialogResult.OK;
            }
        }
 public void upgrades(PressureLossReportData data)
 {
     upgrade1(data);
     upgrade2(data);
     upgrade3(data); // update old loss method and remove coefficient from duct fitting
     upgrade4(data); // update old loss method and remove coefficient from pipe fitting
     //add any upgrade here
 }
        /************************************************************************/

        /* For pipe fitting and accessory, remove coefficient
         *
         *
         */
        /************************************************************************/
        public void upgrade4(PressureLossReportData data, int nVersion = 4)
        {
            if (data == null || data.Version >= nVersion)
            {
                return;
            }

            PressureLossReportHelper helper = PressureLossReportHelper.instance;

            if (helper == null)
            {
                return;
            }

            string fieldLossMethodName = LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FITTING_LOSS_METHOD_PARAM);
            string fieldKFactorName    = LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FITTING_LOSS_KFACTOR_PARAM);
            string fieldKTableName     = LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FITTING_LOSS_TABLE_PARAM);

            string fieldNewLossMethodName = LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FITTING_LOSS_METHOD_SERVER_PARAM);

            int nDisplayOrder = -1;

            if (data.Domain == ReportResource.pipeDomain) //Remove the 3 old parameters for pipe
            {
                PressureLossParameter PLParam1 = helper.getPressureLossParamByName(data.FittingFields, fieldLossMethodName);
                if (PLParam1 != null)
                {
                    nDisplayOrder = PLParam1.DisplayOrder;
                    data.FittingFields.Remove(PLParam1);
                }

                PressureLossParameter PLParam2 = helper.getPressureLossParamByName(data.FittingFields, fieldKFactorName);
                if (PLParam2 != null)
                {
                    data.FittingFields.Remove(PLParam2);
                }

                PressureLossParameter PLParam3 = helper.getPressureLossParamByName(data.FittingFields, fieldKTableName);
                if (PLParam3 != null)
                {
                    data.FittingFields.Remove(PLParam3);
                }

                //Add the new loss method as selected field for pipe
                PressureLossParameter PLParam = new PressureLossParameter(fieldNewLossMethodName, true, nDisplayOrder, (int)SectionMemberType.Fitting);
                if (!data.FittingFields.Contains(PLParam))
                {
                    data.FittingFields.Add(PLParam);
                }
            }

            data.Version = nVersion;
            PressureLossReportDataManager.Instance.save(data);
        }
Пример #7
0
        public void generateAviliableFields(PressureLossReportData reportData)
        {
            if (doc == null)
            {
                return;
            }

            SectionsInfo.generateSectionFields(reportData);
            SegmentsInfo.generateSegmentFields(reportData);
            FittingsInfo.generateFittingFields(reportData);
        }
        private void comboBoxFormat_SelectedIndexChanged(object sender, EventArgs e)
        {
            PressureLossReportDataManager reportDataMgr = PressureLossReportDataManager.Instance;

            settings = reportDataMgr.getData(this.comboBoxFormat.SelectedItem.ToString());
            if (hasFittingsInSystem() && (settings.FittingFields == null || settings.FittingFields.Count < 1))
            {
                FittingsInfo.generateFittingFields(settings);
            }

            fillSettingsControlsFromFormat(settings);
        }
 public override bool Equals(object obj)
 {
     if (obj is PressureLossReportData)
     {
         PressureLossReportData data = obj as PressureLossReportData;
         if (data != null)
         {
             return(0 == string.Compare(data.Name, Name) && Domain == data.Domain);
         }
         return(false);
     }
     return(base.Equals(obj));
 }
        public string getLastUsedReportName()
        {
            string lastReportName       = "";
            PressureLossReportData data = getLastUsedReportData();

            if (data != null)
            {
                if (data.Name.Contains("(LastUsed)"))
                {
                    return(data.Name.Substring(0, data.Name.LastIndexOf("(LastUsed)")));
                }
            }

            return(lastReportName);
        }
        private void readSettingsDataFromDlg()
        {
            //current settings
            if (settings == null)
            {
                settings = new PressureLossReportData();
            }
            settings.DisplayCriticalPath             = checkBoxCriticalPath.Checked;
            settings.DisplayDetailInfoForStraightSeg = checkBoxSegmentInfo.Checked;
            settings.DisplayFittingLCSum             = checkBoxFittingInfo.Checked;
            settings.DisplaySysInfo   = checkBoxDisplaySystemInfo.Checked;
            settings.OpenAfterCreated = checkBoxOpenAfterCreated.Checked;

            UIHelperFunctions.getFieldsFromSelectedListBox(settings.AvailableFields, listBoxReportFields);
        }
        /// <summary>
        /// Save pressure loss report to a file according to customer's settings.
        /// </summary>
        public bool SaveReportToFile(string fileName, PressureLossReportData settings, SaveType eSaveType)
        {
            // TODO
            if (eSaveType == SaveType.HTML)
            {
                writer = new SaveDataToHTML();
            }
            else
            {
                writer = new SaveDataToCSV();
            }

            PressureLossReportHelper.instance.ReportData = settings;

            return(writer.save(fileName, settings));
        }
        private void buttonFormatDelete_Click(object sender, EventArgs e)
        {
            PressureLossReportDataManager reportDataMgr = PressureLossReportDataManager.Instance;
            PressureLossReportFormats     allFormats    = reportDataMgr.getAllFormats();

            if (allFormats == null || allFormats.Count < 1 || this.comboBoxFormat.Items.Count < 1)
            {
                return;
            }

            if (allFormats.Count == 1 || (allFormats.Count == 2 && reportDataMgr.getLastUsedReportData() != null))
            {
                UIHelperFunctions.postWarning(ReportResource.deleteFormatTitle, ReportResource.deleteLastFormatMsg, ReportResource.deleteLastFormatSubMsg);
                return;
            }

            TaskDialog tdlg = new TaskDialog(ReportResource.deleteFormatTitle);

            tdlg.MainInstruction   = ReportResource.deleteFormatMsg;
            tdlg.AllowCancellation = true;
            tdlg.CommonButtons     = TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No;
            tdlg.DefaultButton     = TaskDialogResult.No;
            tdlg.TitleAutoPrefix   = false; // suppress the prefix of title.
            if (tdlg.Show() == TaskDialogResult.Yes)
            {
                // delete the report format, and update the combo list, set the next one as current
                string name = this.comboBoxFormat.SelectedItem.ToString();
                if (name == reportDataMgr.getLastUsedReportName())
                {
                    PressureLossReportData lastData = reportDataMgr.getLastUsedReportData();
                    if (lastData != null)
                    {
                        reportDataMgr.remove(lastData.Name);
                    }
                }

                reportDataMgr.remove(name);

                this.comboBoxFormat.Items.Remove(name);

                if (this.comboBoxFormat.Items.Count > 0)
                {
                    this.comboBoxFormat.SelectedIndex = 0;
                }
            }
        }
        private void generateDefaultFormatData()
        {
            if (settings == null)
            {
                settings = new PressureLossReportData();
            }

            PressureLossReportHelper helper = PressureLossReportHelper.instance;

            settings.Domain = helper.Domain;
            settings.DisplayCriticalPath             = true;
            settings.DisplayDetailInfoForStraightSeg = true;
            settings.DisplayFittingLCSum             = true;
            settings.DisplaySysInfo   = true;
            settings.OpenAfterCreated = true;

            //initialize the fields
            helper.generateAviliableFields(settings);
        }
        private void fillSettingsControlsFromFormat(PressureLossReportData data)
        {
            if (data == null)
            {
                return;
            }

            checkBoxDisplaySystemInfo.Checked = data.DisplaySysInfo;
            checkBoxCriticalPath.Checked      = data.DisplayCriticalPath;
            checkBoxFittingInfo.Checked       = data.DisplayFittingLCSum;
            checkBoxSegmentInfo.Checked       = data.DisplayDetailInfoForStraightSeg;
            checkBoxOpenAfterCreated.Checked  = data.OpenAfterCreated;

            listBoxAvailableFields.Items.Clear();
            listBoxReportFields.Items.Clear();

            //fill in the fields
            UIHelperFunctions.fillingListBoxFields(data.AvailableFields, listBoxAvailableFields, listBoxReportFields);
        }
        public void saveLastUseReport(PressureLossReportData data)
        {
            if (isReportFormatReadOnly())
            {
                return;
            }

            if (data == null)
            {
                return;
            }

            PressureLossReportData lastData = getLastUsedReportData();

            if (lastData != null)
            {
                remove(lastData.Name);
            }

            data.Name = data.Name + lastUsed;
            save(data);
        }
        private void resetSettings()
        {
            if (settings == null)
            {
                settings = new PressureLossReportData();
            }

            if (settings.AvailableFields == null || settings.AvailableFields.Count < 1)
            {
                SectionsInfo.generateSectionFields(settings);
            }

            if (settings.StraightSegFields == null || settings.StraightSegFields.Count < 1)
            {
                SegmentsInfo.generateSegmentFields(settings);
            }

            if (settings.FittingFields == null || settings.FittingFields.Count < 1)
            {
                FittingsInfo.generateFittingFields(settings);
            }
        }
Пример #18
0
 public virtual bool save(string fileName, PressureLossReportData reportData)
 {
     return(false);
 }
        private void FillingData()
        {
            try
            {
                //Way 1:
                //1. Fill in the combo: report format names or "untitled format"
                //?: Which i=one is the default selected?
                PressureLossReportHelper      helper        = PressureLossReportHelper.instance;
                PressureLossReportDataManager reportDataMgr = PressureLossReportDataManager.Instance;
                PressureLossReportFormats     formats       = reportDataMgr.getAllFormats();
                if (formats != null && formats.Count > 0)
                {
                    PressureLossReportData lastData = reportDataMgr.getLastUsedReportData();
                    string lastUsedName             = "";
                    foreach (PressureLossReportData data in formats)
                    {
                        if (lastData != null && lastData.Name == data.Name)
                        {
                            lastUsedName = reportDataMgr.getLastUsedReportName();
                            if (formats.Count == 1)
                            {
                                this.comboBoxFormat.Items.Add(lastUsedName);
                            }
                        }
                        else
                        {
                            this.comboBoxFormat.Items.Add(data.Name);
                        }
                    }

                    if (lastUsedName.Length > 0 && this.comboBoxFormat.Items.IndexOf(lastUsedName) > -1)
                    {
                        this.comboBoxFormat.SelectedIndex = this.comboBoxFormat.Items.IndexOf(lastUsedName);
                    }
                    else
                    {
                        this.comboBoxFormat.SelectedIndex = 0;
                    }
                    settings = reportDataMgr.getData(this.comboBoxFormat.SelectedItem.ToString());

                    resetSettings();
                }


                if (settings == null) //fill in default values
                {
                    settings = new PressureLossReportData();

                    generateDefaultFormatData();
                    settings.Name = ReportResource.formatDefaultName;
                    reportDataMgr.save(settings);
                    this.comboBoxFormat.Items.Add(settings.Name);
                    this.comboBoxFormat.SelectedIndex = 0;
                }

                if (settings != null)
                {
                    fillSettingsControlsFromFormat(settings);
                }

                this.buttonUp.Enabled   = false;
                this.buttonDown.Enabled = false;

                this.listBoxAvailableFields.Focus();
                this.listBoxAvailableFields.SetSelected(0, true);

                //title
                if (helper.Domain == ReportResource.pipeDomain)
                {
                    this.Text = ReportResource.pipeSettingsDlgTitle;
                }
                else
                {
                    this.Text = ReportResource.ductSettingsDlgTitle;
                }
            }
            catch
            {
                //do nothing
            }
        }
        static public void generateFittingFields(PressureLossReportData reportData)
        {
            if (reportData == null)
            {
                return;
            }

            PressureLossReportHelper helper = PressureLossReportHelper.instance;

            if (helper == null)
            {
                return;
            }

            List <PressureLossParameter> fittingParameters = new List <PressureLossParameter>();

            //default fitting selected fields
            //SectionMemberType means where the value is from: section or fitting
            int nOrder = 1;

            fittingParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.ALL_MODEL_MARK), false, -1, (int)SectionMemberType.Fitting));
            fittingParameters.Add(new PressureLossParameter(ReportResource.elementId, true, nOrder++, (int)SectionMemberType.Fitting));

            if (helper.Domain == ReportResource.pipeDomain)
            {
                fittingParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FITTING_LOSS_METHOD_SERVER_PARAM), true, nOrder++, (int)SectionMemberType.Fitting));
            }
            else
            {
                fittingParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_DUCT_FITTING_LOSS_METHOD_SERVER_PARAM), true, nOrder++, (int)SectionMemberType.Fitting));
            }

            //pressure loss fields is not visible in settings dialog, the order 100 is to make sure it always is the last one field
            fittingParameters.Add(new PressureLossParameter(ReportResource.pressureLoss, true, 100, (int)SectionMemberType.Section, false));

            //find the first fitting
            List <MEPSystem> systems = helper.getSortedSystems();

            if (systems == null || systems.Count < 1)
            {
                return;
            }
            foreach (MEPSystem system in systems)
            {
                List <MEPSection> sections = new List <MEPSection>();
                MEPSystemInfo.getSectionsFromSystem(system, sections);
                foreach (MEPSection section in sections)
                {
                    //find one section which contains both segment and fitting
                    List <FamilyInstance> fittings = new List <FamilyInstance>();

                    SectionsInfo.getSectionElements(section, null, fittings, null, null);

                    if (fittings.Count < 1)
                    {
                        continue;
                    }

                    //fitting's instance parameters

                    PressureLossParameter PLParam1 = new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.ELEM_FAMILY_PARAM), false, -1, (int)SectionMemberType.Type);
                    if (!fittingParameters.Contains(PLParam1))
                    {
                        fittingParameters.Add(PLParam1);
                    }

                    PressureLossParameter PLParam2 = new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.ELEM_FAMILY_AND_TYPE_PARAM), false, -1, (int)SectionMemberType.Type);
                    if (!fittingParameters.Contains(PLParam2))
                    {
                        fittingParameters.Add(PLParam2);
                    }

                    PressureLossParameter PLParam3 = new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_SIZE_FORMATTED_PARAM), false, -1, (int)SectionMemberType.Fitting);
                    if (!fittingParameters.Contains(PLParam3))
                    {
                        fittingParameters.Add(PLParam3);
                    }

                    foreach (Parameter param in fittings[0].Parameters)
                    {
                        //exclude the parameters under constrains/Graphics/Geometry and other groups
                        if (param.Definition.ParameterGroup == BuiltInParameterGroup.PG_CONSTRAINTS ||
                            param.Definition.ParameterGroup == BuiltInParameterGroup.PG_GRAPHICS ||
                            param.Definition.ParameterGroup == BuiltInParameterGroup.PG_GEOMETRY ||
                            LabelUtils.GetLabelFor(param.Definition.ParameterGroup) == ReportResource.other ||
                            param.Definition.Name == LabelUtils.GetLabelFor(BuiltInParameter.RBS_DUCT_PRESSURE_DROP))
                        {
                            continue;
                        }

                        PressureLossParameter PLParam = new PressureLossParameter(param.Definition.Name, false, -1, (int)SectionMemberType.Fitting);
                        if (!fittingParameters.Contains(PLParam))
                        {
                            fittingParameters.Add(PLParam);
                        }
                    }

                    //Fitting symbol parameters

                    FamilySymbol famSym = fittings[0].Symbol;
                    if (famSym != null)
                    {
                        foreach (Parameter param in famSym.Parameters)
                        {
                            //exclude the parameters under construction and other groups
                            if (param.Definition.ParameterGroup == BuiltInParameterGroup.PG_CONSTRUCTION ||
                                LabelUtils.GetLabelFor(param.Definition.ParameterGroup) == ReportResource.other)
                            {
                                continue;
                            }

                            PressureLossParameter PLParam = new PressureLossParameter(param.Definition.Name, false, -1, (int)SectionMemberType.Type);
                            if (!fittingParameters.Contains(PLParam))
                            {
                                fittingParameters.Add(PLParam);
                            }
                        }
                    }

                    reportData.FittingFields = fittingParameters;

                    return;
                }
            }
        }
        private void getSectionTable(MEPSection section, DataTable tb, List <string> fileds, PressureLossReportData reportData, bool bForHtml = false)
        {
            if (tb == null || fileds == null || section == null || reportData == null)
            {
                return;
            }

            List <MEPCurve>       curves       = new List <MEPCurve>();
            List <FamilyInstance> fittings     = new List <FamilyInstance>();
            List <FamilyInstance> airTerminals = new List <FamilyInstance>();
            List <FamilyInstance> equipments   = new List <FamilyInstance>();

            PressureLossReportHelper helper = PressureLossReportHelper.instance;

            if (helper == null)
            {
                return;
            }

            getSectionElements(section, curves, fittings, airTerminals, equipments);

            Dictionary <string, string> fieldAndValue = new Dictionary <string, string>();

            getSectionCommonInfo(section, fieldAndValue);

            if (bForHtml)
            {
                helper.addColumns(tb, fileds.Count);
            }
            else
            {
                helper.addColumns(tb, fileds.Count + 2);
            }

            List <string> segmentVals     = new List <string>(); //segment row
            List <string> fittingVals     = new List <string>(); //fitting row
            List <string> airTerminalVals = new List <string>(); //air terminal row
            List <string> equipmentsVals  = new List <string>(); //equipment row

            if (!bForHtml)                                       //for csv, the first column is the section number
            {
                segmentVals.Add(section.Number.ToString());
                if (curves.Count < 1)
                {
                    fittingVals.Add(section.Number.ToString());
                }
                else
                {
                    fittingVals.Add(" ");
                }

                if (curves.Count < 1 && fittings.Count < 1)
                {
                    airTerminalVals.Add(section.Number.ToString());
                }
                else
                {
                    airTerminalVals.Add(" ");
                }

                if (curves.Count < 1 && fittings.Count < 1 && airTerminals.Count < 1)
                {
                    equipmentsVals.Add(section.Number.ToString());
                }
                else
                {
                    equipmentsVals.Add(" ");
                }
            }

            segmentVals.Add(helper.Domain);
            fittingVals.Add(ReportResource.fittings);

            if (helper.Domain == ReportResource.pipeDomain)
            {
                airTerminalVals.Add(ReportResource.plumbingFixtures);
            }
            else
            {
                airTerminalVals.Add(ReportResource.airTerminals);
            }
            equipmentsVals.Add(ReportResource.equipments);

            foreach (string fieldName in fileds)
            {
                PressureLossParameter PLParam = helper.getPressureLossParamByName(reportData.AvailableFields, fieldName);
                if (PLParam == null)
                {
                    continue;
                }

                if (fieldAndValue.ContainsKey(fieldName)) //section info
                {
                    if ((PLParam.GetFrom & (int)SectionMemberType.Segment) > 0)
                    {
                        segmentVals.Add(fieldAndValue[fieldName]);
                    }
                    else
                    {
                        segmentVals.Add(ReportConstants.emptyValue);
                    }

                    if ((PLParam.GetFrom & (int)SectionMemberType.Fitting) > 0)
                    {
                        fittingVals.Add(fieldAndValue[fieldName]);
                    }
                    else
                    {
                        fittingVals.Add(ReportConstants.emptyValue);
                    }

                    if ((PLParam.GetFrom & (int)SectionMemberType.AirTerminal) > 0)
                    {
                        airTerminalVals.Add(fieldAndValue[fieldName]);
                    }
                    else
                    {
                        airTerminalVals.Add(ReportConstants.emptyValue);
                    }

                    if ((PLParam.GetFrom & (int)SectionMemberType.Equipment) > 0)
                    {
                        equipmentsVals.Add(fieldAndValue[fieldName]);
                    }
                    else
                    {
                        equipmentsVals.Add(ReportConstants.emptyValue);
                    }
                }
                else if (curves.Count > 0 && (PLParam.GetFrom & (int)SectionMemberType.Segment) > 0) //read the value from first segment
                {
                    MEPCurve firstCrv = curves[0];
                    if (firstCrv == null)
                    {
                        continue;
                    }

                    string strVal = helper.getParamValue(firstCrv.get_Parameter(fieldName));
                    segmentVals.Add(strVal);
                    fittingVals.Add(ReportConstants.emptyValue);
                    airTerminalVals.Add(ReportConstants.emptyValue);
                    equipmentsVals.Add(ReportConstants.emptyValue);
                }
                else
                {
                    segmentVals.Add(ReportConstants.emptyValue);
                    fittingVals.Add(ReportConstants.emptyValue);
                    airTerminalVals.Add(ReportConstants.emptyValue);
                    equipmentsVals.Add(ReportConstants.emptyValue);
                }
            }

            //add total pressure loss
            segmentVals.Add(helper.getTotalPressureLossByType(section, SectionMemberType.Segment));
            fittingVals.Add(helper.getTotalPressureLossByType(section, SectionMemberType.Fitting));
            airTerminalVals.Add(helper.getTotalPressureLossByType(section, SectionMemberType.AirTerminal));
            equipmentsVals.Add(helper.getTotalPressureLossByType(section, SectionMemberType.Equipment));

            //add section pressure loss
            if (!bForHtml) //for csv, the last column is section pressure loss report
            {
                string sectionPL = fieldAndValue[ReportResource.sectionPressureLoss];

                segmentVals.Add(sectionPL);
                if (curves.Count < 1)
                {
                    fittingVals.Add(sectionPL);
                }
                else
                {
                    fittingVals.Add(ReportConstants.mergeValue);
                }

                if (curves.Count < 1 && fittings.Count < 1)
                {
                    airTerminalVals.Add(sectionPL);
                }
                else
                {
                    airTerminalVals.Add(ReportConstants.mergeValue);
                }

                if (curves.Count < 1 && fittings.Count < 1 && airTerminals.Count < 1)
                {
                    equipmentsVals.Add(sectionPL);
                }
                else
                {
                    equipmentsVals.Add(ReportConstants.mergeValue);
                }
            }

            if (curves.Count > 0)
            {
                helper.addRow(tb, segmentVals);
            }
            if (fittings.Count > 0)
            {
                helper.addRow(tb, fittingVals);
            }
            if (airTerminals.Count > 0)
            {
                helper.addRow(tb, airTerminalVals);
            }
            if (equipments.Count > 0)
            {
                helper.addRow(tb, equipmentsVals);
            }
        }
        static public void generateSectionFields(PressureLossReportData reportData)
        {
            if (reportData == null)
            {
                return;
            }

            PressureLossReportHelper helper = PressureLossReportHelper.instance;

            if (helper == null)
            {
                return;
            }

            List <PressureLossParameter> sectionParameters = new List <PressureLossParameter>();

            //section fields
            //default selected ones
            //for section table: SectionMemberType means display the info for which part: segment or AirTerminal or Equipment
            int nOrder = 1;

            if (helper.Domain == ReportResource.pipeDomain)
            {
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FLOW_PARAM), true, nOrder++, (int)(SectionMemberType.Segment | SectionMemberType.AirTerminal | SectionMemberType.Fitting | SectionMemberType.Equipment)));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_SIZE_FORMATTED_PARAM), true, nOrder++, (int)(SectionMemberType.Segment | SectionMemberType.AirTerminal | SectionMemberType.Equipment)));
            }
            else
            {
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_DUCT_FLOW_PARAM), true, nOrder++, (int)(SectionMemberType.Segment | SectionMemberType.AirTerminal | SectionMemberType.Fitting | SectionMemberType.Equipment)));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_DUCT_SIZE_FORMATTED_PARAM), true, nOrder++, (int)(SectionMemberType.Segment | SectionMemberType.AirTerminal | SectionMemberType.Equipment)));
            }

            sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_VELOCITY), true, nOrder++, (int)(SectionMemberType.Segment | SectionMemberType.Fitting)));
            sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_VELOCITY_PRESSURE), true, nOrder++, (int)SectionMemberType.Fitting));
            sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.CURVE_ELEM_LENGTH), true, nOrder++, (int)SectionMemberType.Segment));
            if (helper.Domain == ReportResource.pipeDomain)
            {
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FITTING_LOSS_KFACTOR_PARAM), true, nOrder++, (int)SectionMemberType.Fitting));
            }
            else
            {
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_LOSS_COEFFICIENT), true, nOrder++, (int)SectionMemberType.Fitting));
            }
            sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_FRICTION), true, nOrder++, (int)(SectionMemberType.Segment)));

            //from segment
            sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_REFERENCE_OVERALLSIZE), false, -1, (int)SectionMemberType.Segment));
            if (helper.Domain == ReportResource.pipeDomain)
            {
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_DIAMETER_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_MATERIAL_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FRICTION_FACTOR_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_INNER_DIAM_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_RELATIVE_ROUGHNESS_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_REYNOLDS_NUMBER_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_ROUGHNESS_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FIXTURE_UNITS_PARAM), false, -1, (int)SectionMemberType.Segment));
            }
            else
            {
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_CURVE_DIAMETER_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_CURVE_WIDTH_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_EQ_DIAMETER_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_REFERENCE_FREESIZE), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_CURVE_HEIGHT_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_HYDRAULIC_DIAMETER_PARAM), false, -1, (int)SectionMemberType.Segment));
                sectionParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_REYNOLDSNUMBER_PARAM), false, -1, (int)SectionMemberType.Segment));
            }

            reportData.AvailableFields = sectionParameters;
        }
        static public void generateSegmentFields(PressureLossReportData reportData)
        {
            PressureLossReportHelper helper = PressureLossReportHelper.instance;

            if (helper == null)
            {
                return;
            }

            List <PressureLossParameter> segParameters = new List <PressureLossParameter>();

            //default segment selected fields
            //SectionMemberType means where the value is from: segment or section
            int nOrder = 1;

            segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.ALL_MODEL_MARK), false, -1, (int)SectionMemberType.Segment));
            segParameters.Add(new PressureLossParameter(ReportResource.elementId, true, nOrder++, (int)SectionMemberType.Segment));

            if (helper.Domain == ReportResource.pipeDomain)
            {
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FLOW_PARAM), true, nOrder++, (int)SectionMemberType.Section));
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_SIZE_FORMATTED_PARAM), true, nOrder++, (int)SectionMemberType.Segment));
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FRICTION_FACTOR_PARAM), false, -1, (int)SectionMemberType.Section));
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FIXTURE_UNITS_PARAM), false, -1, (int)SectionMemberType.Section));
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_REYNOLDS_NUMBER_PARAM), false, -1, (int)SectionMemberType.Section));
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FITTING_LOSS_KFACTOR_PARAM), false, -1, (int)SectionMemberType.Section));
            }
            else
            {
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_DUCT_FLOW_PARAM), true, nOrder++, (int)SectionMemberType.Section));
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_DUCT_SIZE_FORMATTED_PARAM), true, nOrder++, (int)SectionMemberType.Segment));
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_REYNOLDSNUMBER_PARAM), false, -1, (int)SectionMemberType.Section));
                segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_LOSS_COEFFICIENT), false, -1, (int)SectionMemberType.Section));
            }

            segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_VELOCITY), true, nOrder++, (int)SectionMemberType.Section));
            segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_VELOCITY_PRESSURE), true, nOrder++, (int)SectionMemberType.Section));
            segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.CURVE_ELEM_LENGTH), true, nOrder++, (int)SectionMemberType.Section));
            segParameters.Add(new PressureLossParameter(ReportResource.pressureLoss, true, 100, (int)SectionMemberType.Section, false));

            segParameters.Add(new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_FRICTION), false, -1, (int)SectionMemberType.Section));

            //find the first curve
            List <MEPSystem> systems = helper.getSortedSystems();

            if (systems == null || systems.Count < 1)
            {
                return;
            }
            foreach (MEPSystem system in systems)
            {
                List <MEPSection> sections = new List <MEPSection>();
                MEPSystemInfo.getSectionsFromSystem(system, sections);
                foreach (MEPSection section in sections)
                {
                    //find one section which contains both segment and fitting
                    List <MEPCurve> curves = new List <MEPCurve>();
                    SectionsInfo.getSectionElements(section, curves, null, null, null);

                    if (curves.Count < 1)
                    {
                        continue;
                    }

                    //segment parameters
                    PressureLossParameter PLParam1 = new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.ELEM_FAMILY_PARAM), false, -1, (int)SectionMemberType.Type);
                    if (!segParameters.Contains(PLParam1))
                    {
                        segParameters.Add(PLParam1);
                    }

                    PressureLossParameter PLParam2 = new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.ELEM_FAMILY_AND_TYPE_PARAM), false, -1, (int)SectionMemberType.Type);
                    if (!segParameters.Contains(PLParam2))
                    {
                        segParameters.Add(PLParam2);
                    }

                    PressureLossParameter PLParam3 = new PressureLossParameter(LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_SIZE_FORMATTED_PARAM), false, -1, (int)SectionMemberType.Segment);
                    if (!segParameters.Contains(PLParam3))
                    {
                        segParameters.Add(PLParam3);
                    }

                    foreach (Parameter param in curves[0].Parameters)
                    {
                        //exclude the parameters under constrain and other groups
                        if (param.Definition.ParameterGroup == BuiltInParameterGroup.PG_CONSTRAINTS ||
                            LabelUtils.GetLabelFor(param.Definition.ParameterGroup) == ReportResource.other ||
                            param.Definition.Name == LabelUtils.GetLabelFor(BuiltInParameter.RBS_SECTION) ||
                            param.Definition.Name == LabelUtils.GetLabelFor(BuiltInParameter.RBS_PRESSURE_DROP))
                        {
                            continue;
                        }

                        PressureLossParameter PLParam = new PressureLossParameter(param.Definition.Name, false, -1, (int)SectionMemberType.Segment);
                        if (!segParameters.Contains(PLParam))
                        {
                            segParameters.Add(PLParam);
                        }
                    }

                    //segmentType parameters
                    MEPCurveType crvType = helper.Doc.GetElement(curves[0].GetTypeId()) as MEPCurveType;
                    if (crvType != null)
                    {
                        foreach (Parameter param in crvType.Parameters)
                        {
                            //exclude the parameters under Fitting/Segments and other groups
                            if (param.Definition.ParameterGroup == BuiltInParameterGroup.PG_FITTING ||
                                param.Definition.ParameterGroup == BuiltInParameterGroup.PG_SEGMENTS_FITTINGS ||
                                LabelUtils.GetLabelFor(param.Definition.ParameterGroup) == ReportResource.other)
                            {
                                continue;
                            }

                            PressureLossParameter PLParam = new PressureLossParameter(param.Definition.Name, false, -1, (int)SectionMemberType.Type);
                            if (!segParameters.Contains(PLParam))
                            {
                                segParameters.Add(PLParam);
                            }
                        }
                    }

                    reportData.StraightSegFields = segParameters;

                    return;
                }
            }
        }
 public void initializeData(PartialReportSettingsDlgType eInputType, PressureLossReportData inputReportData)
 {
     eType      = eInputType;
     reportData = inputReportData;
     fillingFields(eType);
 }
Пример #25
0
        // TODO
        public override bool save(string fileName, PressureLossReportData reportData)
        {
            try
            {
                PressureLossReportHelper helper = PressureLossReportHelper.instance;
                CsvStreamWriter          writer = new CsvStreamWriter();

                //title
                string strTitle = ReportResource.reportName;
                if (helper.Domain == ReportResource.pipeDomain)
                {
                    strTitle = ReportResource.pipeReportName;
                }
                else
                {
                    strTitle = ReportResource.ductReportName;
                }

                DataTable titleTB = new DataTable();
                titleTB.Columns.Add();
                titleTB.Rows.Add(strTitle);
                writer.AddData(titleTB, 1);
                writer.addOneEmptyRow();

                DataTable tbTitle = new DataTable();
                DataTable tb      = new DataTable();

                //Project info
                ReportProjectInfo proInfo = new ReportProjectInfo();
                proInfo.writeToCsv(writer);

                writer.addOneEmptyRow();

                //each system
                List <MEPSystem> systems = helper.getSortedSystems();
                if (systems == null || systems.Count < 1)
                {
                    return(false);
                }
                foreach (MEPSystem sysElem in systems)
                {
                    if (sysElem == null)
                    {
                        continue;
                    }

                    //system name and info
                    MEPSystemInfo systemInfo = new MEPSystemInfo(sysElem);
                    systemInfo.writeToCsv(writer);

                    if (systemInfo.needToWrite())
                    {
                        writer.addOneEmptyRow();
                    }

                    List <MEPSection> sections = new List <MEPSection>();
                    MEPSystemInfo.getSectionsFromSystem(sysElem, sections);

                    //sections: title and info
                    SectionsInfo sectionInfo = new SectionsInfo(sections);
                    sectionInfo.writeToCsv(writer);

                    if (reportData.DisplayCriticalPath)
                    {
                        string criticalInfo = ReportResource.criticalPath + " : " + MEPSystemInfo.getCriticalPath(sysElem);
                        criticalInfo += " ; " + ReportResource.totalPressureLoss + " : " + MEPSystemInfo.getCriticalPathPressureLoss(sysElem);

                        writer.addTitleRow(criticalInfo);
                    }

                    writer.addOneEmptyRow();

                    //segments: title and info
                    SegmentsInfo segmentsInfo = new SegmentsInfo(sections);
                    segmentsInfo.writeToCsv(writer);
                    if (segmentsInfo.needToWrite())
                    {
                        writer.addOneEmptyRow();
                    }

                    //fittings: title and info
                    FittingsInfo fittingsInfo = new FittingsInfo(sections);
                    fittingsInfo.writeToCsv(writer);
                    if (fittingsInfo.needToWrite())
                    {
                        writer.addOneEmptyRow();
                    }
                }

                writer.Save(fileName);
                return(true);
            }
            catch (Exception e)
            {
                if (e.Message == ReportConstants.failed_to_delete)
                {
                    string subMsg = ReportResource.csvSubMsg.Replace("%FULLPATH%", fileName);
                    UIHelperFunctions.postWarning(ReportResource.csvGenerateTitle, ReportResource.csvMsg, subMsg);
                }
                else
                {
                    UIHelperFunctions.postWarning(ReportResource.csvGenerateTitle, ReportResource.csvMsg);
                }
                return(false);
            }
        }
Пример #26
0
        public override bool save(string fileName, PressureLossReportData reportData)
        {
            HtmlStreamWriter writer = new HtmlStreamWriter();

            try
            {
                // Check if the xslt file exists

                if (!File.Exists(writer.XsltFileName))
                {
                    string subMsg = ReportResource.xsltFileSubMsg
                                    .Replace("%FULLPATH%", writer.XsltFileName);

                    UIHelperFunctions.postWarning(
                        ReportResource.htmlGenerateTitle,
                        ReportResource.xsltFileMsg, subMsg);

                    return(false);
                }

                PressureLossReportHelper helper = PressureLossReportHelper.instance;
                if (helper == null)
                {
                    return(false);
                }

                //xml head
                writer.WriteStartDocument(false);

                //root node
                string transXML = "UserPressureLossReport";
                writer.WriteStartElement(transXML);

                //title
                writer.WriteElementString("Title", ReportResource.reportName);

                //domain
                if (helper.Domain == ReportResource.pipeDomain)
                {
                    writer.WriteElementString("DomainName", ReportResource.pipeReportName);
                }
                else
                {
                    writer.WriteElementString("DomainName", ReportResource.ductReportName);
                }

                //write project info
                ReportProjectInfo proInfo = new ReportProjectInfo();
                proInfo.writeToHTML(writer);

                //each system
                List <MEPSystem> systems = helper.getSortedSystems();
                if (systems == null || systems.Count < 1)
                {
                    return(false);
                }

                foreach (MEPSystem sysElem in systems)
                {
                    if (sysElem == null)
                    {
                        continue;
                    }

                    //system node
                    string xmlString = "System";
                    writer.WriteStartElement(xmlString);

                    //system info: name and info
                    MEPSystemInfo systemInfo = new MEPSystemInfo(sysElem);
                    systemInfo.writeToHTML(writer);

                    //critical path
                    if (helper.ReportData.DisplayCriticalPath)
                    {
                        string criticalInfo = ReportResource.criticalPath + " : " + MEPSystemInfo.getCriticalPath(sysElem);
                        criticalInfo += " ; " + ReportResource.totalPressureLoss + " : " + MEPSystemInfo.getCriticalPathPressureLoss(sysElem);
                        writer.WriteElementString("CriticalPath", criticalInfo);
                    }

                    List <MEPSection> sections = new List <MEPSection>();
                    MEPSystemInfo.getSectionsFromSystem(sysElem, sections);

                    //sections: title and info
                    SectionsInfo sectionInfo = new SectionsInfo(sections);
                    sectionInfo.writeToHTML(writer);

                    //segments: title and info
                    SegmentsInfo segmentsInfo = new SegmentsInfo(sections);
                    segmentsInfo.writeToHTML(writer);

                    //fittings: title and info
                    FittingsInfo fittingsInfo = new FittingsInfo(sections);
                    fittingsInfo.writeToHTML(writer);

                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
                writer.WriteEndDocument();

                writer.Save(fileName);
                return(true);
            }
            catch
            {
                writer.Close();
                //delete xml
                File.Delete(writer.XmlFileName);
                UIHelperFunctions.postWarning(ReportResource.htmlGenerateTitle, ReportResource.htmlMsg);
                return(false);
            }
        }
        /************************************************************************/

        /* use "K Coefficient" for pipe and "Loss Coefficient" for duct.
         * pressure drop to pressure loss.
         * Element ID and Mark.
         */
        /************************************************************************/
        public void upgrade2(PressureLossReportData data, int nVersion = 2)
        {
            if (data == null || data.Version >= nVersion)
            {
                return;
            }

            string fieldName = LabelUtils.GetLabelFor(BuiltInParameter.RBS_LOSS_COEFFICIENT);
            string newName   = LabelUtils.GetLabelFor(BuiltInParameter.RBS_PIPE_FITTING_LOSS_KFACTOR_PARAM);

            PressureLossReportHelper helper = PressureLossReportHelper.instance;

            if (helper == null)
            {
                return;
            }

            //total pressure loss table
            {
                if (data.Domain == ReportResource.pipeDomain)
                {
                    PressureLossParameter PLParam = helper.getPressureLossParamByName(data.AvailableFields, fieldName);
                    if (PLParam != null)
                    {
                        PLParam.Name = newName;
                    }
                }
            }

            string pressureDrop = LabelUtils.GetLabelFor(BuiltInParameter.RBS_PRESSURE_DROP);
            string strMark      = LabelUtils.GetLabelFor(BuiltInParameter.ALL_MODEL_MARK);

            //segment table
            {
                //use "K Coefficient" for pipe and "Loss Coefficient" for duct
                PressureLossParameter PLParam = null;
                if (data.Domain == ReportResource.pipeDomain)
                {
                    PLParam = helper.getPressureLossParamByName(data.StraightSegFields, fieldName);
                    if (PLParam != null)
                    {
                        PLParam.Name = newName;
                    }
                }

                //pressure drop to pressure loss
                PLParam = helper.getPressureLossParamByName(data.StraightSegFields, pressureDrop);
                if (PLParam != null)
                {
                    PLParam.Name = ReportResource.pressureLoss;
                }

                //Element ID and Mark
                PLParam = helper.getPressureLossParamByName(data.StraightSegFields, strMark);
                int nDisplayOrder = -1;
                if (PLParam != null)
                {
                    nDisplayOrder        = PLParam.DisplayOrder;
                    PLParam.Selected     = false;
                    PLParam.DisplayOrder = -1;

                    PLParam = helper.getPressureLossParamByName(data.StraightSegFields, ReportResource.elementId);
                    if (PLParam != null)
                    {
                        PLParam.Selected     = true;
                        PLParam.DisplayOrder = nDisplayOrder;
                    }
                }
            }

            //fitting table
            {
                //use "K Coefficient" for pipe and "Loss Coefficient" for duct
                PressureLossParameter PLParam = null;
                if (data.Domain == ReportResource.pipeDomain)
                {
                    PressureLossParameter PLParam1 = helper.getPressureLossParamByName(data.FittingFields, newName);
                    if (PLParam1 != null)
                    {
                        data.FittingFields.Remove(PLParam1);
                    }

                    PLParam = helper.getPressureLossParamByName(data.FittingFields, fieldName);
                    if (PLParam != null)
                    {
                        PLParam.Name = newName;
                    }
                }

                //Pressure Drop to Pressure Loss
                PLParam = helper.getPressureLossParamByName(data.FittingFields, pressureDrop);
                if (PLParam != null)
                {
                    PLParam.Name = ReportResource.pressureLoss;
                }

                //Element ID and Mark
                PLParam = helper.getPressureLossParamByName(data.FittingFields, strMark);
                int nDisplayOrder = -1;
                if (PLParam != null)
                {
                    nDisplayOrder        = PLParam.DisplayOrder;
                    PLParam.Selected     = false;
                    PLParam.DisplayOrder = -1;

                    PLParam = helper.getPressureLossParamByName(data.FittingFields, ReportResource.elementId);
                    if (PLParam != null)
                    {
                        PLParam.Selected     = true;
                        PLParam.DisplayOrder = nDisplayOrder;
                    }
                }
            }

            data.Version = nVersion;
            PressureLossReportDataManager.Instance.save(data);
        }