About the Creating a toolbar of globe tools Sample
[C#]
PolylineGeometry.cs
using ESRI.ArcGIS.Geometry; using System; namespace GlobeGraphicsToolbar { public class PolylineGeometry { private IGeometry _geometry; public PolylineGeometry(ISpatialReference spatialReference) { _geometry = GetGeometry(spatialReference); } public PolylineGeometry(IGeometry baseGeometry) { _geometry = GetGeometry(baseGeometry); } private IGeometry GetGeometry(ISpatialReference spatialReference) { IGeometry geometry; IPolyline polyline = new PolylineClass(); polyline.SpatialReference = spatialReference; geometry = polyline as IGeometry; MakeZAware(geometry); return geometry; } private IGeometry GetGeometry(IGeometry baseGeometry) { IGeometry geometry; IPolyline polyline = new PolylineClass(); polyline.SpatialReference = baseGeometry.SpatialReference; geometry = polyline as IGeometry; IPointCollection targetPointCollection = geometry as IPointCollection; IPointCollection basePointCollection = baseGeometry as IPointCollection; object missing = Type.Missing; for (int i = 0; i < basePointCollection.PointCount; i++) { targetPointCollection.AddPoint(basePointCollection.get_Point(i), ref missing, ref missing); } MakeZAware(geometry); return geometry; } private void MakeZAware(IGeometry geometry) { IZAware zAware = geometry as IZAware; zAware.ZAware = true; } public void AddPoint(IPoint point) { IPointCollection pointCollection = _geometry as IPointCollection; object missing = Type.Missing; pointCollection.AddPoint(point, ref missing, ref missing); } public IGeometry Geometry { get { return _geometry; } } public int PointCount { get { int pointCount; IPointCollection pointCollection = _geometry as IPointCollection; pointCount = pointCollection.PointCount; return pointCount; } } } }
[Visual Basic .NET]
PolylineGeometry.vb
Imports Microsoft.VisualBasic Imports ESRI.ArcGIS.Geometry Imports System Namespace GlobeGraphicsToolbar Public Class PolylineGeometry Private _geometry As IGeometry Public Sub New(ByVal spatialReference As ISpatialReference) _geometry = GetGeometry(spatialReference) End Sub Public Sub New(ByVal baseGeometry As IGeometry) _geometry = GetGeometry(baseGeometry) End Sub Private Function GetGeometry(ByVal spatialReference As ISpatialReference) As IGeometry Dim geometry As IGeometry Dim polyline As IPolyline = New PolylineClass() polyline.SpatialReference = spatialReference geometry = TryCast(polyline, IGeometry) MakeZAware(geometry) Return geometry End Function Private Function GetGeometry(ByVal baseGeometry As IGeometry) As IGeometry Dim geometry As IGeometry Dim polyline As IPolyline = New PolylineClass() polyline.SpatialReference = baseGeometry.SpatialReference geometry = TryCast(polyline, IGeometry) Dim targetPointCollection As IPointCollection = TryCast(geometry, IPointCollection) Dim basePointCollection As IPointCollection = TryCast(baseGeometry, IPointCollection) Dim missing As Object = Type.Missing For i As Integer = 0 To basePointCollection.PointCount - 1 targetPointCollection.AddPoint(basePointCollection.Point(i), missing, missing) Next i MakeZAware(geometry) Return geometry End Function Private Sub MakeZAware(ByVal geometry As IGeometry) Dim zAware As IZAware = TryCast(geometry, IZAware) zAware.ZAware = True End Sub Public Sub AddPoint(ByVal point As IPoint) Dim pointCollection As IPointCollection = TryCast(_geometry, IPointCollection) Dim missing As Object = Type.Missing pointCollection.AddPoint(point, missing, missing) End Sub Public ReadOnly Property Geometry() As IGeometry Get Return _geometry End Get End Property Public ReadOnly Property PointCount() As Integer Get Dim numPoints As Integer Dim pointCollection As IPointCollection = TryCast(_geometry, IPointCollection) numPoints = pointCollection.PointCount Return numPoints End Get End Property End Class End Namespace