Return Value
Returns true if the method succeeds and false otherwise.
| Exception | Description |
|---|---|
| ArcGIS.Core.CalledOnWrongThreadException | This method must be called on the MCT. Use QueuedTask.Run. |
{
// 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);
}
{
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
}
}
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)