Ejemplo n.º 1
0
        /// <summary>
        /// Returns all the used filters in a project
        /// </summary>
        /// <param name="doc"></param>
        /// <returns></returns>
        private void GetUsedFilters()
        {
            FilteredElementCollector collector = new FilteredElementCollector(doc);
            IList <Element>          views     = collector.OfClass(typeof(Autodesk.Revit.DB.View)).ToElements();

            foreach (Element el in views)
            {
                Autodesk.Revit.DB.View  v = el as Autodesk.Revit.DB.View;
                ICollection <ElementId> filterIds;
                try
                {
                    filterIds = v.GetFilters();
                }
                catch (AmbiguousMatchException)
                {
                    continue;
                }
                catch (Autodesk.Revit.Exceptions.InvalidOperationException)
                {
                    continue;
                }
                foreach (ElementId id in filterIds)
                {
                    OverrideGraphicSettings filterOverrides = v.GetFilterOverrides(id);
                    bool filterVisible = v.GetFilterVisibility(id);

                    if (CompareOverrides(filterOverrides, _defaultOverrides) && filterVisible)
                    {
                        if (removeFromView)
                        {
                            using (Transaction t = new Transaction(doc, "Remove filter"))
                            {
                                t.Start();
                                v.RemoveFilter(id);
                                t.Commit();
                            }
                            removed++;
                            continue;
                        }
                        else
                        {
                            unused.Add(id);
                        }
                    }
                    used.Add(id);
                }
            }
            if (removeFromView)
            {
                TaskDialog.Show("Unused on Views Filters", "Unused filters on views" + Environment.NewLine + removed.ToString() + " filters removed.");
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns all the used filters in a project
        /// </summary>
        /// <param name="doc"></param>
        /// <returns></returns>
        private void GetUsedFilters()
        {
            //FilteredElementCollector collector = new FilteredElementCollector(doc);
            //IList<Element> views = collector.OfClass(typeof(Autodesk.Revit.DB.View)).WhereElementIsNotElementType().ToElements();
            //Filted Out the Sheets

            FilteredElementCollector collViewPlan    = new FilteredElementCollector(doc).OfClass(typeof(ViewPlan)).WhereElementIsNotElementType();
            FilteredElementCollector collViewSection = new FilteredElementCollector(doc).OfClass(typeof(ViewSection)).WhereElementIsNotElementType();
            FilteredElementCollector collView3D      = new FilteredElementCollector(doc).OfClass(typeof(View3D)).WhereElementIsNotElementType();

            IList <Element> filteredViews = new List <Element>();

            foreach (var item in collViewPlan)
            {
                filteredViews.Add(item);
            }


            foreach (var item in collViewSection)
            {
                filteredViews.Add(item);
            }


            foreach (var item in collView3D)
            {
                filteredViews.Add(item);
            }

            foreach (Element el in filteredViews)
            {
                Autodesk.Revit.DB.View  v = el as Autodesk.Revit.DB.View;
                ICollection <ElementId> filterIds;
                try
                {
                    filterIds = v.GetFilters();
                }
                catch (AmbiguousMatchException)
                {
                    continue;
                }
                catch (Autodesk.Revit.Exceptions.InvalidOperationException)
                {
                    continue;
                }
                foreach (ElementId id in filterIds)
                {
                    if (used.Contains(id))
                    {
                        continue;
                    }
                    OverrideGraphicSettings filterOverrides = v.GetFilterOverrides(id);
                    bool filterVisible = v.GetFilterVisibility(id);

                    if (CompareOverrides(filterOverrides, _defaultOverrides) && filterVisible)
                    {
                        unassigned.Add(id);
                    }
                    else
                    {
                        used.Add(id);
                    }
                }
            }

            unassigned = new HashSet <ElementId>(unassigned.ToList().Except(used.ToList()));
        }