string filterID1 = filter1.ID; var filter = bsl.GetFilter(filterID1); //or via Linq //var filter = bsl.GetFilters().FirstOrDefault(f => f.ID == filterID1);
//Must be called on the MCT //refer to "Query Building Scene Layer for available Types and Values" //... //var bsl = ...; //At 2.x //var dict = bsl.QueryAvailableFieldsAndValues(); //var dict = bsl.GetAvailableFieldsAndValues(); //var categories = dict.SingleOrDefault(kvp => kvp.Key == "Category").Value; //var floors = dict.SingleOrDefault(kvp => kvp.Key == "BldgLevel").Value; //Make a new filter definition var fd = new FilterDefinition() { Name = "Floor and Category Filter", Description = "Example filter", }; //Set up the values for the filter var filtervals = new Dictionary<string, List<string>>(); filtervals.Add("BldgLevel", new List<string>() { floors[0] }); var category_vals = categories.Where(v => v == "Walls" || v == "Stairs").ToList() ?? new List<string>(); if (category_vals.Count() > 0) { filtervals.Add("Category", category_vals); } //Create a solid block (other option is "Wireframe") var fdef = new FilterBlockDefinition() { FilterBlockMode = Object3DRenderingMode.None, Title = "Solid Filter", SelectedValues = filtervals//Floor and Category }; //Apply the block fd.FilterBlockDefinitions = new List<FilterBlockDefinition>() { fdef }; //Add the filter definition to the layer //At 2.x - bsl.SetFilter(fd); bsl.UpdateFilter(fd); //Set it active. The ID is auto-generated bsl.SetActiveFilter(fd.ID);
//var bsl = ...; //Note: Use HasFilter to check if a given filter id exists in the layer //Must be called on the MCT if (bsl.HasFilter(filter1.ID)) bsl.RemoveFilter(filter1.ID); //Or remove all filters bsl.RemoveAllFilters();
Target Platforms: Windows 11, Windows 10