

Public NotInheritable Class TinEdge Inherits TinElement Implements System.IDisposable
public sealed class TinEdge : TinElement, System.IDisposable
{
using (ArcGIS.Core.Data.Analyst3D.TinNode nodeFromIndex = tinDataset.GetNodeByIndex(23))
{
//Do something with the node
}
using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeFromIndex = tinDataset.GetEdgeByIndex(45))
{
//Do something with the edge
}
using (ArcGIS.Core.Data.Analyst3D.TinTriangle triangleFromIndex = tinDataset.GetTriangleByIndex(22))
{
//Do something with the triangle
}
}
{
// search all single edges that intersect the data extent
using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinDataset.SearchEdges(null))
{
while (edgeCursor.MoveNext())
{
using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeCurrent = edgeCursor.Current)
{
// do something with the edge
}
}
}
// search within an extent
ArcGIS.Core.Data.Analyst3D.TinEdgeFilter edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
edgeFilter.FilterEnvelope = envelope;
using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinDataset.SearchEdges(edgeFilter))
{
while (edgeCursor.MoveNext())
{
using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeCurrent = edgeCursor.Current)
{
// do something with the edge
}
}
}
// search all "inside" edges
edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
edgeFilter.FilterType = ArcGIS.Core.Data.Analyst3D.TinFilterType.InsideDataArea;
using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinDataset.SearchEdges(edgeFilter))
{
while (edgeCursor.MoveNext())
{
using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeCurrent = edgeCursor.Current)
{
// do something with the edge
}
}
}
// search for hard edges
edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
edgeFilter.FilterByEdgeType = true;
edgeFilter.EdgeType = ArcGIS.Core.Data.Analyst3D.TinEdgeType.HardEdge;
using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinDataset.SearchEdges(edgeFilter))
{
while (edgeCursor.MoveNext())
{
using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeCurrent = edgeCursor.Current)
{
// do something with the edge
}
}
}
}
{
// nodes of the edge
var nodes = edge.Nodes;
// edge geometry
polyline = edge.ToPolyline();
// edge length
var length = edge.Length;
// is the edge "inside"
var isInsideEdge = edge.IsInsideDataArea;
// edge type - regular/hard/soft
var edgeType = edge.EdgeType;
// get next (clockwise) edge in the triangle
var nextEdge = edge.GetNextEdgeInTriangle();
// get previous (anti-clockwise) edge in the triangle
var prevEdge = edge.GetPreviousEdgeInTriangle();
// get opposite edge
var oppEdge = edge.GetNeighbor();
// get left triangle
var leftTriangle = edge.LeftTriangle;
// get right triangle
var rightTriangle = edge.RightTriangle;
}
{
// Note: Needs QueuedTask to run
{
// search all "inside" nodes
using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(null))
{
while (nodeCursor.MoveNext())
{
using ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current;
//Use the node
}
}
// search "inside" nodes with an extent
ArcGIS.Core.Data.Analyst3D.TinNodeFilter nodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
nodeFilter.FilterEnvelope = envelope;
using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(nodeFilter))
{
while (nodeCursor.MoveNext())
{
using ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current;
//use the node
}
}
// search for super nodes only
var supernodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
supernodeFilter.FilterEnvelope = tinLayer.GetTinDataset().GetSuperNodeExtent();
supernodeFilter.DataElementsOnly = false;
supernodeFilter.SuperNode = true;
using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(nodeFilter))
{
while (nodeCursor.MoveNext())
{
using ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current;
//Use the node
}
}
// search all edges within an extent
// this could include outside or edges attached to super nodes depending upon the extent
ArcGIS.Core.Data.Analyst3D.TinEdgeFilter edgeFilterAll = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
edgeFilterAll.FilterEnvelope = envelope;
edgeFilterAll.DataElementsOnly = false;
using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinLayer.SearchEdges(edgeFilterAll))
{
while (edgeCursor.MoveNext())
{
using ArcGIS.Core.Data.Analyst3D.TinEdge edge = edgeCursor.Current;
//Use the edge
}
}
// search for hard edges in the TIN
var edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
edgeFilter.FilterByEdgeType = true;
edgeFilter.EdgeType = ArcGIS.Core.Data.Analyst3D.TinEdgeType.HardEdge;
using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinLayer.SearchEdges(edgeFilter))
{
while (edgeCursor.MoveNext())
{
using ArcGIS.Core.Data.Analyst3D.TinEdge edge = edgeCursor.Current;
//Use the edge
}
}
// search for "inside" triangles in an extent
ArcGIS.Core.Data.Analyst3D.TinTriangleFilter triangleFilter = new ArcGIS.Core.Data.Analyst3D.TinTriangleFilter();
triangleFilter.FilterEnvelope = envelope;
triangleFilter.DataElementsOnly = true;
using (ArcGIS.Core.Data.Analyst3D.TinTriangleCursor triangleCursor = tinLayer.SearchTriangles(triangleFilter))
{
while (triangleCursor.MoveNext())
{
using ArcGIS.Core.Data.Analyst3D.TinTriangle triangle = triangleCursor.Current;
//use the triangle
}
}
}
}
System.Object
ArcGIS.Core.CoreObjectsBase
ArcGIS.Core.Data.Analyst3D.TinElement
ArcGIS.Core.Data.Analyst3D.TinEdge
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)