ArcGIS Pro 3.3 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / Snapping Class / SetLayerSnapModes Method / SetLayerSnapModes(Layer,SnapMode,Boolean) Method
Example

In This Topic
    SetLayerSnapModes(Layer,SnapMode,Boolean) Method
    In This Topic
    Sets the state of a single SnapMode for a Layer.
    Syntax
    public static void SetLayerSnapModes( 
       Layer layer,
       SnapMode snapMode,
       bool isSet
    )
    Public Overloads Shared Sub SetLayerSnapModes( _
       ByVal layer As Layer, _
       ByVal snapMode As SnapMode, _
       ByVal isSet As Boolean _
    ) 

    Parameters

    layer
    snapMode
    isSet
    Remarks
    The state of the other SnapMode's on the layer are unchanged.
    Example
    Configure Snapping - LayerSnapModes
    layerList = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
    
    // configure by layer
    foreach (var layer in layerList)
    {
      // find the state of the snapModes for the layer
      var lsm = ArcGIS.Desktop.Mapping.Snapping.GetLayerSnapModes(layer);
      bool vertexOn = lsm.Vertex;
      // or use 
      vertexOn = lsm.GetSnapMode(SnapMode.Vertex);
    
      bool edgeOn = lsm.Edge;
      // or use 
      edgeOn = lsm.GetSnapMode(SnapMode.Edge);
    
      bool endOn = lsm.End;
      // or use 
      endOn = lsm.GetSnapMode(SnapMode.End);
    
      // update a few snapModes 
      //   turn Vertex off
      lsm.SetSnapMode(SnapMode.Vertex, false);
      // intersections on
      lsm.SetSnapMode(SnapMode.Intersection, true);
    
      // and set back to the layer
      ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layer, lsm);
    
    
      // assign a single snap mode at once
      ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layer, SnapMode.Vertex, false);
    
    
      // turn ALL snapModes on
      ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layer, true);
      // turn ALL snapModes off
      ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layer, false);
    }
    
    
    // configure for a set of layers
    
    // set Vertex, edge, end on for a set of layers, other snapModes false
    var vee = new LayerSnapModes(false)
    {
      Vertex = true,
      Edge = true,
      End = true
    };
    ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layerList, vee);
    
    
    // ensure intersection is on for a set of layers without changing any other snapModes
    
    // get the layer snapModes for the set of layers
    var dictLSM = ArcGIS.Desktop.Mapping.Snapping.GetLayerSnapModes(layerList);
    foreach (var layer in dictLSM.Keys)
    {
      var lsm = dictLSM[layer];
      lsm.Intersection = true;
    }
    ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(dictLSM);
    
    
    // set all snapModes off for a list of layers
    ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layerList, false);
    
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also