//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);
Target Platforms: Windows 11, Windows 10