CADView.cs
// Copyright 2012 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // using System; using System.Windows.Forms; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.DataSourcesFile; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS; namespace CADView { /// <summary> /// Summary description for Form1. /// </summary> public class CADView : System.Windows.Forms.Form { public System.Windows.Forms.Button CmdFullExtent; public System.Windows.Forms.Label Label2; public System.Windows.Forms.Label Label1; private ESRI.ArcGIS.Controls.AxMapControl axMapControl1; private ESRI.ArcGIS.Controls.AxLicenseControl axLicenseControl1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public CADView() { // // 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(CADView)); this.CmdFullExtent = new System.Windows.Forms.Button(); this.Label2 = new System.Windows.Forms.Label(); this.Label1 = new System.Windows.Forms.Label(); this.axMapControl1 = new ESRI.ArcGIS.Controls.AxMapControl(); this.axLicenseControl1 = new ESRI.ArcGIS.Controls.AxLicenseControl(); ((System.ComponentModel.ISupportInitialize)(this.axMapControl1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.axLicenseControl1)).BeginInit(); this.SuspendLayout(); // // CmdFullExtent // this.CmdFullExtent.BackColor = System.Drawing.SystemColors.Control; this.CmdFullExtent.Cursor = System.Windows.Forms.Cursors.Default; this.CmdFullExtent.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.CmdFullExtent.ForeColor = System.Drawing.SystemColors.ControlText; this.CmdFullExtent.Location = new System.Drawing.Point(8, 328); this.CmdFullExtent.Name = "CmdFullExtent"; this.CmdFullExtent.RightToLeft = System.Windows.Forms.RightToLeft.No; this.CmdFullExtent.Size = new System.Drawing.Size(97, 33); this.CmdFullExtent.TabIndex = 4; this.CmdFullExtent.Text = "Full Extent"; this.CmdFullExtent.Click += new System.EventHandler(this.CmdFullExtent_Click); // // 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(112, 344); this.Label2.Name = "Label2"; this.Label2.RightToLeft = System.Windows.Forms.RightToLeft.No; this.Label2.Size = new System.Drawing.Size(401, 17); this.Label2.TabIndex = 6; this.Label2.Text = "Right mouse button to pan."; // // 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(112, 328); this.Label1.Name = "Label1"; this.Label1.RightToLeft = System.Windows.Forms.RightToLeft.No; this.Label1.Size = new System.Drawing.Size(401, 17); this.Label1.TabIndex = 5; this.Label1.Text = "Left mouse button to drag a rectangle to zoom in."; // // axMapControl1 // this.axMapControl1.Location = new System.Drawing.Point(8, 8); this.axMapControl1.Name = "axMapControl1"; this.axMapControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axMapControl1.OcxState"))); this.axMapControl1.Size = new System.Drawing.Size(576, 312); this.axMapControl1.TabIndex = 7; this.axMapControl1.OnMouseDown += new ESRI.ArcGIS.Controls.IMapControlEvents2_Ax_OnMouseDownEventHandler(this.axMapControl1_OnMouseDown); // // axLicenseControl1 // this.axLicenseControl1.Enabled = true; this.axLicenseControl1.Location = new System.Drawing.Point(24, 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 = 8; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(592, 366); this.Controls.Add(this.axLicenseControl1); this.Controls.Add(this.axMapControl1); this.Controls.Add(this.CmdFullExtent); this.Controls.Add(this.Label2); this.Controls.Add(this.Label1); this.Name = "Form1"; this.Text = "MapControl CAD Viewer"; this.Load += new System.EventHandler(this.Form1_Load); ((System.ComponentModel.ISupportInitialize)(this.axMapControl1)).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 CADView()); } private void Form1_Load(object sender, System.EventArgs e) { //Set passed file to variable string[] arguments = Environment.GetCommandLineArgs(); if (arguments.Length == 1) { MessageBox.Show("No filename passed", "CAD Fileviewer"); this.Close(); return; } string workspacePath = System.IO.Path.GetDirectoryName(arguments[1]); string fileName = System.IO.Path.GetFileName(arguments[1]); //Add passed file to MapControl ICadDrawingDataset cadDrawingDataset = GetCadDataset(workspacePath, fileName); if (cadDrawingDataset == null) return; ICadLayer cadLayer = new CadLayerClass(); cadLayer.CadDrawingDataset = cadDrawingDataset; cadLayer.Name = fileName; axMapControl1.AddLayer(cadLayer,0); } private void CmdFullExtent_Click(object sender, System.EventArgs e) { //Get the MapContol's full extent and set the current extent to this axMapControl1.Extent = axMapControl1.FullExtent; } private ICadDrawingDataset GetCadDataset(string cadWorkspacePath, string cadFileName) { //Create a WorkspaceName object IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory"; workspaceName.PathName = cadWorkspacePath; //Create a CadDrawingName object IDatasetName cadDatasetName = new CadDrawingNameClass(); cadDatasetName.Name = cadFileName; cadDatasetName.WorkspaceName = workspaceName; //Open the CAD drawing IName name = (IName) cadDatasetName; return (ICadDrawingDataset) name.Open(); } private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) { //Check which button has been pressed by the user if (e.button == 1) { //Left button - Track a Rectangle and use this to set the MapControl's extent axMapControl1.Extent = axMapControl1.TrackRectangle(); } else { //Left or middle button - Pan axMapControl1.Pan(); } } } }