C#+ArcEngine:加载打开CAD数据(VS2010窗体+代码)
2017-11-09 10:48
417 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.DataSourcesFile;
namespace 加载打开CAD数据
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 整幅加载ToolStripMenuItem_Click(object sender, EventArgs e)
{
#region 一:整幅加载
try
{
this.axMapControl1.ActiveView.Clear();//清空当前视图
OpenFileDialog xjCADOpenFileDialog = new OpenFileDialog();
xjCADOpenFileDialog.Title = "打开CAD数据文件";
xjCADOpenFileDialog.Filter = "CAD数据(*.dwg)|*.dwg";
if (xjCADOpenFileDialog.ShowDialog() == DialogResult.OK)
{
string xjCADFullPath = xjCADOpenFileDialog.FileName;//文件绝对路径
int xjIndex = xjCADFullPath.LastIndexOf("\\");
string xjCADFilePath = xjCADFullPath.Substring(0, xjIndex);//文件目录
string xjCADFileName = xjCADFullPath.Substring(xjIndex + 1);//文件名称
//打开CAD数据集
IWorkspaceFactory xjCADWsF = new CadWorkspaceFactoryClass();//using ESRI.ArcGIS.Geodatabase;//using ESRI.ArcGIS.DataSourcesFile;
IFeatureWorkspace xjCADFWs = (IFeatureWorkspace)xjCADWsF.OpenFromFile(xjCADFilePath, 0);
IFeatureDataset xjCADFeatureDataset = xjCADFWs.OpenFeatureDataset(xjCADFileName);
IFeatureClassContainer xjFeatClassContainer = (IFeatureClassContainer)xjCADFeatureDataset;//管理IFeatureDataset中的每个要素类
//遍历
for (int i = 0; i < xjFeatClassContainer.ClassCount; i++)
{
IFeatureClass xjFeatureClass = xjFeatClassContainer.get_Class(i);//要素集
if (xjFeatureClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)//注记层
{
IFeatureLayer xjCADFeatureLayer = new CadAnnotationLayerClass();//using ESRI.ArcGIS.Carto;
xjCADFeatureLayer.Name = xjFeatureClass.AliasName;
xjCADFeatureLayer.FeatureClass = xjFeatureClass;
this.axMapControl1.Map.AddLayer(xjCADFeatureLayer);
}
else //点、线、面
{
IFeatureLayer xjCADFeatureLayer = new FeatureLayerClass();
xjCADFeatureLayer.Name = xjFeatureClass.AliasName;
xjCADFeatureLayer.FeatureClass = xjFeatureClass;
this.axMapControl1.Map.AddLayer(xjCADFeatureLayer);
}
this.axMapControl1.ActiveView.Refresh();//刷新
}
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endregion
}
}
}
VS2010+ArcEngine10.1具体窗体+代码见:点击打开链接
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.DataSourcesFile;
namespace 加载打开CAD数据
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 整幅加载ToolStripMenuItem_Click(object sender, EventArgs e)
{
#region 一:整幅加载
try
{
this.axMapControl1.ActiveView.Clear();//清空当前视图
OpenFileDialog xjCADOpenFileDialog = new OpenFileDialog();
xjCADOpenFileDialog.Title = "打开CAD数据文件";
xjCADOpenFileDialog.Filter = "CAD数据(*.dwg)|*.dwg";
if (xjCADOpenFileDialog.ShowDialog() == DialogResult.OK)
{
string xjCADFullPath = xjCADOpenFileDialog.FileName;//文件绝对路径
int xjIndex = xjCADFullPath.LastIndexOf("\\");
string xjCADFilePath = xjCADFullPath.Substring(0, xjIndex);//文件目录
string xjCADFileName = xjCADFullPath.Substring(xjIndex + 1);//文件名称
//打开CAD数据集
IWorkspaceFactory xjCADWsF = new CadWorkspaceFactoryClass();//using ESRI.ArcGIS.Geodatabase;//using ESRI.ArcGIS.DataSourcesFile;
IFeatureWorkspace xjCADFWs = (IFeatureWorkspace)xjCADWsF.OpenFromFile(xjCADFilePath, 0);
IFeatureDataset xjCADFeatureDataset = xjCADFWs.OpenFeatureDataset(xjCADFileName);
IFeatureClassContainer xjFeatClassContainer = (IFeatureClassContainer)xjCADFeatureDataset;//管理IFeatureDataset中的每个要素类
//遍历
for (int i = 0; i < xjFeatClassContainer.ClassCount; i++)
{
IFeatureClass xjFeatureClass = xjFeatClassContainer.get_Class(i);//要素集
if (xjFeatureClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)//注记层
{
IFeatureLayer xjCADFeatureLayer = new CadAnnotationLayerClass();//using ESRI.ArcGIS.Carto;
xjCADFeatureLayer.Name = xjFeatureClass.AliasName;
xjCADFeatureLayer.FeatureClass = xjFeatureClass;
this.axMapControl1.Map.AddLayer(xjCADFeatureLayer);
}
else //点、线、面
{
IFeatureLayer xjCADFeatureLayer = new FeatureLayerClass();
xjCADFeatureLayer.Name = xjFeatureClass.AliasName;
xjCADFeatureLayer.FeatureClass = xjFeatureClass;
this.axMapControl1.Map.AddLayer(xjCADFeatureLayer);
}
this.axMapControl1.ActiveView.Refresh();//刷新
}
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endregion
}
}
}
VS2010+ArcEngine10.1具体窗体+代码见:点击打开链接
相关文章推荐
- C#+ArcEngine:加载打开 Tin 数据(VS2010窗体+代码)
- C#+ArcEngine:加载打开Shp矢量数据和栅格数据(VS2010窗体+代码)
- C#+ArcEngine:shp矢量点转Tin(VS2010窗体+代码)
- C#将CAD数据转成shape或mdb的代码
- VS2010 c# winform中datagridview控件初次加载时去除默认选中第一行数据
- vs2010打开“基于服务的数据库”加载数据表时出现错误
- C#:TXT文件读写(VS2010窗体+代码)
- C#中,把激活已经打开的窗体的代码封装成方法来用
- VS2010中C#代码用"转到定义"或F12转到定义时,总是显示从元数据的问题
- C#:C#与libLAS的简单操作(VS2010窗体+代码)
- C# 在第二个窗体上添加数据之后如何刷新第一个窗体加载的数据
- VS2010经常崩溃 打开编辑代码就卡死 重启 vs无法加载uiautomationcore.dll
- ArcEngine加载数据及处理代数计算代码总结
- arcengine C# 按行政区范围加载图层数据
- C#在后台注册一个脚本,打开一个子窗口,显示在屏幕中间,关闭子窗体刷新子窗体代码
- winform开发打开窗体时, 若要在加载设计器前避免可能发生的数据丢失,必须纠正以下错误:
- 《转》C#+ArcEngine 不同格式数据打开,对象创建,导入导出
- C#+ArcEngine 不同格式数据打开,对象创建,导入导出
- 【转】ArcEngine 打开AutoCAD文件的几种方法与读取CAD数据的方法
- MapControl加载CAD数据的示例代码