方法一、

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.**();

}

}

方法二、

//--定义工作空间,并用CadWorkspaceFactoryClass()实例化它

IWorkspaceFactory pWorkspaceFactory = new CadWorkspaceFactoryClass();

//--打开相应的工作空间,并赋值给要素空间,OpenFromFile()

//--中的参数为CAD文件夹的路径

IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(directoryPath, 0) as IFeatureWorkspace;

/*--打开线要素类,如果要打开点类型的要素,需要把下边的代码该成:

*-- IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass (fileName + ":point");

*-- 由此可见fileName为CAD图的名字,后边加上要打开的要素类的类型,中间用冒号

*-- 隔开,大家可以想想多边形和标注是怎么打开的。 */

//point polyline

IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName + ":point");

IFeatureLayer pFeatureLayer = new FeatureLayerClass();

pFeatureLayer.FeatureClass = pFeatureClass;

this.axmc_Main.Map.AddLayer(pFeatureLayer);

this.axmc_Main.ActiveView.**();

方法三、

/*--下边的两行代码是定义一个CAD工作空间,然后打开它,但这次不是赋值给

--IFeatureWorkspace对象,而是赋值给IWorkspace定义的对象*/

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.**();

方法四、

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

}

ArcEngine 打开AutoCAD文件的几种方法的更多相关文章

  1. 打开cad文件的几种方法

    转自原文 打开cad文件的几种方法 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeature ...

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

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

  3. 2015.1.25 Delphi打开网址链接的几种方法

    Delphi打开网址链接的几种方法1.使用shellapi打开系统中默认的浏览器              首先需在头部引用 shellapi单元即在uses中添加shellapi,这里我们需要知道有 ...

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

    MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...

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

    .net(C#)操作文件的几种方法汇总 System.IO命名空间下类的用法:在System.IO名称空间中包含了用于文件输入输出的主要类.File:实用类,提供许多静态方法,用于移动.复制和删除文件 ...

  6. 【转】 分析iOS Crash文件:符号化iOS Crash文件的3种方法

    当你的应用提交到AppStore或者各个渠道之后,请问你多久会拿到crash文件?你如何分析crash文件的呢? 上传crash文件 你的应用应当有模块能够在应用程序crash的时候上传crash信息 ...

  7. matlab读取cvs文件的几种方法

    matlab读取CVS文件的几种方法: 1,实用csvread()函数   csvread()函数有三种使用方法: 1.M = csvread('filename')2.M = csvread('fi ...

  8. VC中加载LIB库文件的三种方法

    VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中   在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...

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

    转自:http://www.cocoachina.com/industry/20140514/8418.html 转自wufawei的博客 当你的应用提交到App Store或者各个渠道之后,请问你多 ...

随机推荐

  1. IE主页被恶意修改处理办法

    HKEY_USERS/.DEFAULT/Software/Policies/Microsoft/Internet Explorer/Control Panel 下的DWORD值“homepage”的键 ...

  2. Chrome 引起的蓝屏 MULTIPLE_IRP_COMPLETE_REQUESTS (44)

    如果你使用Chrome的时候出现经常性蓝屏, 可以试试这么做, 或许问题就解决了.

  3. JVM优化(上)

    02.我们为什么要对jvm做优化: 1.标准参数:-help-version 2. -X参数(非标) -Xint-Xcomp -Xint : interpreted-Xcomp: complied   ...

  4. HTML5 history API与ajax分页实例页面

    <ul id="choMenu" class="rel cho_menu"> <li><a href="ajax.php ...

  5. 51nod 1175 区间第k大 整体二分

    题意: 一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,第K大的数是多少. 分析: 仅仅就是一道整体二分的入门题而已,没听说过整体二分? 其实就是一个分治的函数 ...

  6. python 1-1模块介绍和使用

    1. 什么是模块 1.1 模块就是一系列功能的集合体 1.1.1 模块有三种来源 1.内置的模块 2.第三方的模块 3.自定义模块 1.1.2 模块的格式: 1.使用Python编写的.py文件 2. ...

  7. python中的句柄操作

    python中的句柄操作 制作人:全心全意 通过窗口标题获取句柄 import win32gui hld = win32gui.FindWindow(None,u"Adobe Acrobat ...

  8. UVA 140 Bandwidth (dfs 剪枝 映射)

    题意: 给定一个n个结点的图G和一个结点的排列, 定义结点i的带宽b(i)为i和相邻结点在排列中的最远距离, 所有b(i)的最大值就是这个图的带宽, 给定G, 求让带宽最小的结点排列. 给定的图 n ...

  9. poj 1088 滑雪 DP(dfs的记忆化搜索)

    题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 ...

  10. LeetCode 122. Best Time to Buy and Sell Stock II (stock problem)

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...