var bsl_discipline = MapView.Active.Map.GetLayersAsFlattenedList().OfType<BuildingDisciplineSceneLayer>().FirstOrDefault(l => l.Name == "Architectural"); var disciplineName = bsl_discipline.GetDiscipline();
public void QueryBuildingSceneLayer() { var bldgLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<BuildingSceneLayer>().First(); var disciplines = new Dictionary<string, BuildingDisciplineSceneLayer>(); //A Building layer has two children - Overview and FullModel //Overview is a FeatureSceneLayer //Full Model is a BuildingDisciplineSceneLayer that contains the disciplines var fullModel = bldgLayer.FindLayers("Full Model").First() as BuildingDisciplineSceneLayer; CollectDisciplineLayers(fullModel, disciplines); } internal void CollectDisciplineLayers(BuildingDisciplineSceneLayer disciplineLayer, Dictionary<string, BuildingDisciplineSceneLayer> disciplines) { //collect information on the disciplines var name = disciplineLayer.Name; //At 2.x - var layerType = // ((ISceneLayerInfo)disciplineLayer).SceneServiceLayerType.ToString(); var discipline = disciplineLayer.GetDiscipline(); //etc //TODO - use collected information disciplines.Add(discipline, disciplineLayer); //Discipline layers are composite layers too foreach (var childDiscipline in disciplineLayer.Layers .OfType<BuildingDisciplineSceneLayer>()) { //Discipline layers can also contain FeatureSceneLayers that render the //individual full model contents var content_names = string.Join(", ", childDiscipline.Layers .OfType<FeatureSceneLayer>().Select(fl => fl.Name)); CollectDisciplineLayers(childDiscipline, disciplines); } }
Target Platforms: Windows 11, Windows 10