打开cad文件的几种方法

  方法一、通过遍历CAD数据集,依次加载中点线面注记等图层,所加载的数据均为一个独立的图层。

  IWorkspaceFactory pWorkspaceFactory;
  IFeatureWorkspace pFeatureWorkspace;
  IFeatureLayer pFeatureLayer;
  IFeatureDataset pFeatureDataset;
  //打开CAD数据集
  pWorkspaceFactory = new CadWorkspaceFactoryClass();
  pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(directoryPath, 0);
  //打开一个要素集
  pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);
  //IFeaturClassContainer可以管理IFeatureDataset中的每个要素类
  IFeatureClassContainer pFeatureClassContainer = (IFeatureClassContainer)pFeatureDataset;
  //对CAD文件中的要素进行遍历处理
  for (int i = 0; i < pFeatureClassContainer.ClassCount - 1; i++)
  {
  IFeatureClass pFeatureClass = pFeatureClassContainer.get_Class(i);
  if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation)
  {
  //如果是注记,则添加注记层
  pFeatureLayer = new CadAnnotationLayerClass();
  }
  else//如果是点、线、面,则添加要素层
  {
  pFeatureLayer = new FeatureLayerClass();
  pFeatureLayer.Name = pFeatureClass.AliasName;
  pFeatureLayer.FeatureClass = pFeatureClass;
  this.axmc_Main.Map.AddLayer(pFeatureLayer);
  this.axmc_Main.ActiveView.**();
  }

  }

  方法二、直接打开CAD数据的点线面注记等要素类,所加载的数据均为一个独立的图层。

 具体代码如下:

CadWorkspaceFactoryClass fac=new CadWorkspaceFactoryClass ();
   String filePath="E:\cad";
   IFeatureWorkspace space=fac.OpenFromFile(filePath,0) as IFeatureWorkspace ;
   下面是打开FeatureClass的代码:
   //线
   IFeatureClass polyline =space.OpenFeatureClass("NewCAD.dwg:Polyline");  
   IFeatureLayer layer=new CadFeatureLayerClass ();
   layer.FeatureClass =polyline;
   //点
   IFeatureClass point=space.OpenFeatureClass ("NewCAD.dwg:Point");
   layer=new CadFeatureLayerClass ();
   layer.FeatureClass =point;
   //面  
   IFeatureClass polygon=space.OpenFeatureClass ("NewCAD.dwg:Polygon");
   ayer=new CadFeatureLayerClass();
   layer.FeatureClass =polygon;
   //注记  
   IFeatureClass anno=space.OpenFeatureClass ("NewCAD.dwg:Annotation");
   layer=new CadAnnotationLayerClass();
   layer.FeatureClass =anno;
//其实在Coverage文件的开发方式与Autocad方法类似,可以参考.

  方法三、利用绘图空间直接加载CAD数据集,加载后各类型数据作为一个图层显示。

  

  IWorkspaceFactory pWorkspaceFactory = new CadWorkspaceFactoryClass();

  IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(directoryPath, 0);

  //--定义一个CAD画图空间,并把上边打开的工作空间赋给它

  ICadDrawingWorkspace pCadDrawingWorkspace = pWorkspace as ICadDrawingWorkspace;

  //--定义一个CAD的画图数据集,并且打开上边指定的工作空间中一幅CAD图

  //--然后赋值给CAD数据集

  ICadDrawingDataset pCadDrawingDataset = pCadDrawingWorkspace.OpenCadDrawingDataset(fileName);

  //--通过ICadLayer类,把上边得到的CAD数据局赋值给ICadLayer类对象的

  //--CadDrawingDataset属性

  ICadLayer pCadLayer = new CadLayerClass();

  pCadLayer.CadDrawingDataset = pCadDrawingDataset;

  //--利用MapControl加载CAD层

  this.axmc_Main.Map.AddLayer(pCadLayer);
  this.axmc_Main.ActiveView.**();

  方法四、也是遍历CAD点线面,但是不用检查数据类型是否为注记。

  IWorkspaceFactory pWorkspaceFactory = new CadWorkspaceFactoryClass();
  IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(directoryPath, 0) as IFeatureWorkspace;
  IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);
  IFeatureClassContainer pFeatureClassContainer = (IFeatureClassContainer)pFeatureDataset;
  for (int i = 0; i < pFeatureClassContainer.ClassCount - 1; i++)
  {
  IFeatureClass pFeatureClass = pFeatureClassContainer.get_Class(i);
  IFeatureLayer pFeatureLayer = new FeatureLayerClass();
  pFeatureLayer.FeatureClass = pFeatureClass;
  //ICadLayer pCadLayer = new CadLayerClass();
  //pCadLayer = pFeatureLayer as ICadLayer;
  this.axmc_Main.Map.AddLayer(pFeatureLayer);
  this.axmc_Main.ActiveView.**();

  }

  方法五、类似与方法三。

  //Add passed file to MapControl
  ICadDrawingDataset pCadDrawingDataset = GetCadDrawingDataset(directoryPath, fileName);
  if (pCadDrawingDataset == null) return;
  ICadLayer pCadLayer = new CadLayerClass();
  pCadLayer.CadDrawingDataset = pCadDrawingDataset;
  pCadLayer.Name = fileName;
  this.axmc_Main.AddLayer(pCadLayer, 0);

  /// <summary>
  /// 获取记录集
  /// </summary>
  /// <param name="directoryPath"></param>
  /// <param name="fileName"></param>
  /// <returns></returns>
  private ICadDrawingDataset GetCadDrawingDataset(string directoryPath, string fileName)
  {
  //Create a WorkspaceName object
  IWorkspaceName pWorkspaceName = new WorkspaceNameClass();
  pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory";
  pWorkspaceName.PathName = directoryPath;
  //Create a CadDrawingName object
  IDatasetName pDatasetName = new CadDrawingNameClass();
  pDatasetName.Name = fileName;
  pDatasetName.WorkspaceName = pWorkspaceName;
  //Open the CAD drawing
  IName pName = (IName)pDatasetName;
  return (ICadDrawingDataset)pName.Open();
  }

