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 } }
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); }
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); } }
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); }
// 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); } }
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); }