using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Geodatabase;
namespace ArcGisCAD
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void viewCAD_btn_Click(object sender, EventArgs e)
{
OpenFileDialog openDlg = new OpenFileDialog();
openDlg.Title = "打开CAD文件";
openDlg.Filter = "AutoCAD文件(*.dwg)|*.dwg|(*.dxf)|*.dxf";
if (openDlg.ShowDialog() == DialogResult.OK)
{
//CAD文件路径,例如:D:temp\
string worksapcePath =
openDlg.FileName.Substring(0, openDlg.FileName.LastIndexOf("\\") + 1);
string fileName = openDlg.FileName.Substring(openDlg.FileName.LastIndexOf("\\")+1);
//将CAD文件添加到mapcontrol中
ICadDrawingDataset cadDrawingDataset =
CADClass.GetCADDataset(worksapcePath, fileName);
if (cadDrawingDataset == null)
{
return;
}
ICadLayer cadLayer = new CadLayerClass();
cadLayer.CadDrawingDataset = cadDrawingDataset;
cadLayer.Name = fileName;
axMapControl1.AddLayer(cadLayer, 0);
axMapControl1.Extent = axMapControl1.FullExtent;
}
}
private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
{
if (e.button == 1)
{
//若是左键,使用矩形框框选放大部位
axMapControl1.Extent = axMapControl1.TrackRectangle();
}
else
{
//鼠标滚轴或右键,移动图形
axMapControl1.Pan();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Geodatabase;
namespace ArcGisCAD
{
class CADClass
{
/// <summary>
/// 获取CAD数据集
/// </summary>
/// <param name="workspacePath">CAD文件路径</param>
/// <param name="fileName">cad文件名称(带文件扩展名)</param>
/// <returns></returns>
public static ICadDrawingDataset GetCADDataset(string workspacePath, string fileName)
{
//创建一个 WorkspaceName
IWorkspaceName workspaceName = new WorkspaceNameClass();
workspaceName.WorkspaceFactoryProgID =
"esriDataSourcesFile.CadWorkspaceFactory";
workspaceName.PathName = workspacePath;
//创建一个 CADDrawingName
IDatasetName cadDatasetName = new CadDrawingNameClass();
cadDatasetName.Name = fileName;
cadDatasetName.WorkspaceName = workspaceName;
//打开CAD
IName name = (IName)cadDatasetName;
return (ICadDrawingDataset)name.Open();
}
}
}