在CADClass类中添加如下方法:
/// <summary>
/// 添加AutoCAD单一图层
/// </summary>
/// <param name="filePath">CAD文件路径</param>
/// <param name="fileName">文件名称(**.dwg(dxf))</param>
/// <param name="layerType">图层类型</param>
/// <param name="mapCtl">map控件</param>
public static void addCADByLayer(string filePath, string fileName,string layerType
, ESRI.ArcGIS.Controls.AxMapControl mapCtl)
{
//定义工作空间,并用CADWorkspaceFactoryClass()实例化
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory Fact =
new ESRI.ArcGIS.DataSourcesFile.CadWorkspaceFactoryClass();
//打开相应的工作空间,并赋值给要素空间
//其中openfromfile中的参数为CAD文件夹的路径
IFeatureWorkspace Workspace = Fact.OpenFromFile(filePath, 0) as
IFeatureWorkspace;
//IFeatureClass Fcls = Workspace.OpenFeatureClass(
// fileName+".dwg:polyline");
IFeatureClass Fcls = Workspace.OpenFeatureClass(
string.Concat(fileName, ":"+layerType));
ESRI.ArcGIS.Carto.IFeatureLayer Fly = new
ESRI.ArcGIS.Carto.FeatureLayerClass();
Fly.FeatureClass = Fcls;
Fly.Name = layerType;
mapCtl.Map.AddLayer(Fly);
mapCtl.ActiveView.Refresh();
//Add passed file to MapControl
// ICadDrawingDataset cadDrawingDataset = GetCadDataset(filePath, fileName);
// if (cadDrawingDataset == null) return;
//ESRI.ArcGIS.Carto. ICadLayer cadLayer =
// new ESRI.ArcGIS.Carto.CadLayerClass();
// cadLayer.CadDrawingDataset = cadDrawingDataset;
// cadLayer.Name = fileName;
// mapCtl.AddLayer(cadLayer, 0);
}
然后,在form1中添加一个text属性为“添加单一图层”的button按钮,在它的单击事件中添加代码如下:
private void addOneLayer_btn_Click(object sender, EventArgs e)
{
string cadFilePath, cadFileName;
OpenFileDialog openDlg = new OpenFileDialog();
openDlg.Title = "打开CAD文件";
openDlg.Filter = "AutoCAD文件(*.dwg)|*.dwg|(*.dxf)|*.dxf";
if (openDlg.ShowDialog() == DialogResult.OK)
{
//CAD文件路径,例如:D:temp\
cadFilePath =
openDlg.FileName.Substring(0, openDlg.FileName.LastIndexOf("\\") + 1);
cadFileName = openDlg.FileName.Substring(openDlg.FileName.LastIndexOf("\\") + 1);
string layerType = "point";
CADClass.addCADByLayer(cadFilePath, cadFileName, layerType,axMapControl1);
}
}
运行结果如图: