/// <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;

                       //=================================================================

                       //获取CADDataset

                        pCadDrawingDataset = GetCadDataset(strCADFilePath, strCADFileName+".dwg");

                       //=================================================================

                       if(pCadDrawingDataset==null) return ;

                       pCadLayer = new CadLayerClass();

                       pCadLayer.CadDrawingDataset = pCadDrawingDataset;

                       pCadLayer.Name = strCADFileName;

                       //

                       this.axMapControl1.AddLayer(pCadLayer,0);

                       //

                   }

              }

         }

         /// <summary>

         /// 获取CADDataset

         /// </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;

              }   

 

         }

posted on 2006-11-16 13:28  地理信息人  阅读(1154)  评论(1)    收藏  举报