ArcGIS Pro 3.2 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / BuildingDisciplineSceneLayer Class
Members Example

In This Topic
    BuildingDisciplineSceneLayer Class
    In This Topic
    BuildingDisciplineSceneLayer are sublayers of a BuildingSceneLayer.
    Object Model
    BuildingDisciplineSceneLayer ClassLayer ClassCIMDataConnection ClassTimeExtent ClassCIMBaseLayer ClassSpatialReference ClassTimeParameters ClassMap ClassILayerContainer InterfaceEnvelope Class
    Syntax
    Remarks
    BuildingDisciplineSceneLayers represent each of the individual disciplines (architectural, structural, MEP, etc) that are contained within the building and which were derived from the original BIM data used to create the "parent" BuildingScenelayer
    BuildingDisciplineSceneLayers are never created, or exist, stand-alone. They have a composite relationship with the BuildingScenelayer which contains them.
    A FilterDefinition is actually applied to the underlying BuildingDisciplineSceneLayers content (within the special "Full Model" BuildingDisciplineSceneLayer)
    Example
    Get BuildingDisciplineSceneLayer Discipline
    var bsl_discipline = MapView.Active.Map.GetLayersAsFlattenedList().OfType<BuildingDisciplineSceneLayer>().FirstOrDefault(l => l.Name == "Architectural");
    var disciplineName = bsl_discipline.GetDiscipline();
    Enumerate the Discipline Layers from a Building SceneLayer
    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);
      }
    }
    
    Inheritance Hierarchy

    System.Object
       ArcGIS.Desktop.Framework.Contracts.PropertyChangedBase
          ArcGIS.Desktop.Mapping.MapMember
             ArcGIS.Desktop.Mapping.Layer
                ArcGIS.Desktop.Mapping.CompositeLayer
                   ArcGIS.Desktop.Mapping.BuildingDisciplineSceneLayer

    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also