Esempio n. 1
0
        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();
            }
        }