Ejemplo n.º 1
0
        // Переопределение графики для фильра IdentityDataAnalysis_AnVisibility
        private void SetAnVisibilityFilter(Document doc)
        {
            ElementClassFilter       filter    = new ElementClassFilter(typeof(ParameterFilterElement));
            FilteredElementCollector collector = new FilteredElementCollector(doc);

            collector.WherePasses(filter).ToElements()
            .Cast <ParameterFilterElement>().ToList <ParameterFilterElement>();

            var result =
                from item in collector
                where item.Name.Equals("IdentityDataAnalysis_AnVisibility")
                select item;

            if (result.Count() > 0)
            {
                ParameterFilterElement filterForAnVisibility = result.First() as ParameterFilterElement;
                View view = doc.ActiveView;

                using (Transaction t = new Transaction(doc, "SetAnVisibilityFilter"))
                {
                    t.Start();
                    if (!view.GetFilters().Contains(filterForAnVisibility.Id))
                    {
                        view.AddFilter(filterForAnVisibility.Id);
                    }
                    view.SetFilterVisibility(filterForAnVisibility.Id, false);
                    t.Commit();
                }
            }
            else
            {
                throw new NullReferenceException();
            }
        }
Ejemplo n.º 2
0
        public void CreateFilterRule3dGrid(Document doc, out ParameterFilterElement parameterFilterElement)
        {
            if (CheckFilter(doc, out parameterFilterElement))
            {
            }
            else
            {
                List <ElementId> categories = new List <ElementId>();
                categories.Add(new ElementId(BuiltInCategory.OST_GenericModel));
                List <FilterRule> filterRules = new List <FilterRule>();
                // Create filter element assocated to the input categories
                parameterFilterElement = ParameterFilterElement.Create(doc, "Grid 3D", categories);
                var            collector      = (from x in new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_GenericModel).OfClass(typeof(FamilyInstance)).Cast <FamilyInstance>() where x.Name.Contains("650mm Bubble - Single") select x).ToList();
                FamilyInstance familyInstance = collector.First();

                if (familyInstance != null)
                {
                    ElementId sharedParamId = familyInstance.get_Parameter(BuiltInParameter.ALL_MODEL_FAMILY_NAME).Id;

                    filterRules.Add(ParameterFilterRuleFactory.CreateContainsRule(sharedParamId, "3D Grid", true));
                }

                parameterFilterElement.SetRules(filterRules);
                // Apply filter to view
                //doc.ActiveView.AddFilter(parameterFilterElement.Id);
                //doc.ActiveView.SetFilterVisibility(parameterFilterElement.Id, false);
            }
        }
Ejemplo n.º 3
0
        public bool ApplyFilters(Document doc, View v, ElementId fillPatternId, bool colorLines, bool colorFill)
        {
            for (int i = 0; i < valuesList.Count; i++)
            {
                MyParameter mp         = valuesList[i];
                Parameter   param      = mp.RevitParameter;
                string      filterName = _filterNamePrefix + catsName + " " + paramName;

                if (_criteriaType == CriteriaType.Equals)
                {
                    filterName = filterName + " равно ";
                }
                else if (_criteriaType == CriteriaType.StartsWith)
                {
                    filterName = filterName + " нач.с ";
                }
                filterName += mp.AsValueString();

                ParameterFilterElement filter = FilterCreator.createSimpleFilter(doc, catsIds, filterName, mp, _criteriaType);
                if (filter == null)
                {
                    continue;
                }


                ViewUtils.ApplyViewFilter(doc, v, filter, fillPatternId, i, colorLines, colorFill);
            }
            return(true);
        }
