public Dictionary<string,List<string>> GetAvailableFieldsAndValues()
Public Function GetAvailableFieldsAndValues() As Dictionary(Of String,List(Of String))
Return Value
Dictionary{System.String, List{System.String}}"/>
public Dictionary<string,List<string>> GetAvailableFieldsAndValues()
Public Function GetAvailableFieldsAndValues() As Dictionary(Of String,List(Of String))
Exception | Description |
---|---|
ArcGIS.Core.CalledOnWrongThreadException | This method or property must be called within the lambda passed to QueuedTask.Run. |
//Must be called on the MCT //Retrieve the complete set of types and values for the building scene //var bsl = ...; //At 2.x - var dict = bsl.QueryAvailableFieldsAndValues(); var dict = bsl.GetAvailableFieldsAndValues(); //get a list of existing disciplines var disciplines = dict.SingleOrDefault( kvp => kvp.Key == "Discipline").Value ?? new List<string>(); //get a list of existing categories var categories = dict.SingleOrDefault( kvp => kvp.Key == "Category").Value ?? new List<string>(); //get a list of existing floors or "levels" var floors = dict.SingleOrDefault( kvp => kvp.Key == "BldgLevel").Value ?? new List<string>();
//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