方法一、

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. phpmyadmin在linux下通过sock安装教程

    当初是按照 http://www.cnblogs.com/freeweb/p/5262852.html 地址参考安装,因为疏忽,未考虑到版本差异带来的影响(自身安装的是最新版 phpMyAdmin-4 ...

  2. H.264学习笔记4——变换量化

    A.变换量化过程总体介绍 经过帧内(16x16和4x4亮度.8x8色度)和帧间(4x4~16x16亮度.4x4~8x8色度)像素块预测之后,得到预测块的残差,为了压缩残差信息的统计冗余,需要对残差数据 ...

  3. vultr系统重建

    vultr服务器重启后ssh连接不上,view console只能guest登录,遍寻方法,无解,无奈重装系统. 服务器地址:Los Angeles 系统: Ubuntu 14.04 x64 用户:r ...

  4. bindtextdomain - 设置 包括 消息条目 的 路径

    总览 (SYNOPSIS) #include <libintl.h> char * bindtextdomain (const char * domainname, const char ...

  5. url编码函数encodeURI和encodeURIComponent

    var url = "http://www.wrox.com/illegal value.html#start";encodeURIComponent(url)  //" ...

  6. 字符集匹配:\s 匹配一个空格,一边后面加量词表示多个空格,\s*表示0个以上空格,\s+表示1个以上空格,\s相当于[\f\r\n\t ]5种空白字符。

    字符集匹配:\s 匹配一个空格,一边后面加量词表示多个空格,\s*表示0个以上空格,\s+表示1个以上空格,\s相当于[\f\r\n\t ]5种空白字符.

  7. pytorch: Variable detach 与 detach_

    pytorch 的 Variable 对象中有两个方法,detach和 detach_ 本文主要介绍这两个方法的效果和 能用这两个方法干什么. detach 官方文档中,对这个方法是这么介绍的. 返回 ...

  8. luogu 2257 YY的GCD

    题目描述: 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对. 题解: 代码: #include<cstdio> # ...

  9. Buffer.concat()

    Buffer.concat(list[, totalLength]) Node.js FS模块方法速查 list {Array} 需要连接的 Buffer 对象数组 totalLength {Numb ...

  10. leetcode-832翻转图像

    翻转图像 思路: 先对图像进行水平翻转,然后反转图片(对每个像素进行异或操作) 代码: class Solution: def flipAndInvertImage(self, A: List[Lis ...