ArcObjects Library Reference  

SceneNavigateAndBookmarks

About the Navigating around the SceneControl Sample

[C#]

SceneNavigateAndBookmarks.cs

using System;
using System.Windows.Forms;
using ESRI.ArcGIS.Analyst3D;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS;

namespace SceneNavigateAndBookmarks
{
	/// <summary>
	/// Summary description for Form1.
	/// </summary>
	public class SceneNavigateAndBookmarks : System.Windows.Forms.Form
	{
		public System.Windows.Forms.TextBox txtNewBookmarkName;
		public System.Windows.Forms.Button cmdCaptureBookmark;
		public System.Windows.Forms.ListBox lstBookmarks;
		public System.Windows.Forms.CheckBox chkRotate;
		public System.Windows.Forms.CheckBox chkNavigate;
		public System.Windows.Forms.Label Label5;
		public System.Windows.Forms.Label Label4;
		public System.Windows.Forms.Label Label3;
		public System.Windows.Forms.Label Label2;
		public System.Windows.Forms.Label Line3;
		public System.Windows.Forms.Label Line2;
		public System.Windows.Forms.Label Line1;
		public System.Windows.Forms.Label Label1;
		public System.Windows.Forms.Button cmdBrowse;
		public System.Windows.Forms.TextBox txtFileName;
		public System.Windows.Forms.Button cmdLoad;
		private System.Windows.Forms.OpenFileDialog openFileDialog1;
		private IArray m_Bookmarks = new ArrayClass();
		private ESRI.ArcGIS.Controls.AxSceneControl axSceneControl1;
		private ESRI.ArcGIS.Controls.AxLicenseControl axLicenseControl1;
		/// <summary>
		/// Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		public SceneNavigateAndBookmarks()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			//
			// TODO: Add any constructor code after InitializeComponent call
			//
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
            //Release COM objects
            ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown();

			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(SceneNavigateAndBookmarks));
			this.txtNewBookmarkName = new System.Windows.Forms.TextBox();
			this.cmdCaptureBookmark = new System.Windows.Forms.Button();
			this.lstBookmarks = new System.Windows.Forms.ListBox();
			this.chkRotate = new System.Windows.Forms.CheckBox();
			this.chkNavigate = new System.Windows.Forms.CheckBox();
			this.Label5 = new System.Windows.Forms.Label();
			this.Label4 = new System.Windows.Forms.Label();
			this.Label3 = new System.Windows.Forms.Label();
			this.Label2 = new System.Windows.Forms.Label();
			this.Line3 = new System.Windows.Forms.Label();
			this.Line2 = new System.Windows.Forms.Label();
			this.Line1 = new System.Windows.Forms.Label();
			this.Label1 = new System.Windows.Forms.Label();
			this.cmdBrowse = new System.Windows.Forms.Button();
			this.txtFileName = new System.Windows.Forms.TextBox();
			this.cmdLoad = new System.Windows.Forms.Button();
			this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
			this.axSceneControl1 = new ESRI.ArcGIS.Controls.AxSceneControl();
			this.axLicenseControl1 = new ESRI.ArcGIS.Controls.AxLicenseControl();
			((System.ComponentModel.ISupportInitialize)(this.axSceneControl1)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.axLicenseControl1)).BeginInit();
			this.SuspendLayout();
			// 
			// txtNewBookmarkName
			// 
			this.txtNewBookmarkName.AcceptsReturn = true;
			this.txtNewBookmarkName.AutoSize = false;
			this.txtNewBookmarkName.BackColor = System.Drawing.SystemColors.Window;
			this.txtNewBookmarkName.Cursor = System.Windows.Forms.Cursors.IBeam;
			this.txtNewBookmarkName.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.txtNewBookmarkName.ForeColor = System.Drawing.SystemColors.WindowText;
			this.txtNewBookmarkName.Location = new System.Drawing.Point(152, 480);
			this.txtNewBookmarkName.MaxLength = 0;
			this.txtNewBookmarkName.Name = "txtNewBookmarkName";
			this.txtNewBookmarkName.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.txtNewBookmarkName.Size = new System.Drawing.Size(121, 27);
			this.txtNewBookmarkName.TabIndex = 16;
			this.txtNewBookmarkName.Text = "New Bookmark";
			// 
			// cmdCaptureBookmark
			// 
			this.cmdCaptureBookmark.BackColor = System.Drawing.SystemColors.Control;
			this.cmdCaptureBookmark.Cursor = System.Windows.Forms.Cursors.Default;
			this.cmdCaptureBookmark.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.cmdCaptureBookmark.ForeColor = System.Drawing.SystemColors.ControlText;
			this.cmdCaptureBookmark.Location = new System.Drawing.Point(8, 480);
			this.cmdCaptureBookmark.Name = "cmdCaptureBookmark";
			this.cmdCaptureBookmark.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.cmdCaptureBookmark.Size = new System.Drawing.Size(137, 25);
			this.cmdCaptureBookmark.TabIndex = 15;
			this.cmdCaptureBookmark.Text = "Capture Bookmark";
			this.cmdCaptureBookmark.Click += new System.EventHandler(this.cmdCaptureBookmark_Click);
			// 
			// lstBookmarks
			// 
			this.lstBookmarks.BackColor = System.Drawing.SystemColors.Window;
			this.lstBookmarks.Cursor = System.Windows.Forms.Cursors.Default;
			this.lstBookmarks.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.lstBookmarks.ForeColor = System.Drawing.SystemColors.WindowText;
			this.lstBookmarks.ItemHeight = 14;
			this.lstBookmarks.Location = new System.Drawing.Point(8, 392);
			this.lstBookmarks.Name = "lstBookmarks";
			this.lstBookmarks.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.lstBookmarks.Size = new System.Drawing.Size(265, 74);
			this.lstBookmarks.TabIndex = 14;
			this.lstBookmarks.SelectedIndexChanged += new System.EventHandler(this.lstBookmarks_SelectedIndexChanged);
			// 
			// chkRotate
			// 
			this.chkRotate.BackColor = System.Drawing.SystemColors.Control;
			this.chkRotate.Cursor = System.Windows.Forms.Cursors.Default;
			this.chkRotate.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.chkRotate.ForeColor = System.Drawing.SystemColors.ControlText;
			this.chkRotate.Location = new System.Drawing.Point(296, 464);
			this.chkRotate.Name = "chkRotate";
			this.chkRotate.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.chkRotate.Size = new System.Drawing.Size(121, 25);
			this.chkRotate.TabIndex = 18;
			this.chkRotate.Text = "Rotate Gesture";
			this.chkRotate.CheckedChanged += new System.EventHandler(this.chkRotate_CheckedChanged);
			// 
			// chkNavigate
			// 
			this.chkNavigate.BackColor = System.Drawing.SystemColors.Control;
			this.chkNavigate.Cursor = System.Windows.Forms.Cursors.Default;
			this.chkNavigate.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.chkNavigate.ForeColor = System.Drawing.SystemColors.ControlText;
			this.chkNavigate.Location = new System.Drawing.Point(296, 384);
			this.chkNavigate.Name = "chkNavigate";
			this.chkNavigate.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.chkNavigate.Size = new System.Drawing.Size(113, 25);
			this.chkNavigate.TabIndex = 17;
			this.chkNavigate.Text = "Navigate Mode";
			this.chkNavigate.CheckedChanged += new System.EventHandler(this.chkNavigate_CheckedChanged);
			// 
			// Label5
			// 
			this.Label5.BackColor = System.Drawing.SystemColors.Control;
			this.Label5.Cursor = System.Windows.Forms.Cursors.Default;
			this.Label5.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.Label5.ForeColor = System.Drawing.SystemColors.ControlText;
			this.Label5.Location = new System.Drawing.Point(424, 448);
			this.Label5.Name = "Label5";
			this.Label5.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.Label5.Size = new System.Drawing.Size(169, 65);
			this.Label5.TabIndex = 22;
			this.Label5.Text = "Hold down left mouse button, move mouse left (or right) and keep mouse moving whi" +
				"le releasing the left button. Press ESC to stop rotation.";
			// 
			// Label4
			// 
			this.Label4.BackColor = System.Drawing.SystemColors.Control;
			this.Label4.Cursor = System.Windows.Forms.Cursors.Default;
			this.Label4.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.Label4.ForeColor = System.Drawing.SystemColors.ControlText;
			this.Label4.Location = new System.Drawing.Point(424, 392);
			this.Label4.Name = "Label4";
			this.Label4.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.Label4.Size = new System.Drawing.Size(169, 17);
			this.Label4.TabIndex = 21;
			this.Label4.Text = "Middle mouse to pan";
			// 
			// Label3
			// 
			this.Label3.BackColor = System.Drawing.SystemColors.Control;
			this.Label3.Cursor = System.Windows.Forms.Cursors.Default;
			this.Label3.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.Label3.ForeColor = System.Drawing.SystemColors.ControlText;
			this.Label3.Location = new System.Drawing.Point(424, 408);
			this.Label3.Name = "Label3";
			this.Label3.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.Label3.Size = new System.Drawing.Size(169, 17);
			this.Label3.TabIndex = 20;
			this.Label3.Text = "Right mouse to zoom in and out";
			// 
			// Label2
			// 
			this.Label2.BackColor = System.Drawing.SystemColors.Control;
			this.Label2.Cursor = System.Windows.Forms.Cursors.Default;
			this.Label2.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.Label2.ForeColor = System.Drawing.SystemColors.ControlText;
			this.Label2.Location = new System.Drawing.Point(424, 376);
			this.Label2.Name = "Label2";
			this.Label2.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.Label2.Size = new System.Drawing.Size(153, 17);
			this.Label2.TabIndex = 19;
			this.Label2.Text = "Left mouse to rotate";
			// 
			// Line3
			// 
			this.Line3.BackColor = System.Drawing.SystemColors.WindowText;
			this.Line3.Location = new System.Drawing.Point(8, 360);
			this.Line3.Name = "Line3";
			this.Line3.Size = new System.Drawing.Size(584, 1);
			this.Line3.TabIndex = 23;
			// 
			// Line2
			// 
			this.Line2.BackColor = System.Drawing.SystemColors.WindowText;
			this.Line2.Location = new System.Drawing.Point(288, 440);
			this.Line2.Name = "Line2";
			this.Line2.Size = new System.Drawing.Size(304, 1);
			this.Line2.TabIndex = 24;
			// 
			// Line1
			// 
			this.Line1.BackColor = System.Drawing.SystemColors.WindowText;
			this.Line1.Location = new System.Drawing.Point(288, 360);
			this.Line1.Name = "Line1";
			this.Line1.Size = new System.Drawing.Size(1, 152);
			this.Line1.TabIndex = 25;
			// 
			// Label1
			// 
			this.Label1.BackColor = System.Drawing.SystemColors.Control;
			this.Label1.Cursor = System.Windows.Forms.Cursors.Default;
			this.Label1.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.Label1.ForeColor = System.Drawing.SystemColors.ControlText;
			this.Label1.Location = new System.Drawing.Point(8, 368);
			this.Label1.Name = "Label1";
			this.Label1.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.Label1.Size = new System.Drawing.Size(265, 17);
			this.Label1.TabIndex = 26;
			this.Label1.Text = "Bookmarks: Click on name below";
			// 
			// cmdBrowse
			// 
			this.cmdBrowse.BackColor = System.Drawing.SystemColors.Control;
			this.cmdBrowse.Cursor = System.Windows.Forms.Cursors.Default;
			this.cmdBrowse.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.cmdBrowse.ForeColor = System.Drawing.SystemColors.ControlText;
			this.cmdBrowse.Location = new System.Drawing.Point(528, 328);
			this.cmdBrowse.Name = "cmdBrowse";
			this.cmdBrowse.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.cmdBrowse.Size = new System.Drawing.Size(65, 25);
			this.cmdBrowse.TabIndex = 29;
			this.cmdBrowse.Text = "Browse...";
			this.cmdBrowse.Click += new System.EventHandler(this.cmdBrowse_Click);
			// 
			// txtFileName
			// 
			this.txtFileName.AcceptsReturn = true;
			this.txtFileName.AutoSize = false;
			this.txtFileName.BackColor = System.Drawing.SystemColors.Window;
			this.txtFileName.Cursor = System.Windows.Forms.Cursors.IBeam;
			this.txtFileName.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.txtFileName.ForeColor = System.Drawing.SystemColors.WindowText;
			this.txtFileName.Location = new System.Drawing.Point(88, 328);
			this.txtFileName.MaxLength = 0;
			this.txtFileName.Name = "txtFileName";
			this.txtFileName.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.txtFileName.Size = new System.Drawing.Size(433, 25);
			this.txtFileName.TabIndex = 28;
			this.txtFileName.Text = "Enter a path to a scene document to load into the SceneControl";
			// 
			// cmdLoad
			// 
			this.cmdLoad.BackColor = System.Drawing.SystemColors.Control;
			this.cmdLoad.Cursor = System.Windows.Forms.Cursors.Default;
			this.cmdLoad.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.cmdLoad.ForeColor = System.Drawing.SystemColors.ControlText;
			this.cmdLoad.Location = new System.Drawing.Point(8, 328);
			this.cmdLoad.Name = "cmdLoad";
			this.cmdLoad.RightToLeft = System.Windows.Forms.RightToLeft.No;
			this.cmdLoad.Size = new System.Drawing.Size(73, 25);
			this.cmdLoad.TabIndex = 27;
			this.cmdLoad.Text = "Load";
			this.cmdLoad.Click += new System.EventHandler(this.cmdLoad_Click);
			// 
			// axSceneControl1
			// 
			this.axSceneControl1.Location = new System.Drawing.Point(8, 8);
			this.axSceneControl1.Name = "axSceneControl1";
			this.axSceneControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSceneControl1.OcxState")));
			this.axSceneControl1.Size = new System.Drawing.Size(584, 312);
			this.axSceneControl1.TabIndex = 30;
			// 
			// axLicenseControl1
			// 
			this.axLicenseControl1.Enabled = true;
			this.axLicenseControl1.Location = new System.Drawing.Point(376, 24);
			this.axLicenseControl1.Name = "axLicenseControl1";
			this.axLicenseControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axLicenseControl1.OcxState")));
			this.axLicenseControl1.Size = new System.Drawing.Size(200, 50);
			this.axLicenseControl1.TabIndex = 31;
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(600, 526);
			this.Controls.Add(this.axLicenseControl1);
			this.Controls.Add(this.axSceneControl1);
			this.Controls.Add(this.cmdBrowse);
			this.Controls.Add(this.txtFileName);
			this.Controls.Add(this.cmdLoad);
			this.Controls.Add(this.Label1);
			this.Controls.Add(this.Line3);
			this.Controls.Add(this.Line2);
			this.Controls.Add(this.Line1);
			this.Controls.Add(this.chkRotate);
			this.Controls.Add(this.chkNavigate);
			this.Controls.Add(this.Label5);
			this.Controls.Add(this.Label4);
			this.Controls.Add(this.Label3);
			this.Controls.Add(this.Label2);
			this.Controls.Add(this.txtNewBookmarkName);
			this.Controls.Add(this.cmdCaptureBookmark);
			this.Controls.Add(this.lstBookmarks);
			this.Name = "Form1";
			this.Text = "Form1";
			this.Load += new System.EventHandler(this.Form1_Load);
			((System.ComponentModel.ISupportInitialize)(this.axSceneControl1)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.axLicenseControl1)).EndInit();
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// The main entry point for the application.
		/// </summary>
        [STAThread]
        static void Main()
        {
            if (!RuntimeManager.Bind(ProductCode.Engine))
            {
                if (!RuntimeManager.Bind(ProductCode.Desktop))
                {
                    MessageBox.Show("Unable to bind to ArcGIS runtime. Application will be shut down.");
                    return;
                }
            }
            Application.Run(new SceneNavigateAndBookmarks());
        }

		private void Form1_Load(object sender, System.EventArgs e)
		{
			chkNavigate.Checked = axSceneControl1.Navigate;
		}

		private void cmdLoad_Click(object sender, System.EventArgs e)
		{
			// Load the specified document
			if (axSceneControl1.CheckSxFile(txtFileName.Text) == true) 
			{
				axSceneControl1.LoadSxFile(txtFileName.Text);
			}
			else 
			{
				System.Windows.Forms.MessageBox.Show("This document cannot be loaded!");
				return;
			}
			UpdateBookmarks();
		}

		private void cmdBrowse_Click(object sender, System.EventArgs e)
		{
			//Open a file dialog for selecting map documents
			openFileDialog1.Title = "Scene Documents";
			openFileDialog1.DefaultExt = ".sxd";
			openFileDialog1.Filter = "Scene Documents (*.sxd)|*.sxd|Scene Templates (*.sxt)|*.sxt";
			openFileDialog1.ShowDialog();

			txtFileName.Text = openFileDialog1.FileName;

			//Try and load the filename
			cmdLoad_Click(cmdLoad, new System.EventArgs());
		}

		private void cmdCaptureBookmark_Click(object sender, System.EventArgs e)
		{
			IBookmark3D bookmark3d = new Bookmark3DClass(); 
			bookmark3d.Name = txtNewBookmarkName.Text;
			bookmark3d.Capture(axSceneControl1.Camera);
			ISceneBookmarks bookmarks = (ISceneBookmarks) axSceneControl1.Scene;
			bookmarks.AddBookmark(bookmark3d);

			UpdateBookmarks();
		}

		private void lstBookmarks_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			//Get a bookmark corresponding to list and apply it to the SceneViewer
			IBookmark3D bookmark = (IBookmark3D) m_Bookmarks.get_Element(lstBookmarks.SelectedIndex);
			//Switch to new bookmark location
			bookmark.Apply(axSceneControl1.SceneViewer, false, 0);
		}

		private void UpdateBookmarks()
		{
			//Get bookmarks from Scene
			ISceneBookmarks bookmarks = (ISceneBookmarks) axSceneControl1.Scene;
			m_Bookmarks = null;
			m_Bookmarks = bookmarks.Bookmarks;
			lstBookmarks.Items.Clear();
			bool haveBookmarks = false;

			IBookmark3D bookmark3d;
			if (m_Bookmarks != null)
			{
				//Add the bookmark names to the listbox in the same order as they are in the Scene Document
				for (int i = 0; i <= m_Bookmarks.Count - 1; i++)
				{
					bookmark3d = (IBookmark3D) m_Bookmarks.get_Element(i);
					lstBookmarks.Items.Add(bookmark3d.Name);
				}
				haveBookmarks = m_Bookmarks.Count != 0;
				lstBookmarks.Enabled = true;
			}

			if (haveBookmarks == false) 
			{
				//No bookmarks available
				lstBookmarks.Items.Add("<No Bookmarks Available>");
				lstBookmarks.Enabled = false;
			}
		}

		private void chkNavigate_CheckedChanged(object sender, System.EventArgs e)
		{
			//Enable navigation mode
			axSceneControl1.Navigate = (bool) chkNavigate.Checked;
		}

		private void chkRotate_CheckedChanged(object sender, System.EventArgs e)
		{
			//Enable rotate gesture if checked
			axSceneControl1.SceneViewer.GestureEnabled = chkRotate.Checked;
		}

	}
}

