打开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();

  }

时间: 2024-10-10 11:16:07

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

pdf文件怎么编辑 如何编辑pdf文件的三种方法

pdf文件越来越流行,工作中经常遇到需要修改pdf文件的情况.一般人的电脑上都为pdf文件安装了一个pdf阅读器,可它只能用来阅读查看pdf文件,并不能满足人们的编辑需求.那么pdf文件怎么编辑?下面小编给大家讲讲关于如何编辑pdf文件的三种方法.     方法一:直接编辑,一步到位     如果要对pdf文件进行编辑,我们则需要安装pdf编辑器.最新版的迅捷pdf编辑器可以编辑pdf文件中的任何内容,包括文字.图片.页眉页脚.添加注释等等.迅捷pdf编辑器如何编辑pdf文件?     首先需要

pdf文件怎么修改 修改PDF文件的两种方法

都说PDF格式的文件不能修改,我就呵呵了!不管你们信不信,反正我是不信.因为我会修改PDF文件,并且方法还不止一种.想知道我是怎么修改PDF文件的吗?下面我就告诉大家修改PDF文件的两种方法. 方法一 1.方法一就是将PDF文件转换成一种可容易编辑的文档,如:word.excel.ppt等格式,然后再进行编辑,编辑好后再将其转换成PDF格式,是不是很简单!具体是该如何转换的,下面有详细教程. 2.下载一个PDF转换器,并将它安装在电脑上.工具最好是支持双向转换的那种,如:http://www.x

GitHub常用上传文件的两种方法 附带常见的问题及Git安装教程

从早上下课到现在一直在琢磨如何给Gethub下载本地文件,中午饭都没吃.还好是解决了,感觉挺有成就感的.O(∩_∩)O哈哈~ 好哒 闲话不说,说重点. 一.git的安装 百度云:http://pan.baidu.com/s/1mhFy8Ik 打开后 点next 2.继续点next 3.继续点next 4.选第一行是默认windows使用 选第二行是Windows和Linux都可以 点next 5.可以不用管,选择默认就可以了 点next 6.安装成功后弹出 7 这时候你找到你的git文件夹,点击

分析iOS Crash文件:符号化iOS Crash文件的3种方法

转自:http://www.cocoachina.com/industry/20140514/8418.html 转自wufawei的博客 当你的应用提交到App Store或者各个渠道之后,请问你多久会拿到crash文件?你如何分析crash文件的呢? 上传crash文件 你的应用应当有模块能够在应用程序crash的时候上传crash信息. 要么通过用户反馈拿到crash文件,要么借助自己或第3方的crash上传模块拿到crash文件. 今天要分析的场景是你拿到用户的.crash文件之后,如何

VC6.0加载lib文件的三种方法

MFC编写程序,都要用到动态链接库,MFC相关的动态库有MFCD42和MFC42等,MFC框架程序已经自动加载,那么如何引入第三方的动态链接库到工程中呢? 静态链接库是要先把程序中所需要使用的函数编译成机器码,保存在*.lib文件中.编译器会去*.lib中找出所需要的函数,并把这些函数的机器码复制一份,放在可执行文件中.将lib库引入工程,有下面3种方法. 第一种方法,lib文件直接加入到工程文件列表中. 在VC中打开“File View”一页,选中工程名,单击鼠标右键,然后在弹出的快捷菜单中选

打开网络适配的两种方法

打开网络适配有两种方法 第一种是在Info.plist文件里添加XML代码 具体步骤:右击Info.plist文件 选择Open As里面的Source Code 然后在文件底部插入下面代码 [html] view plain copy <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 第二种

MySQL命令执行sql文件的两种方法

MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希望能给刚开始学习 MySQL 数据库的朋友们. 学习过 SQLServer 或 Oracle 的朋友会知道,sql 脚本是包含一到多个 sql 命令的 sql 语句集合,我们可以将这些 sql 脚本放在一个文本文件中(我们称之为“sql 脚本文件”),然后通过相关的命令执行这个 sql 脚本文件.基

ASP.NET上传文件的几种方法

//上传文件实例 if (fileDealer.HasFile)//判断文件是否存在        {            string filepath = "";            try            {                string path = fileDealer.FileName;                string filename = path.Split('.')[0] + "_" + DateTime.Now

.net(C#)操作文件的几种方法汇总

.net(C#)操作文件的几种方法汇总 System.IO命名空间下类的用法:在System.IO名称空间中包含了用于文件输入输出的主要类.File:实用类,提供许多静态方法,用于移动.复制和删除文件.Directory:实用类,提供许多静态方法,用于移动.复制和删除目录.Path:实用类,用于处理路径名称.FileInfo:表示磁盘上的物理文件,具有可以处理此文件的方法.要完成对文件的读取和写入工作,就必须创建Stream对象.DirectoryInfo:表示磁盘上的物理目录,具有可以处理此目