ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data.Analyst3D Namespace / TinEditor Class / StartEditing Method
Example

In This Topic
    StartEditing Method
    In This Topic
    Puts the TIN editor in edit mode. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    Public Function StartEditing() As Boolean
    public bool StartEditing()

    Return Value

    Returns true if the method succeeds and false otherwise.
    Exceptions
    ExceptionDescription
    This method must be called on the MCT. Use QueuedTask.Run.
    Example
    Create a new TIN and save edits
    {
      // Create a new TIN 
      tinEditor = new TinEditor(MapView.Active.Extent); // or use any envelope 
      tinEditor.AddMassPoints(points, 42, 13.7);
    
      // Since the TIN doesn't exist on disk, you can't call SaveEdits.
      // You must call SaveAs first.
      try
      {
        tinEditor.SaveEdits();
      }
      catch (TinException)
      {
        // Handle the exception
      }
    
      // Since the TIN doesn't exist on disk, you can't call StopEditing(true).
      // You must call SaveAs first.
      try
      {
        tinEditor.StopEditing(true);
      }
      catch (TinException)
      {
        // Handle the exception
      }
    
      // Now save the newly created TIN to disk
      tinEditor.SaveAs("C:\\Tin1", false);
    
      // Delete a node
      tinEditor.DeleteNode(7);
    
      // Since the TIN now exists on disk you can call SaveEdits
      tinEditor.SaveEdits();
    
      // Delete another node
      tinEditor.DeleteNode(11);
    
      // Since the TIN now exists on disk, you can call StopEditing(true).
      // The edits will be saved and the tin editor will be taken out of edit mode.
      tinEditor.StopEditing(true);
      bool isInEditMode = tinEditor.IsInEditMode; // isInEditMode = false
    
      // Now if you try to make an edit, an exception is thrown because the editor is not in edit mode.
      try
      {
        tinEditor.AddPointZ(pointZ, 0);
      }
      catch (TinException)
      {
        // Handle the exception
      }
    
      // Put the editor into edit mode.
      tinEditor.StartEditing();
      isInEditMode = tinEditor.IsInEditMode; // isInEditMode = true
    
      // Now you can add the point
      tinEditor.AddPointZ(pointZ, 0);
    
      // Oops, you didn't really want to add the point. You want to stop editing and discard the unsaved edits
      // since the last time the editor was put into edit mode. All previous saved edits remain.
      tinEditor.StopEditing(false);
    }
    Edit an existing TIN
    {
      string tinPath = "C:\\Tin"; //original TIN path
      // Create an instance of TinEditor from an existing TinDataset
      tinEditor = new TinEditor(tinDataset);
      int numNodes = tinDataset.GetNodeCount();  // numNodes = 10
      tinEditor.AddPointZ(pointZ, 7);
    
      // Calling SaveEdits modifies the existing TIN
      tinEditor.SaveEdits();
      numNodes = tinDataset.GetNodeCount();  // numNodes = 11
    
      // Adding twenty points
      tinEditor.AddMassPoints(points, 10, 112.5);
    
      // Calling SaveAs creates a new TIN on disk, and 
      // the tin editor points to the new TIN.
      string tinPath2 = "C:\\Tin2";
      tinEditor.SaveAs(tinPath2, true);
    
      tinEditor.StopEditing(true);
      var connection = new FileSystemConnectionPath(new Uri(Path.GetDirectoryName(tinPath2)), FileSystemDatastoreType.Tin);
      using (FileSystemDatastore dataStore = new FileSystemDatastore(connection))
      {
        // See https://github.com/esri/arcgis-pro-sdk/wiki/ProConcepts-3D-Analyst-Data#working-with-tin-data
        TinDataset tinDataset2 = dataStore.OpenDataset<ArcGIS.Core.Data.Analyst3D.TinDataset>(Path.GetFileName(tinPath2));
        numNodes = tinDataset2.GetNodeCount(); // numNodes = 31
      }
    
      // The edits still show up in the original TIN while it is in memory, but if you open it
      // again you will see that it only has the edits that were saved before SaveAs was called.
      numNodes = tinDataset.GetNodeCount(); // numNodes = 31
      var connection2 = new FileSystemConnectionPath(new Uri(Path.GetDirectoryName(tinPath)), FileSystemDatastoreType.Tin);
      using (FileSystemDatastore dataStore = new FileSystemDatastore(connection))
      {
        // See https://github.com/esri/arcgis-pro-sdk/wiki/ProConcepts-3D-Analyst-Data#working-with-tin-data
        tinDataset = dataStore.OpenDataset<ArcGIS.Core.Data.Analyst3D.TinDataset>(Path.GetFileName(tinPath));
        numNodes = tinDataset.GetNodeCount(); // numNodes = 11
      }
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.5 or higher.
    See Also