/// <summary>
/// CAD数据加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnuFile_4_3_Click(object sender, System.EventArgs e)
{
string strCADFileName="";//shp文件名称
string strCADFilePath="";//shp文件路径
//===========================================================
OpenFileDialog dlg=new OpenFileDialog();
dlg.Title ="添加CAD数据文件";
dlg.Multiselect =true;
dlg.Filter ="CAD File(*.DWG)|*.DWG|CAD DXF File(*.DXF)|*.DXF|DGN File(*.DGN)|*.DGN";
dlg.InitialDirectory=Environment.CurrentDirectory;
if(dlg.ShowDialog()==DialogResult.OK)
{
string[] files=dlg.FileNames;
foreach(string s in files)
{
strCADFilePath=System.IO.Path.GetDirectoryName(s) ;
strCADFileName=System.IO.Path.GetFileNameWithoutExtension(s);
//=================================================================
ICadLayer pCadLayer;
ICadDrawingDataset pCadDrawingDataset;
//=================================================================
//获取CAD的Dataset
pCadDrawingDataset = GetCadDataset(strCADFilePath, strCADFileName+".dwg");
//=================================================================
if(pCadDrawingDataset==null) return ;
pCadLayer = new CadLayerClass();
pCadLayer.CadDrawingDataset = pCadDrawingDataset;
pCadLayer.Name = strCADFileName;
//
this.axMapControl1.AddLayer(pCadLayer,0);
//
}
}
}
/// <summary>
/// 获取CAD的Dataset
/// </summary>
/// <param name="strCadWorkspacePath"></param>
/// <param name="strCadFileName"></param>
/// <returns></returns>
private ICadDrawingDataset GetCadDataset(string strCadWorkspacePath,string strCadFileName)
{
IName pName;
IDatasetName pCadDatasetName;
IWorkspaceName pWorkspaceName;
try
{
//Create a WorkspaceName object
pWorkspaceName = new WorkspaceNameClass();
pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory";
pWorkspaceName.PathName = strCadWorkspacePath;
//Create a CadDrawingName object
pCadDatasetName = new CadDrawingNameClass();
pCadDatasetName.Name = strCadFileName;
pCadDatasetName.WorkspaceName = pWorkspaceName;
//Open the CAD drawing
pName = pCadDatasetName as IName; //QI
return pName.Open() as ICadDrawingDataset;
}
catch(Exception e)
{
MessageBox.Show(e.Message);
return null;
}
}
浙公网安备 33010602011771号