Ejemplo n.º 4
0
        public static void ApplyViewFilter(Document doc, View view, ParameterFilterElement filter, ElementId solidFillPatternId, int colorNumber, bool colorLines, bool colorFill)
        {
            view.AddFilter(filter.Id);
            OverrideGraphicSettings ogs = new OverrideGraphicSettings();

            byte red   = Convert.ToByte(ColorsCollection.colors[colorNumber].Substring(1, 2), 16);
            byte green = Convert.ToByte(ColorsCollection.colors[colorNumber].Substring(3, 2), 16);
            byte blue  = Convert.ToByte(ColorsCollection.colors[colorNumber].Substring(5, 2), 16);

            Color clr = new Color(red, green, blue);

            if (colorLines)
            {
                ogs.SetProjectionLineColor(clr);
                ogs.SetCutLineColor(clr);
            }

            if (colorFill)
            {
#if R2017 || R2018
                ogs.SetProjectionFillColor(clr);
                ogs.SetProjectionFillPatternId(solidFillPatternId);
                ogs.SetCutFillColor(clr);
                ogs.SetCutFillPatternId(solidFillPatternId);
#else
                ogs.SetSurfaceForegroundPatternColor(clr);
                ogs.SetSurfaceForegroundPatternId(solidFillPatternId);
                ogs.SetCutForegroundPatternColor(clr);
                ogs.SetCutForegroundPatternId(solidFillPatternId);
#endif
            }
            view.SetFilterOverrides(filter.Id, ogs);
        }
Ejemplo n.º 5
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            // get UIdocument
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            //get document
            Document doc = uidoc.Document;

            //create filter
            List <ElementId> cats = new List <ElementId>();

            cats.Add(new ElementId(BuiltInCategory.OST_Sections));

            ElementParameterFilter filter = new ElementParameterFilter(ParameterFilterRuleFactory.CreateContainsRule(new ElementId(BuiltInParameter.VIEW_NAME), "wip", false));

            try
            {
                using (Transaction trans = new Transaction(doc, "create plan view"))
                {
                    trans.Start();
                    //apply filter
                    ParameterFilterElement filterElement = ParameterFilterElement.Create(doc, "My First Filter", cats, filter);
                    doc.ActiveView.AddFilter(filterElement.Id);
                    doc.ActiveView.SetFilterVisibility(filterElement.Id, false);
                    trans.Commit();
                }

                return(Result.Succeeded);
            }
            catch (Exception e)
            {
                message = e.Message;
                return(Result.Failed);
            }
        }
Ejemplo n.º 6
0
        public static OverrideGraphicsSettings FilterOverrides(View view, ParameterFilterElement parameterFilter)
        {
            var v         = (Autodesk.Revit.DB.View)view.InternalElement;
            var overrides = v.GetFilterOverrides(parameterFilter.InternalElement.Id);

            return(new OverrideGraphicsSettings(overrides));
        }
Ejemplo n.º 7
0
        public static bool FilterVisibility(View view, ParameterFilterElement parameterFilter)
        {
            var v       = (Autodesk.Revit.DB.View)view.InternalElement;
            var visible = v.GetFilterVisibility(parameterFilter.InternalElement.Id);

            return(visible);
        }
Ejemplo n.º 8
0
        public static bool IsFilterApplied(View view, ParameterFilterElement parameterFilter)
        {
            var v       = (Autodesk.Revit.DB.View)view.InternalElement;
            var visible = v.IsFilterApplied(parameterFilter.InternalElement.Id);

            return(visible);
        }