打开cad文件的几种方法相关推荐

  1. GIS开发进阶之路(十四) ArcEngine打开cad文件的五种方法、ArcGIS Engine错误码

    ArcEngine打开cad文件的几种方法 方法一.通过遍历CAD数据集,依次加载中点线面注记等图层,所加载的数据均为一个独立的图层. IWorkspaceFactory pWorkspaceFact ...

  2. ArcGis 打开CAD文件的几种方法

    方法一. iworkspacefactory pworkspacefactory; ifeatureworkspace pfeatureworkspace; ifeaturelayer pfeatur ...

  3. eml html显示工具,电脑打开eml文件的三种方法【图文教程】

    EML是电子邮件格式文件,一般可以用Outlook打开,电脑接收到eml文件,但发现这个文件复制到电脑上不能正常打开,这是什么情况?要打开这种文件其实也没有那么麻烦,日常用的工具就可以了,接下来和大家 ...

  4. xp系统网页java不显示,xp系统打开jsp文件的两种方法

    使用xp系统的时候会碰到各种文件,比如png.log.exe等等,一位用户说遇到后缀名是jsp的文件,jsp文件是什么?有什么作用呢?jsp格式文件是一种动态网页技术标准,是用java script脚 ...

  5. office是不是python的打开方式_python打开excel文件的2种方法(基于win32com)

    excel文件打开,会遇到两种不通的场景:excel文件还没有打开,直接打开操作 文件一定打开,需要脚本获取到已打开的文件,然后再操作 [1]直接打开 import win32com.client a ...

  6. 怎么打开ofd文件的三种方法

    我们在运行电脑的过程中,可能会看到ofd格式的文件,这是什么文件格式?要怎么打开ofd文件呢?下面小编就给大家整理了三种打开方法,快来试试吧. win11系统下载_win11最新版_win11正式版系 ...

  7. node服务器中打开html文件的两种方法

    方法1:利用 Express 托管静态文件,详情查看这里 方法2:使用fs模块提供的readFile方法打开文件,让其以text/html的形式输出. 代码: var express = requir ...

  8. wps word打开是html,用Word打开WPS文件的两种方法,WPS文件如何打开?

    方法一 问:请问,怎样才能在word中正常使用wps文件? 答:一般来说,wps打开word文件是比较顺利的,但word打开wps文件时,若设置不对就无法打开.设置的方法是:启动word后,在&quo ...

  9. linux 已打开的文件夹里,打开linux文件的三种方法

    怎么打开linux文件,方法如下: 方法一(利用Vim文本编辑器): 1.打开终端.点击菜单,然后找到终端程序.程序的图标是一个黑色的方框,上面有一个白色的">_".点击它. ...

最新文章

  1. linux 查看 文档 不显示注释 命令
  2. Sicily 2501. 算算式
  3. matlab中 bsxfun函数
  4. MySQL—创建数据表
  5. ELK日志平台一 ElasticSearch的安装
  6. C/C++中 static 的作用
  7. 对象内存布局 (5)
  8. js中获取对象属性的3种方式
  9. Running Trinity in multiple steps
  10. 如何搭建数据标准管理平台
  11. java发送邮件代码
  12. 通过一个简单例子看懂遗传算法,附MATLAB代码
  13. fms安装教程 linux_[AS3]linux64下安装FMS5.0的方法
  14. 安卓依赖包关系:support->Androidx->Jetpack
  15. 小程序二维码和带参数的二维码生成
  16. java指定日期计算一年内第几天和给出一年内第几天算出指定日期
  17. java中继承内部类的方法_Java自学-接口与继承 内部类
  18. 使用HttpURLConnection 越过ssl证书访问htts协议接口
  19. Java知识大全 - 十二、Java和大数据
  20. v$sql、v$sqlarea、v$sqltext、v$sql_plan

热门文章

  1. [新]Linux部署DM DEM
  2. 使用bootstrap table和SpringBoot,mysql实现后台管理数据表格的后端分页
  3. django 中model踩的坑之AttributeError: type object ** has no attribute 'objects'及Field defines a relation
  4. 计算机二级不用学吗,计算机二级必须要过一级吗
  5. 太平洋电脑城被骗经历
  6. flash胜龙独家测试SanDisknbsp;Mo…
  7. 计算机数字音乐小酒窝,小酒窝数字简谱哪有?
  8. 快速带你分清java内存结构,java内存模型,java对象模型和jvm内存结构!
  9. WebService技术简介-蛙课网
  10. java binder_Binder基本使用