[Visual Basic .NET]

SceneNavigateAndBookmarks.vb

Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.SystemUI
Imports ESRI.ArcGIS.Analyst3D
Imports ESRI.ArcGIS
Public Class Form1
    Inherits System.Windows.Forms.Form

    <STAThread()> _
Shared Sub Main()
        'Load runtime 
        If Not RuntimeManager.Bind(ProductCode.Engine) Then
            If Not RuntimeManager.Bind(ProductCode.Desktop) Then
                MessageBox.Show("Unable to bind to ArcGIS runtime. Application will be shut down.")
                System.Environment.Exit(1) ' Force exit or other indication in the application
            End If
        End If
        Application.Run(New Form1())
    End Sub
#Region "Windows Form Designer generated code "
    Public Sub New()
        MyBase.New()
        'This call is required by the Windows Form Designer.
        InitializeComponent()
    End Sub
    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal Disposing As Boolean)
        'Release COM objects
        ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown()

        If Disposing Then
            If Not components Is Nothing Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(Disposing)
    End Sub
    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer
    Public WithEvents txtNewBookmarkName As System.Windows.Forms.TextBox
    Public WithEvents cmdCaptureBookmark As System.Windows.Forms.Button
    Public WithEvents cmdBrowse As System.Windows.Forms.Button
    Public WithEvents txtFileName As System.Windows.Forms.TextBox
    Public WithEvents chkRotate As System.Windows.Forms.CheckBox
    Public WithEvents chkNavigate As System.Windows.Forms.CheckBox
    Public WithEvents lstBookmarks As System.Windows.Forms.ListBox
    Public WithEvents cmdLoad As System.Windows.Forms.Button
    Public WithEvents Label5 As System.Windows.Forms.Label
    Public WithEvents Line3 As System.Windows.Forms.Label
    Public WithEvents Line2 As System.Windows.Forms.Label
    Public WithEvents Line1 As System.Windows.Forms.Label
    Public WithEvents Label4 As System.Windows.Forms.Label
    Public WithEvents Label3 As System.Windows.Forms.Label
    Public WithEvents Label2 As System.Windows.Forms.Label
    Public WithEvents Label1 As System.Windows.Forms.Label
    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.
    'Do not modify it using the code editor.
    Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
    Friend WithEvents AxSceneControl1 As ESRI.ArcGIS.Controls.AxSceneControl
    Friend WithEvents AxLicenseControl1 As ESRI.ArcGIS.Controls.AxLicenseControl
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
        Me.txtNewBookmarkName = New System.Windows.Forms.TextBox
        Me.cmdCaptureBookmark = New System.Windows.Forms.Button
        Me.cmdBrowse = New System.Windows.Forms.Button
        Me.txtFileName = New System.Windows.Forms.TextBox
        Me.chkRotate = New System.Windows.Forms.CheckBox
        Me.chkNavigate = New System.Windows.Forms.CheckBox
        Me.lstBookmarks = New System.Windows.Forms.ListBox
        Me.cmdLoad = New System.Windows.Forms.Button
        Me.Label5 = New System.Windows.Forms.Label
        Me.Line3 = New System.Windows.Forms.Label
        Me.Line2 = New System.Windows.Forms.Label
        Me.Line1 = New System.Windows.Forms.Label
        Me.Label4 = New System.Windows.Forms.Label
        Me.Label3 = New System.Windows.Forms.Label
        Me.Label2 = New System.Windows.Forms.Label
        Me.Label1 = New System.Windows.Forms.Label
        Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog
        Me.AxSceneControl1 = New ESRI.ArcGIS.Controls.AxSceneControl
        Me.AxLicenseControl1 = New ESRI.ArcGIS.Controls.AxLicenseControl
        CType(Me.AxSceneControl1, System.ComponentModel.ISupportInitialize).BeginInit()
        CType(Me.AxLicenseControl1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'txtNewBookmarkName
        '
        Me.txtNewBookmarkName.AcceptsReturn = True
        Me.txtNewBookmarkName.AutoSize = False
        Me.txtNewBookmarkName.BackColor = System.Drawing.SystemColors.Window
        Me.txtNewBookmarkName.Cursor = System.Windows.Forms.Cursors.IBeam
        Me.txtNewBookmarkName.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.txtNewBookmarkName.ForeColor = System.Drawing.SystemColors.WindowText
        Me.txtNewBookmarkName.Location = New System.Drawing.Point(152, 440)
        Me.txtNewBookmarkName.MaxLength = 0
        Me.txtNewBookmarkName.Name = "txtNewBookmarkName"
        Me.txtNewBookmarkName.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.txtNewBookmarkName.Size = New System.Drawing.Size(121, 27)
        Me.txtNewBookmarkName.TabIndex = 13
        Me.txtNewBookmarkName.Text = "New Bookmark"
        '
        'cmdCaptureBookmark
        '
        Me.cmdCaptureBookmark.BackColor = System.Drawing.SystemColors.Control
        Me.cmdCaptureBookmark.Cursor = System.Windows.Forms.Cursors.Default
        Me.cmdCaptureBookmark.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.cmdCaptureBookmark.ForeColor = System.Drawing.SystemColors.ControlText
        Me.cmdCaptureBookmark.Location = New System.Drawing.Point(8, 440)
        Me.cmdCaptureBookmark.Name = "cmdCaptureBookmark"
        Me.cmdCaptureBookmark.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.cmdCaptureBookmark.Size = New System.Drawing.Size(137, 25)
        Me.cmdCaptureBookmark.TabIndex = 12
        Me.cmdCaptureBookmark.Text = "Capture Bookmark"
        '
        'cmdBrowse
        '
        Me.cmdBrowse.BackColor = System.Drawing.SystemColors.Control
        Me.cmdBrowse.Cursor = System.Windows.Forms.Cursors.Default
        Me.cmdBrowse.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.cmdBrowse.ForeColor = System.Drawing.SystemColors.ControlText
        Me.cmdBrowse.Location = New System.Drawing.Point(528, 280)
        Me.cmdBrowse.Name = "cmdBrowse"
        Me.cmdBrowse.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.cmdBrowse.Size = New System.Drawing.Size(65, 25)
        Me.cmdBrowse.TabIndex = 7
        Me.cmdBrowse.Text = "Browse..."
        '
        'txtFileName
        '
        Me.txtFileName.AcceptsReturn = True
        Me.txtFileName.AutoSize = False
        Me.txtFileName.BackColor = System.Drawing.SystemColors.Window
        Me.txtFileName.Cursor = System.Windows.Forms.Cursors.IBeam
        Me.txtFileName.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.txtFileName.ForeColor = System.Drawing.SystemColors.WindowText
        Me.txtFileName.Location = New System.Drawing.Point(88, 280)
        Me.txtFileName.MaxLength = 0
        Me.txtFileName.Name = "txtFileName"
        Me.txtFileName.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.txtFileName.Size = New System.Drawing.Size(433, 25)
        Me.txtFileName.TabIndex = 6
        Me.txtFileName.Text = "Enter a path to a scene document to load into the SceneControl"
        '
        'chkRotate
        '
        Me.chkRotate.BackColor = System.Drawing.SystemColors.Control
        Me.chkRotate.Cursor = System.Windows.Forms.Cursors.Default
        Me.chkRotate.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.chkRotate.ForeColor = System.Drawing.SystemColors.ControlText
        Me.chkRotate.Location = New System.Drawing.Point(304, 416)
        Me.chkRotate.Name = "chkRotate"
        Me.chkRotate.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.chkRotate.Size = New System.Drawing.Size(121, 25)
        Me.chkRotate.TabIndex = 4
        Me.chkRotate.Text = "Rotate Gesture"
        '
        'chkNavigate
        '
        Me.chkNavigate.BackColor = System.Drawing.SystemColors.Control
        Me.chkNavigate.Cursor = System.Windows.Forms.Cursors.Default
        Me.chkNavigate.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.chkNavigate.ForeColor = System.Drawing.SystemColors.ControlText
        Me.chkNavigate.Location = New System.Drawing.Point(304, 336)
        Me.chkNavigate.Name = "chkNavigate"
        Me.chkNavigate.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.chkNavigate.Size = New System.Drawing.Size(113, 25)
        Me.chkNavigate.TabIndex = 3
        Me.chkNavigate.Text = "Navigate Mode"
        '
        'lstBookmarks
        '
        Me.lstBookmarks.BackColor = System.Drawing.SystemColors.Window
        Me.lstBookmarks.Cursor = System.Windows.Forms.Cursors.Default
        Me.lstBookmarks.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.lstBookmarks.ForeColor = System.Drawing.SystemColors.WindowText
        Me.lstBookmarks.ItemHeight = 14
        Me.lstBookmarks.Location = New System.Drawing.Point(8, 352)
        Me.lstBookmarks.Name = "lstBookmarks"
        Me.lstBookmarks.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.lstBookmarks.Size = New System.Drawing.Size(265, 74)
        Me.lstBookmarks.TabIndex = 2
        '
        'cmdLoad
        '
        Me.cmdLoad.BackColor = System.Drawing.SystemColors.Control
        Me.cmdLoad.Cursor = System.Windows.Forms.Cursors.Default
        Me.cmdLoad.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.cmdLoad.ForeColor = System.Drawing.SystemColors.ControlText
        Me.cmdLoad.Location = New System.Drawing.Point(8, 280)
        Me.cmdLoad.Name = "cmdLoad"
        Me.cmdLoad.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.cmdLoad.Size = New System.Drawing.Size(73, 25)
        Me.cmdLoad.TabIndex = 1
        Me.cmdLoad.Text = "Load"
        '
        'Label5
        '
        Me.Label5.BackColor = System.Drawing.SystemColors.Control
        Me.Label5.Cursor = System.Windows.Forms.Cursors.Default
        Me.Label5.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label5.ForeColor = System.Drawing.SystemColors.ControlText
        Me.Label5.Location = New System.Drawing.Point(432, 400)
        Me.Label5.Name = "Label5"
        Me.Label5.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Label5.Size = New System.Drawing.Size(169, 65)
        Me.Label5.TabIndex = 11
        Me.Label5.Text = "Hold down left mouse button, move mouse left (or right) and keep mouse moving whi" & _
        "le releasing the left button. Press ESC to stop rotation."
        '
        'Line3
        '
        Me.Line3.BackColor = System.Drawing.SystemColors.WindowText
        Me.Line3.Location = New System.Drawing.Point(8, 312)
        Me.Line3.Name = "Line3"
        Me.Line3.Size = New System.Drawing.Size(584, 1)
        Me.Line3.TabIndex = 14
        '
        'Line2
        '
        Me.Line2.BackColor = System.Drawing.SystemColors.WindowText
        Me.Line2.Location = New System.Drawing.Point(288, 392)
        Me.Line2.Name = "Line2"
        Me.Line2.Size = New System.Drawing.Size(304, 1)
        Me.Line2.TabIndex = 15
        '
        'Line1
        '
        Me.Line1.BackColor = System.Drawing.SystemColors.WindowText
        Me.Line1.Location = New System.Drawing.Point(288, 312)
        Me.Line1.Name = "Line1"
        Me.Line1.Size = New System.Drawing.Size(1, 152)
        Me.Line1.TabIndex = 16
        '
        'Label4
        '
        Me.Label4.BackColor = System.Drawing.SystemColors.Control
        Me.Label4.Cursor = System.Windows.Forms.Cursors.Default
        Me.Label4.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label4.ForeColor = System.Drawing.SystemColors.ControlText
        Me.Label4.Location = New System.Drawing.Point(432, 344)
        Me.Label4.Name = "Label4"
        Me.Label4.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Label4.Size = New System.Drawing.Size(169, 17)
        Me.Label4.TabIndex = 10
        Me.Label4.Text = "Middle mouse to pan"
        '
        'Label3
        '
        Me.Label3.BackColor = System.Drawing.SystemColors.Control
        Me.Label3.Cursor = System.Windows.Forms.Cursors.Default
        Me.Label3.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label3.ForeColor = System.Drawing.SystemColors.ControlText
        Me.Label3.Location = New System.Drawing.Point(432, 360)
        Me.Label3.Name = "Label3"
        Me.Label3.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Label3.Size = New System.Drawing.Size(169, 17)
        Me.Label3.TabIndex = 9
        Me.Label3.Text = "Right mouse to zoom in and out"
        '
        'Label2
        '
        Me.Label2.BackColor = System.Drawing.SystemColors.Control
        Me.Label2.Cursor = System.Windows.Forms.Cursors.Default
        Me.Label2.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label2.ForeColor = System.Drawing.SystemColors.ControlText
        Me.Label2.Location = New System.Drawing.Point(432, 328)
        Me.Label2.Name = "Label2"
        Me.Label2.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Label2.Size = New System.Drawing.Size(153, 17)
        Me.Label2.TabIndex = 8
        Me.Label2.Text = "Left mouse to rotate"
        '
        'Label1
        '
        Me.Label1.BackColor = System.Drawing.SystemColors.Control
        Me.Label1.Cursor = System.Windows.Forms.Cursors.Default
        Me.Label1.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label1.ForeColor = System.Drawing.SystemColors.ControlText
        Me.Label1.Location = New System.Drawing.Point(8, 328)
        Me.Label1.Name = "Label1"
        Me.Label1.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Label1.Size = New System.Drawing.Size(265, 17)
        Me.Label1.TabIndex = 5
        Me.Label1.Text = "Bookmarks: Click on name below"
        '
        'AxSceneControl1
        '
        Me.AxSceneControl1.Location = New System.Drawing.Point(8, 8)
        Me.AxSceneControl1.Name = "AxSceneControl1"
        Me.AxSceneControl1.OcxState = CType(resources.GetObject("AxSceneControl1.OcxState"), System.Windows.Forms.AxHost.State)
        Me.AxSceneControl1.Size = New System.Drawing.Size(592, 264)
        Me.AxSceneControl1.TabIndex = 17
        '
        'AxLicenseControl1
        '
        Me.AxLicenseControl1.Enabled = True
        Me.AxLicenseControl1.Location = New System.Drawing.Point(384, 24)
        Me.AxLicenseControl1.Name = "AxLicenseControl1"
        Me.AxLicenseControl1.OcxState = CType(resources.GetObject("AxLicenseControl1.OcxState"), System.Windows.Forms.AxHost.State)
        Me.AxLicenseControl1.Size = New System.Drawing.Size(200, 50)
        Me.AxLicenseControl1.TabIndex = 18
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.BackColor = System.Drawing.SystemColors.Control
        Me.ClientSize = New System.Drawing.Size(606, 476)
        Me.Controls.Add(Me.AxLicenseControl1)
        Me.Controls.Add(Me.AxSceneControl1)
        Me.Controls.Add(Me.txtNewBookmarkName)
        Me.Controls.Add(Me.cmdCaptureBookmark)
        Me.Controls.Add(Me.cmdBrowse)
        Me.Controls.Add(Me.txtFileName)
        Me.Controls.Add(Me.chkRotate)
        Me.Controls.Add(Me.chkNavigate)
        Me.Controls.Add(Me.lstBookmarks)
        Me.Controls.Add(Me.cmdLoad)
        Me.Controls.Add(Me.Label5)
        Me.Controls.Add(Me.Line3)
        Me.Controls.Add(Me.Line2)
        Me.Controls.Add(Me.Line1)
        Me.Controls.Add(Me.Label4)
        Me.Controls.Add(Me.Label3)
        Me.Controls.Add(Me.Label2)
        Me.Controls.Add(Me.Label1)
        Me.Cursor = System.Windows.Forms.Cursors.Default
        Me.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Location = New System.Drawing.Point(4, 30)
        Me.Name = "Form1"
        Me.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Text = "Form1"
        CType(Me.AxSceneControl1, System.ComponentModel.ISupportInitialize).EndInit()
        CType(Me.AxLicenseControl1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub
#End Region

    'Hold an array of the Scene Bookmarks
    Dim m_pBookmarks As IArray

    Private Sub cmdBrowse_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdBrowse.Click

        OpenFileDialog1.Title = "Scene Documents"
        OpenFileDialog1.DefaultExt = ".sxd"
        OpenFileDialog1.Filter = "Scene Documents (*.sxd)|*.sxd|Scene Templates (*.sxt)|*.sxt"
        OpenFileDialog1.ShowDialog()
        txtFileName.Text = OpenFileDialog1.FileName

        'Try and load the filename
        cmdLoad_Click(cmdLoad, New System.EventArgs)

    End Sub

    Private Sub cmdCaptureBookmark_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdCaptureBookmark.Click

        Dim pBookmark3d As IBookmark3D
        pBookmark3d = New Bookmark3DClass

        pBookmark3d.Name = txtNewBookmarkName.Text
        pBookmark3d.Capture(AxSceneControl1.Camera)
        Dim pBookmarks As ISceneBookmarks
        pBookmarks = AxSceneControl1.Scene
        pBookmarks.AddBookmark(pBookmark3d)

        UpdateBookmarks()

    End Sub

    Private Sub cmdLoad_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdLoad.Click
        On Error GoTo errorHandler

        AxSceneControl1.LoadSxFile(txtFileName.Text)
        UpdateBookmarks()

        Exit Sub
errorHandler:
        MsgBox("Error occurred trying to load Scene Document: " & vbCrLf & Err.Description, MsgBoxStyle.Exclamation)
    End Sub

    Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

        chkNavigate.CheckState = AxSceneControl1.Navigate

    End Sub

    Private Sub lstBookmarks_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles lstBookmarks.SelectedIndexChanged

        'Get a bookmark corresponding to list and apply it to the SceneViewer
        Dim pBookmark As IBookmark3D
        pBookmark = m_pBookmarks.Element(lstBookmarks.SelectedIndex)

        'Switch to new bookmark location
        pBookmark.Apply(AxSceneControl1.SceneViewer, False, 0)

    End Sub

    Private Sub UpdateBookmarks()

        'Get bookmarks from Scene
        Dim pBookmarks As ISceneBookmarks
        pBookmarks = AxSceneControl1.Scene

        m_pBookmarks = Nothing
        m_pBookmarks = pBookmarks.Bookmarks
        lstBookmarks.Items.Clear()
        Dim haveBookmarks As Boolean
        haveBookmarks = False

        Dim pBookmark3d As IBookmark3D
        Dim i As Integer
        If (Not m_pBookmarks Is Nothing) Then
            'Add the bookmark names to the listbox in the same order as they are in the Scene Document
            For i = 0 To m_pBookmarks.Count - 1
                pBookmark3d = m_pBookmarks.Element(i)
                lstBookmarks.Items.Add(pBookmark3d.Name)
            Next
            haveBookmarks = m_pBookmarks.Count <> 0
            lstBookmarks.Enabled = True
        End If

        If (Not haveBookmarks) Then
            'No bookmarks available
            lstBookmarks.Items.Add("<No Bookmarks Available>")
            lstBookmarks.Enabled = False
        End If

    End Sub

    Private Sub chkNavigate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkNavigate.Click

        'Enable navigation mode
        AxSceneControl1.Navigate = chkNavigate.CheckState

    End Sub

    Private Sub chkRotate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkRotate.Click

        'Enable rotate gesture if checked
        AxSceneControl1.SceneViewer.GestureEnabled = chkRotate.CheckState

    End Sub

End Class