Ejemplo n.º 9
0
        public void SwitchFilters(ParameterFilterElement filter = null)
        {
            if (IsViewTemplateApplied())
            {
                if (UserDecideToKeepTemplate())
                {
                    return;
                }
            }

            try
            {
                Transaction t = new Transaction(_doc, "Switch Visibility");
                t.Start();
                if (filter != null)
                {
                    _view.SetFilterVisibility(filter.Id, !_view.GetFilterVisibility(filter.Id));
                }
                else
                {
                    foreach (ParameterFilterElement f in _filterElementsAppliedToView)
                    {
                        _view.SetFilterVisibility(f.Id, !_view.GetFilterVisibility(f.Id));
                    }
                }
                t.Commit();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 10
0
        private void CreateFilterForPipeSystem(Document doc, Element sysNameParam, string systemName)
        {
            using var tr = new Transaction(doc, "Создание фильтра для: " + systemName);
            tr.Start();
            var view       = _uiDoc.ActiveView;
            var categories = new List <ElementId>
            {
                new ElementId(BuiltInCategory.OST_PipeAccessory),
                new ElementId(BuiltInCategory.OST_PipeCurves),
                new ElementId(BuiltInCategory.OST_PipeFitting),
                new ElementId(BuiltInCategory.OST_PipeInsulations),
                new ElementId(BuiltInCategory.OST_PlumbingFixtures),
                new ElementId(BuiltInCategory.OST_FlexPipeCurves),
                new ElementId(BuiltInCategory.OST_PlaceHolderPipes),
                new ElementId(BuiltInCategory.OST_GenericModel),
                new ElementId(BuiltInCategory.OST_MechanicalEquipment),
                new ElementId(BuiltInCategory.OST_Sprinklers)
            };
            var rule = ParameterFilterRuleFactory.CreateNotContainsRule(sysNameParam.Id, systemName, true);
            var epf  = new ElementParameterFilter(rule);
            var ef   = (ElementFilter)epf;
            ParameterFilterElement filter;

            try
            {
                filter = ParameterFilterElement.Create(doc, "ADSK_Трубопровод_" + systemName, categories, ef);
            }
            catch (ArgumentException)
            {
                var filter1 = new FilteredElementCollector(doc)
                              .OfClass(typeof(ParameterFilterElement))
                              .FirstOrDefault(f => f.Name == "ADSK_Трубопровод_" + systemName);
                filter = filter1 as ParameterFilterElement;
                filter?.SetElementFilter(ef);
            }

            var eView = new FilteredElementCollector(doc)
                        .OfClass(typeof(View))
                        .WhereElementIsNotElementType()
                        .FirstOrDefault(v => v.Name == $"{view.Name}_{systemName}");

            if (null == eView)
            {
                var copyViewId = view.Duplicate(ViewDuplicateOption.Duplicate);
                if (doc.GetElement(copyViewId) is View copiedView)
                {
                    copiedView.Name = $"{view.Name}_{systemName}";
                    if (filter != null)
                    {
                        copiedView.AddFilter(filter.Id);
                        copiedView.SetFilterVisibility(filter.Id, false);
                    }
                }
            }

            tr.Commit();
        }
        Boolean CreateCopy(Autodesk.Revit.UI.UIDocument project, ParameterFilterElement filter) //select filters (or create them)
        {
            //search filters
            //ParameterFilterElement filter = null;
            // FilteredElementCollector coll = new FilteredElementCollector(project.Document).OfClass(typeof(ParameterFilterElement));
            // string topRebarFilter = "Rebar Layer Top";
            // string bottomRebarFilter = "Rebar Layer Bottom";

            return(true);
        }
Ejemplo n.º 12
0
        // Переопределение графики для фильра IdentityDataAnalysis_Visibility
        private void SetVisibilityFilter(Document doc)
        {
            ElementClassFilter       filter    = new ElementClassFilter(typeof(ParameterFilterElement));
            FilteredElementCollector collector = new FilteredElementCollector(doc);

            collector.WherePasses(filter).ToElements()
            .Cast <ParameterFilterElement>().ToList <ParameterFilterElement>();

            var result =
                from item in collector
                where item.Name.Equals("IdentityDataAnalysis_Visibility")
                select item;

            if (result.Count() > 0)
            {
                ParameterFilterElement filterForVisibility = result.First() as ParameterFilterElement;
                View view = doc.ActiveView;


                using (Transaction t = new Transaction(doc, "SetVisibilityFilter"))
                {
                    t.Start();
                    if (!view.GetFilters().Contains(filterForVisibility.Id))
                    {
                        view.AddFilter(filterForVisibility.Id);
                    }

                    OverrideGraphicSettings settings = new OverrideGraphicSettings();

                    FillPatternElement fillPatternElement = GetSolidFillPaeern(doc);
                    settings.SetSurfaceForegroundPatternId(fillPatternElement.Id);
                    settings.SetSurfaceBackgroundPatternId(fillPatternElement.Id);
                    settings.SetCutForegroundPatternId(fillPatternElement.Id);
                    settings.SetCutBackgroundPatternId(fillPatternElement.Id);

                    Color redColor = new Color(255, 0, 0);
                    settings.SetSurfaceForegroundPatternColor(redColor);
                    settings.SetSurfaceBackgroundPatternColor(redColor);
                    settings.SetCutForegroundPatternColor(redColor);
                    settings.SetCutBackgroundPatternColor(redColor);

                    settings.SetSurfaceTransparency(20);

                    view.SetFilterOverrides(filterForVisibility.Id, settings);
                    t.Commit();
                }
            }
            else
            {
                throw new NullReferenceException();
            }
        }
Ejemplo n.º 13
0
 private void ClearFilters(Document doc, View view)
 {
     Debug.WriteLine("Clear coloring filters on view: " + view.Name);
     foreach (ElementId filterId in view.GetFilters())
     {
         ParameterFilterElement filter = doc.GetElement(filterId) as ParameterFilterElement;
         if (filter.Name.StartsWith("_"))
         {
             view.RemoveFilter(filterId);
         }
     }
     Debug.WriteLine("Clear filters completed");
 }
Ejemplo n.º 14
0
        private IList <ElementId> CreateFiltersIfMissing(Document doc)
        {
            bool[] array = new bool[4];
            FilteredElementCollector val = new FilteredElementCollector(doc);

            val.OfClass(typeof(ParameterFilterElement));
            ICollection <ElementId> collection = val.ToElementIds();

            foreach (ElementId item2 in collection)
            {
                Element val2 = doc.GetElement(item2);
                for (int i = 0; i < filterNames.Length; i++)
                {
                    if (val2.get_Name() == filterNames[i])
                    {
                        array[i] = true;
                    }
                }
            }
            if (array.Any((bool b) => !b))
            {
                ElementId         val3 = LODapp.GetLODparameter(doc, "Current_LOD").get_Id();
                IList <ElementId> list = (from cat in LODapp.lodCatArray
                                          where (int)cat != -2000220
                                          select new ElementId(cat)).ToList();
                Transaction val4 = new Transaction(doc, "Create LOD filters");
                try
                {
                    val4.Start();
                    for (int j = 0; j < filterNames.Length; j++)
                    {
                        if (!array[j])
                        {
                            ParameterFilterElement val5 = ParameterFilterElement.Create(doc, filterNames[j], (ICollection <ElementId>)list);
                            FilterRule             item = ParameterFilterRuleFactory.CreateEqualsRule(val3, lodValues[j]);
                            val5.SetRules((IList <FilterRule>) new List <FilterRule>(1)
                            {
                                item
                            });
                        }
                    }
                    val4.Commit();
                }
                catch (Exception innerException)
                {
                    val4.RollBack();
                    throw new Exception("Failed to create filters.", innerException);
                }
            }
            return(GetLODfilters(doc));
        }
        Boolean CreateFilters(Autodesk.Revit.UI.UIDocument project) //select filters (or create them)
        {
            // FilteredElementCollector coll = new FilteredElementCollector(project.Document).OfClass(typeof(ParameterFilterElement));
            string topRebarFilter       = "Rebar Layer Top";
            string bottomRebarFilter    = "Rebar Layer Bottom";
            string topAddRebarFilter    = "Rebar Layer Top Add";
            string bottomAddRebarFilter = "Rebar Layer Bottom Add";

            /*
             * ParameterFilterElement f_topRebarView = null;
             * ParameterFilterElement f_bottomRebarView = null;
             * ParameterFilterElement f_topAddRebarView = null;
             * ParameterFilterElement f_bottomAddRebarView = null;
             * */
            IEnumerable <Element> filters = new FilteredElementCollector(project.Document).OfClass(typeof(ParameterFilterElement)).ToElements();

            //List<ElementId> categories = new List<ElementId>();
            //categories.Add(new ElementId(BuiltInCategory.OST_Rebar));
            // List<FilterRule> filterRules = new List<FilterRule>();
            foreach (Element element in filters)
            {
                if (element.Name.Equals(topRebarFilter))
                {
                    f_topRebarView = element as ParameterFilterElement;
                }
                else
                {
                }       //create new filter
                if (element.Name.Equals(bottomRebarFilter))
                {
                    f_bottomRebarView = element as ParameterFilterElement;
                }
                else
                {
                }       //create new filter
                if (element.Name.Equals(topAddRebarFilter))
                {
                    f_topAddRebarView = element as ParameterFilterElement;
                }
                else
                {
                }       //create new filter
                if (element.Name.Equals(bottomAddRebarFilter))
                {
                    f_bottomAddRebarView = element as ParameterFilterElement;
                }
            }

            return(true);
        }
Ejemplo n.º 16
0
        public static ElementFilter GetElementFilter(this ParameterFilterElement parameterFilter)
        {
            var filters = new List <ElementFilter>()
            {
                new ElementMulticategoryFilter(parameterFilter.GetCategories())
            };

            foreach (var rule in parameterFilter.GetRules())
            {
                filters.Add(new ElementParameterFilter(rule));
            }

            return(new LogicalAndFilter(filters));
        }
        public void CreateDublicate(Document doc, ParameterFilterElement filter, string nameprefix)
        {
            Autodesk.Revit.DB.View viewcur = doc.ActiveView;

            Transaction t = new Transaction(doc);

            t.Start("Create new dublicate");
            ElementId newViewId = ElementId.InvalidElementId;

            Autodesk.Revit.DB.View newView = null;
            newViewId    = viewcur.Duplicate(ViewDuplicateOption.Duplicate);
            newView      = viewcur.Document.GetElement(newViewId) as Autodesk.Revit.DB.View;
            newView.Name = newView.Name + nameprefix;

            t.Commit();
        }
Ejemplo n.º 18
0
        // Создание фильтров IdentityDataAnalysis_Visibility и IdentityDataAnalysis_AnVisibility,
        // назначение им правил
        private void CreateFilters(UIDocument uiDoc, Parameter parameter, List <Element> elements)
        {
            IList <FilterRule> visibilityFilterRules = new List <FilterRule>();

            visibilityFilterRules.Add(ParameterFilterRuleFactory.CreateEqualsRule(parameter.Id, "", true));
            ElementParameterFilter visibilityFilter = new ElementParameterFilter(visibilityFilterRules);

            IList <FilterRule> anVisibilityFilterRules = new List <FilterRule>();

            anVisibilityFilterRules.Add(ParameterFilterRuleFactory.CreateNotEqualsRule(parameter.Id, "", true));
            ElementParameterFilter anVisibilityFilter = new ElementParameterFilter(anVisibilityFilterRules);

            List <ElementId>       categorysIds          = GetUniquCategorysIds(elements);
            ParameterFilterElement filterForVisibility   = CreateFilterElement(uiDoc.Document, "IdentityDataAnalysis_Visibility", categorysIds, visibilityFilter);
            ParameterFilterElement filterForAnVisibility = CreateFilterElement(uiDoc.Document, "IdentityDataAnalysis_AnVisibility", categorysIds, anVisibilityFilter);
        }
Ejemplo n.º 19
0
        public static IEnumerable <Revit.Elements.Element> AllElementsByFilter(ParameterFilterElement parameterFilterElement)
        {
            Document document = DocumentManager.Instance.CurrentDBDocument;

            var parameterFilter = parameterFilterElement as ParameterFilterElement;
            var categoriesIds   = parameterFilter.GetCategories();
            var elementFilter   = parameterFilter.GetElementFilter();

            var elements = new List <Autodesk.Revit.DB.Element>();

            foreach (var id in categoriesIds)
            {
                elements.AddRange(new FilteredElementCollector(document).OfCategoryId(id).WherePasses(elementFilter));
            }

            return(elements.Select(x => x.ToDSType(true)));
        }
Ejemplo n.º 20
0
        public static void CreateViewFilter(Document doc, View view)
        {
            List <ElementId> categories = new List <ElementId>();

            categories.Add(new ElementId(BuiltInCategory.OST_Walls));
            List <FilterRule> filterRules = new List <FilterRule>();

            try
            {
                // Create filter element associated to the input categories
                ParameterFilterElement parameterFilterElement = ParameterFilterElement.Create(doc, "Example view filter", categories);

                // Criterion 1 - wall type Function is "Exterior"
                ElementId exteriorParamId = new ElementId(BuiltInParameter.FUNCTION_PARAM);
                filterRules.Add(ParameterFilterRuleFactory.CreateEqualsRule(exteriorParamId, (int)WallFunction.Exterior));

                // Criterion 2 - wall height > some number
                ElementId lengthId = new ElementId(BuiltInParameter.CURVE_ELEM_LENGTH);
                filterRules.Add(ParameterFilterRuleFactory.CreateGreaterOrEqualRule(lengthId, 28.0, 0.0001));

                // Criterion 3 - custom shared parameter value matches string pattern
                // Get the id for the shared parameter - the ElementId is not hardcoded, so we need to get an instance of this type to find it
                Guid spGuid = new Guid("96b00b61-7f5a-4f36-a828-5cd07890a02a");
                FilteredElementCollector collector = new FilteredElementCollector(doc);
                collector.OfClass(typeof(Wall));
                Wall wall = collector.FirstElement() as Wall;

                if (wall != null)
                {
                    Parameter sharedParam   = wall.get_Parameter(spGuid);
                    ElementId sharedParamId = sharedParam.Id;

                    filterRules.Add(ParameterFilterRuleFactory.CreateBeginsWithRule(sharedParamId, "15.", true));
                }

                parameterFilterElement.SetRules(filterRules);

                // Apply filter to view
                view.AddFilter(parameterFilterElement.Id);
                view.SetFilterVisibility(parameterFilterElement.Id, false);
            }
            catch
            {
            }
        }
Ejemplo n.º 21
0
        public static List <RevitElements.Element> GetFiltersFromView(Revit.Elements.Element View)
        {
            DB.Document doc = DocumentManager.Instance.CurrentDBDocument;

            List <RevitElements.Element> filters = new List <RevitElements.Element>();
            View _view = View.InternalElement as View;
            ICollection <ElementId> filterIds = _view.GetFilters();
            List <DB.Element>       parameterFilterElements = filterIds.Select(id => doc.GetElement(id)).ToList();


            foreach (DB.Element pfe in parameterFilterElements)
            {
                ParameterFilterElement _pfe = pfe as ParameterFilterElement;
                filters.Add(_pfe.ToDSType(true));
            }

            return(filters);
        }
Ejemplo n.º 22
0
        // Создание или переопределение фильтра
        private ParameterFilterElement CreateFilterElement(Document doc, string name, List <ElementId> categoriesIds, ElementFilter elementFilter)
        {
            ElementClassFilter       filter    = new ElementClassFilter(typeof(ParameterFilterElement));
            FilteredElementCollector collector = new FilteredElementCollector(doc);

            collector.WherePasses(filter).ToElements()
            .Cast <ParameterFilterElement>().ToList <ParameterFilterElement>();

            var result =
                from item in collector
                where item.Name.Equals(name)
                select item;

            ParameterFilterElement filterElement;

            if (result.Count() == 0)
            {
                using (Transaction t = new Transaction(doc, "CreateFilterElement"))
                {
                    t.Start();
                    filterElement = ParameterFilterElement.Create(doc, name, categoriesIds, elementFilter);
                    t.Commit();
                }
            }
            else
            {
                filterElement = result.First() as ParameterFilterElement;
                using (Transaction t = new Transaction(doc, "SetCategoriesFilterElement"))
                {
                    t.Start();
                    filterElement.SetCategories(categoriesIds);
                    filterElement.SetElementFilter(elementFilter);
                    t.Commit();
                }
            }
            if (filterElement != null)
            {
                return(filterElement);
            }
            else
            {
                throw new Exception();
            }
        }
Ejemplo n.º 23
0
        public static List <RevitElements.Element> GetallFilters(bool Run)
        {
            if (!Run)
            {
                return(null);
            }

            DB.Document doc = DocumentManager.Instance.CurrentDBDocument;
            List <RevitElements.Element> filters   = new List <RevitElements.Element>();
            ICollection <ElementId>      filterIds = new FilteredElementCollector(doc).OfClass(typeof(ParameterFilterElement)).ToElementIds();
            List <DB.Element>            parameterFilterElements = filterIds.Select(id => doc.GetElement(id)).ToList();


            foreach (DB.Element pfe in parameterFilterElements)
            {
                ParameterFilterElement _pfe = pfe as ParameterFilterElement;
                filters.Add(_pfe.ToDSType(true));
            }
            return(filters);
        }
        protected override Result ProcessCommand(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            // Create Category
            var cats = new List <ElementId>();

            cats.Add(new ElementId(BuiltInCategory.OST_Sections));
            var sectionFilter = ParameterFilterRuleFactory.CreateContainsRule(new ElementId(BuiltInParameter.VIEW_NAME), "Section 1", false);
            var elementFilter = new ElementParameterFilter(sectionFilter);

            using (Transaction trans = new Transaction(_activeDocument, "Create Filter"))
            {
                trans.Start();

                var filter = ParameterFilterElement.Create(_activeDocument, "Wall Filter", cats, elementFilter);
                _activeDocument.ActiveView.AddFilter(filter.Id);
                _activeDocument.ActiveView.SetFilterVisibility(filter.Id, false);
                trans.Commit();
            }
            return(Result.Succeeded);
        }
Ejemplo n.º 25
0
        public static ParameterFilterElement createSimpleFilter(Document doc, List <ElementId> catsIds, string filterName, MyParameter mp, CriteriaType ctype)
        {
            List <ParameterFilterElement> filters = new FilteredElementCollector(doc)
                                                    .OfClass(typeof(ParameterFilterElement))
                                                    .Cast <ParameterFilterElement>()
                                                    .ToList();

            FilterRule rule = null;
            List <ParameterFilterElement> checkFilters = filters.Where(f => f.Name == filterName).ToList();
            ParameterFilterElement        filter       = null;

            if (checkFilters.Count != 0)
            {
                filter = checkFilters[0];
            }
            else
            {
                rule = FilterCreator.CreateRule(mp, ctype);


                if (rule == null)
                {
                    return(null);
                }

                List <FilterRule> filterRules = new List <FilterRule> {
                    rule
                };
                try
                {
                    filter = ParameterFilterElement.Create(doc, filterName, catsIds);
#if R2017 || R2018
                    filter.SetRules(filterRules);
#else
                    filter.SetElementFilter(new ElementParameterFilter(filterRules));
#endif
                }
                catch { }
            }
            return(filter);
        }
Ejemplo n.º 26
0
        public bool ApplyFilters(Document doc, View v, ElementId fillPatternId, bool colorLines, bool colorFill)
        {
            Debug.WriteLine("Start apply rebar filters for view: " + v.Name);
            for (int i = 0; i < values.Count; i++)
            {
                string val = values[i];
                Debug.WriteLine("Value: " + val);

                ParameterFilterElement filterConstr = FilterCreator.CreateConstrFilter(doc, catIdConstructions, markParam, val, _filterNamePrefix);
                ViewUtils.ApplyViewFilter(doc, v, filterConstr, fillPatternId, i, colorLines, colorFill);

                if (!_rebarIsFamilyParamExists)
                {
                    ParameterFilterElement filterRebarSingleMode = FilterCreator
                                                                   .CreateRebarHostFilter(doc, catIdRebar, rebarIsFamilyParam, rebarHostParam, rebarMrkParam, val, _filterNamePrefix, RebarFilterMode.SingleMode);
                    ViewUtils.ApplyViewFilter(doc, v, filterRebarSingleMode, fillPatternId, i, colorLines, colorFill);
                    continue;
                }

#if R2017 || R2018
                ParameterFilterElement filterRebarStandardRebar = FilterCreator
                                                                  .CreateRebarHostFilter(doc, catIdRebar, rebarIsFamilyParam, rebarHostParam, rebarMrkParam, val, _filterNamePrefix, RebarFilterMode.StandardRebarMode);
                ViewUtils.ApplyViewFilter(doc, v, filterRebarStandardRebar, fillPatternId, i, colorLines, colorFill);
                Debug.WriteLine("Filter created and applied to view: " + filterRebarStandardRebar.Name);

                ParameterFilterElement filterRebarIfcRebar = FilterCreator
                                                             .CreateRebarHostFilter(doc, new List <ElementId> {
                    new ElementId(BuiltInCategory.OST_Rebar)
                }, rebarIsFamilyParam, rebarHostParam, rebarMrkParam, val, _filterNamePrefix, RebarFilterMode.IfcMode);
                ViewUtils.ApplyViewFilter(doc, v, filterRebarIfcRebar, fillPatternId, i, colorLines, colorFill);
                Debug.WriteLine("Filter created and applied to view: " + filterRebarIfcRebar.Name);
#else
                ParameterFilterElement filterRebarOrStyle = FilterCreator
                                                            .CreateRebarHostFilter(doc, catIdRebar, rebarIsFamilyParam, rebarHostParam, rebarMrkParam, val, _filterNamePrefix, RebarFilterMode.DoubleMode);
                ViewUtils.ApplyViewFilter(doc, v, filterRebarOrStyle, fillPatternId, i, colorLines, colorFill);
                Debug.WriteLine("Filter created and applied to view: " + filterRebarOrStyle.Name);
#endif
            }
            Debug.WriteLine("All filters applied");
            return(true);
        }
Ejemplo n.º 27
0
        public bool CheckFilter(Document doc, out ParameterFilterElement parameterFilterElement)
        {
            bool flag = false;

            parameterFilterElement = null;
            var col = new FilteredElementCollector(doc).OfClass(typeof(ParameterFilterElement)).Cast <ParameterFilterElement>().ToList();

            foreach (var item in col)
            {
                if (item.Name == "Grid 3D")
                {
                    parameterFilterElement = item;
                    return(flag = true);
                }
                if (flag)
                {
                    break;
                }
            }
            return(flag);
        }
        private bool CanPassFilterRules(ParameterFilterElement filter, ElementId elemId)
        {
            Element elem = CurrentDocument.GetElement(elemId);

            if (elem == null)
            {
                return(false);
            }

            bool bPassed = true;

            foreach (FilterRule rule in filter.GetRules())
            {
                if (!rule.ElementPasses(elem))
                {
                    bPassed = false;
                    break;
                }
            }

            return(bPassed);
        }
Ejemplo n.º 29
0
        public static List <RevitElements.Element> GetFiltersFromActiveView(bool Run)
        {
            if (!Run)
            {
                return(null);
            }

            DB.Document doc = DocumentManager.Instance.CurrentDBDocument;

            List <RevitElements.Element> filters   = new List <RevitElements.Element>();
            ICollection <ElementId>      filterIds = doc.ActiveView.GetFilters();
            List <DB.Element>            parameterFilterElements = filterIds.Select(id => doc.GetElement(id)).ToList();


            foreach (DB.Element pfe in parameterFilterElements)
            {
                ParameterFilterElement _pfe = pfe as ParameterFilterElement;
                filters.Add(_pfe.ToDSType(true));
            }

            return(filters);
        }
Ejemplo n.º 30
0
        public static ParameterFilterElement CreateConstrFilter(Document doc, List <ElementId> catsIds, Parameter markParam, string mark, string filterNamePrefix)
        {
            string filterName = filterNamePrefix + "_Конструкция " + mark;

            ParameterFilterElement filter = DocumentGetter.GetFilterByName(doc, filterName);

            if (filter != null)
            {
                return(filter);
            }

            FilterRule markEquals = ParameterFilterRuleFactory.CreateEqualsRule(markParam.Id, mark, true);

#if R2017 || R2018
            filter = ParameterFilterElement.Create(doc, filterName, catsIds);
            filter.SetRules(new List <FilterRule> {
                markEquals
            });
#else
            ElementParameterFilter epf = new ElementParameterFilter(markEquals);
            filter = ParameterFilterElement.Create(doc, filterName, catsIds, epf);
#endif
            return(filter);
        }