private void UpdatePluntSystem(List <FamilyInstance> allPlunts, ref List <FamilyInstance> failedPlunts) { UI.ProgressBar pBar = new UI.ProgressBar("Назначение систем", allPlunts.Count); foreach (FamilyInstance plunt in allPlunts) { Space space = GetSpaceOfPlant(plunt); string systemName = null; if (space != null) { string systemTypeName = plunt.get_Parameter(BuiltInParameter.RBS_DUCT_SYSTEM_TYPE_PARAM).AsValueString(); string systemClassName = plunt.get_Parameter(BuiltInParameter.RBS_SYSTEM_CLASSIFICATION_PARAM).AsString(); if (systemTypeName == suplySystemTypeName) { systemName = space.LookupParameter(supplySystemParameterName).AsString(); } else if (systemTypeName == exhaustSystemTypeName) { systemName = space.LookupParameter(exhaustSystemParameterName).AsString(); } /*else if (systemTypeName == "Не определено") * { * if (systemClassName == "Приточный воздух") systemName = space.LookupParameter(supplySystemParameterName).AsString(); * else if (systemClassName == "Отработанный воздух") systemName = space.LookupParameter(exhaustSystemParameterName).AsString(); * }*/ if (systemName != null) { ConnectorSet connectors = plunt.MEPModel.ConnectorManager.Connectors; Connector baseConnector = connectors.Cast <Connector>().FirstOrDefault(); MEPSystem fromSystem = baseConnector?.MEPSystem; MEPSystem toSystem = new FilteredElementCollector(doc).OfClass(typeof(MEPSystem)).Cast <MEPSystem>().Where(x => x.Name == systemName).FirstOrDefault(); if (fromSystem?.Id.IntegerValue == toSystem?.Id.IntegerValue) { continue; } if (fromSystem == null && toSystem == null) { DuctSystemType ductType = DuctSystemType.UndefinedSystemType; if (systemTypeName == suplySystemTypeName) { ductType = DuctSystemType.SupplyAir; } else if (systemTypeName == exhaustSystemTypeName) { ductType = DuctSystemType.ExhaustAir; } toSystem = doc.Create.NewMechanicalSystem(null, connectors, ductType); toSystem.Name = systemName; } else if (fromSystem == null && toSystem != null) { toSystem.Add(connectors); } else if (fromSystem != null && toSystem == null) { fromSystem.Name = systemName; } else if (fromSystem != null && toSystem != null) { try { if (fromSystem.ConnectorManager.Connectors.Size > 1) { ConnectorSet smallSet = new ConnectorSet(); smallSet.Insert(baseConnector); fromSystem.Remove(smallSet); toSystem.Add(smallSet); } else { failedPlunts.Add(plunt); } } catch (Autodesk.Revit.Exceptions.ArgumentException) { failedPlunts.Add(plunt); } finally { pBar.StepUp(); } } } else { failedPlunts.Add(plunt); } } pBar.StepUp(); } }