打开cad文件的几种方法
打开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文件的几种方法相关推荐
- GIS开发进阶之路(十四) ArcEngine打开cad文件的五种方法、ArcGIS Engine错误码
ArcEngine打开cad文件的几种方法 方法一.通过遍历CAD数据集,依次加载中点线面注记等图层,所加载的数据均为一个独立的图层. IWorkspaceFactory pWorkspaceFact ...
- ArcGis 打开CAD文件的几种方法
方法一. iworkspacefactory pworkspacefactory; ifeatureworkspace pfeatureworkspace; ifeaturelayer pfeatur ...
- eml html显示工具,电脑打开eml文件的三种方法【图文教程】
EML是电子邮件格式文件,一般可以用Outlook打开,电脑接收到eml文件,但发现这个文件复制到电脑上不能正常打开,这是什么情况?要打开这种文件其实也没有那么麻烦,日常用的工具就可以了,接下来和大家 ...
- xp系统网页java不显示,xp系统打开jsp文件的两种方法
使用xp系统的时候会碰到各种文件,比如png.log.exe等等,一位用户说遇到后缀名是jsp的文件,jsp文件是什么?有什么作用呢?jsp格式文件是一种动态网页技术标准,是用java script脚 ...
- office是不是python的打开方式_python打开excel文件的2种方法(基于win32com)
excel文件打开,会遇到两种不通的场景:excel文件还没有打开,直接打开操作 文件一定打开,需要脚本获取到已打开的文件,然后再操作 [1]直接打开 import win32com.client a ...
- 怎么打开ofd文件的三种方法
我们在运行电脑的过程中,可能会看到ofd格式的文件,这是什么文件格式?要怎么打开ofd文件呢?下面小编就给大家整理了三种打开方法,快来试试吧. win11系统下载_win11最新版_win11正式版系 ...
- node服务器中打开html文件的两种方法
方法1:利用 Express 托管静态文件,详情查看这里 方法2:使用fs模块提供的readFile方法打开文件,让其以text/html的形式输出. 代码: var express = requir ...
- wps word打开是html,用Word打开WPS文件的两种方法,WPS文件如何打开?
方法一 问:请问,怎样才能在word中正常使用wps文件? 答:一般来说,wps打开word文件是比较顺利的,但word打开wps文件时,若设置不对就无法打开.设置的方法是:启动word后,在&quo ...
- linux 已打开的文件夹里,打开linux文件的三种方法
怎么打开linux文件,方法如下: 方法一(利用Vim文本编辑器): 1.打开终端.点击菜单,然后找到终端程序.程序的图标是一个黑色的方框,上面有一个白色的">_".点击它. ...
最新文章
- linux 查看 文档 不显示注释 命令
- Sicily 2501. 算算式
- matlab中 bsxfun函数
- MySQL—创建数据表
- ELK日志平台一 ElasticSearch的安装
- C/C++中 static 的作用
- 对象内存布局 (5)
- js中获取对象属性的3种方式
- Running Trinity in multiple steps
- 如何搭建数据标准管理平台
- java发送邮件代码
- 通过一个简单例子看懂遗传算法,附MATLAB代码
- fms安装教程 linux_[AS3]linux64下安装FMS5.0的方法
- 安卓依赖包关系:support->Androidx->Jetpack
- 小程序二维码和带参数的二维码生成
- java指定日期计算一年内第几天和给出一年内第几天算出指定日期
- java中继承内部类的方法_Java自学-接口与继承 内部类
- 使用HttpURLConnection 越过ssl证书访问htts协议接口
- Java知识大全 - 十二、Java和大数据
- v$sql、v$sqlarea、v$sqltext、v$sql_plan
热门文章
- [新]Linux部署DM DEM
- 使用bootstrap table和SpringBoot,mysql实现后台管理数据表格的后端分页
- django 中model踩的坑之AttributeError: type object ** has no attribute 'objects'及Field defines a relation
- 计算机二级不用学吗,计算机二级必须要过一级吗
- 太平洋电脑城被骗经历
- flash胜龙独家测试SanDisknbsp;Mo…
- 计算机数字音乐小酒窝,小酒窝数字简谱哪有?
- 快速带你分清java内存结构,java内存模型,java对象模型和jvm内存结构!
- WebService技术简介-蛙课网
- java binder_Binder基本使用