public List<FilterBlockDefinition> FilterBlockDefinitions {get; set;}
Public Property FilterBlockDefinitions As List(Of FilterBlockDefinition)
public List<FilterBlockDefinition> FilterBlockDefinitions {get; set;}
Public Property FilterBlockDefinitions As List(Of FilterBlockDefinition)
//Must be called on the MCT //Creates a default filter on the building scene //var bsl = ...; var filter1 = bsl.CreateDefaultFilter(); var values = filter1.FilterBlockDefinitions[0].SelectedValues; //values will be a single value for the type //"CreatedPhase", value "New Construction" //There will be at least one filter after "CreateDefaultFilter()" call var filtersCount = bsl.GetFilters().Count;
//var bsl = ...; //Note: wire_frame_filters can be null in this example var wire_frame_filters = bsl.GetFilters().Where( f => f.FilterBlockDefinitions.Any( fb => fb.FilterBlockMode == Object3DRenderingMode.Wireframe)); //substitute Object3DRenderingMode.None to get blocks with a solid mode (default) //and... //fb.FilterBlockMode == Object3DRenderingMode.Wireframe && //fb.FilterBlockMode == Object3DRenderingMode.None //for blocks with both
//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);
//Must be called on the MCT //Assuming retrieve filter ok //var bsl = ...; //var filter1 = bsl.GetFilter(...); var filterBlock = new FilterBlockDefinition(); filterBlock.FilterBlockMode = Object3DRenderingMode.Wireframe; var selectedValues = new Dictionary<string, List<string>>(); //We assume QueryAvailableFieldsAndValues() contains "Walls" and "Doors" //For 'Category' selectedValues["Category"] = new List<string>() { "Walls", "Doors" }; filterBlock.SelectedValues = selectedValues; //Overwrite filter1.FilterBlockDefinitions = new List<FilterBlockDefinition>() { filterBlock }; //At 2.x - bsl.SetFilter(filter1); bsl.UpdateFilter(filter1);
Target Platforms: Windows 11, Windows 10, Windows 8.1