private void FillData() { PressureLossReportHelper helper = PressureLossReportHelper.instance; if (helper == null) { return; } if (helper.Domain == ReportResource.ductDomain) { filterCategories.Add(Autodesk.Revit.DB.BuiltInCategory.OST_DuctSystem); this.Text = ReportResource.ductSystemSelectorDlgTitle; } else if (helper.Domain == ReportResource.pipeDomain) { filterCategories.Add(Autodesk.Revit.DB.BuiltInCategory.OST_PipingSystem); this.Text = ReportResource.pipeSystemSelectorDlgTitle; } //default add all valid system type to checked system type foreach (Autodesk.Revit.DB.BuiltInCategory categoryId in filterCategories) { ICollection <Autodesk.Revit.DB.Element> founds = helper.getCategoryTypeElements(categoryId); foreach (Autodesk.Revit.DB.MEPSystemType sysType in founds) { if (helper.isValidSystemType(sysType)) { allValidSystemType.Add(sysType); } } } checkedSystemType = helper.getSelectedSystemTypes(); if (checkedSystemType == null || checkedSystemType.Count < 1) { if (checkedSystemType == null) { checkedSystemType = new List <MEPSystemType>(); } foreach (Autodesk.Revit.DB.MEPSystemType sysType in allValidSystemType) { checkedSystemType.Add(sysType); } } //sort the system types SortSystemTypeByNameCamparer systemTypeCompare = new SortSystemTypeByNameCamparer(); checkedSystemType.Sort(systemTypeCompare); allValidSystemType.Sort(systemTypeCompare); foreach (Autodesk.Revit.DB.BuiltInCategory categoryId in filterCategories) { ICollection <Autodesk.Revit.DB.Element> founds = helper.getCategoryElements(categoryId); addItemsToCheckList(helper, founds); } }
private void addItemsToCheckList(PressureLossReportHelper helper, ICollection <Autodesk.Revit.DB.Element> founds) { //get the selected systems first ElementSet selSystems = new ElementSet(); helper.getSelectedSystems(selSystems); List <string> checkedItems = new List <string>(); foreach (Element elem in selSystems) { MEPSystem mepSys = elem as MEPSystem; if (mepSys == null) { continue; } checkedItems.Add(mepSys.Name); } List <MEPSystemType> selSystemTypes = helper.getSelectedSystemTypes(true); if ((selSystemTypes == null || selSystemTypes.Count < 1) && (checkedItems == null || checkedItems.Count < 1)) { bool bCheckAll = true; if (helper.isSelectInValidSystemType()) { bCheckAll = false; } addItemsToCheckList(helper, founds, null, bCheckAll); } else { foreach (Autodesk.Revit.DB.Element elem in founds) { Autodesk.Revit.DB.MEPSystem mepSysElem = elem as Autodesk.Revit.DB.MEPSystem; Autodesk.Revit.DB.MEPSystemType mepSysType = helper.getSystemType(helper.Doc, mepSysElem); if (isCheckedSystemType(mepSysType) && helper.isValidSystem(helper.Doc, mepSysElem, helper.Domain) && isCalculationOn(helper.Doc, mepSysElem)) { if (selSystemTypes != null && PressureLossReportHelper.isSystemTypeInList(selSystemTypes, mepSysType)) { checkedItems.Add(mepSysElem.Name); } } } addItemsToCheckList(helper, founds, checkedItems); } }