CAD中获取FeatureClass
public void GetCADFeatures(string str_CADfileDirectory,IMapControl3 axMapControl)
{
IWorkspaceFactory pCadWorkspacefactory = new CadWorkspaceFactoryClass();
IFeatureWorkspace pWorkspace;
//pWorkspace = pCadWorkspacefactory.OpenFromFile(@"C:\arcgis\ArcTutor\Editor\ExerciseData\EditingCAD",0) as IFeatureWorkspace;
pWorkspace = pCadWorkspacefactory.OpenFromFile(str_CADfileDirectory, 0) as IFeatureWorkspace; ;
IFeatureDataset pFeatDataset;
pFeatDataset = pWorkspace.OpenFeatureDataset("PARCELS.DWG");
IFeatureClassContainer pFeatClassContainer;
pFeatClassContainer = pFeatDataset as IFeatureClassContainer;
IFeatureClass pFeatClass;
IFeatureLayer pFeatLayer;
int i;
for (i = 0; i <= pFeatClassContainer.ClassCount - 1; i++)
{
pFeatClass = pFeatClassContainer.get_Class(i);
if (pFeatClass.FeatureType ==
esriFeatureType.esriFTCoverageAnnotation)
{
pFeatLayer = new CadAnnotationLayerClass();
}
else
{
pFeatLayer = new FeatureLayerClass();
}
pFeatLayer.Name = pFeatClass.AliasName;
pFeatLayer.FeatureClass = pFeatClass;
axMapControl.AddLayer(pFeatLayer, 0);
}
}
pWorkspace = pCadWorkspacefactory.OpenFromFile(str_CADfileDirectory, 0) as IFeatureWorkspace;其中这句代码报错,错误提示为“对 COM 组件的调用返回了错误 HRESULT E_FAIL”
{
IWorkspaceFactory pCadWorkspacefactory = new CadWorkspaceFactoryClass();
IFeatureWorkspace pWorkspace;
//pWorkspace = pCadWorkspacefactory.OpenFromFile(@"C:\arcgis\ArcTutor\Editor\ExerciseData\EditingCAD",0) as IFeatureWorkspace;
pWorkspace = pCadWorkspacefactory.OpenFromFile(str_CADfileDirectory, 0) as IFeatureWorkspace; ;
IFeatureDataset pFeatDataset;
pFeatDataset = pWorkspace.OpenFeatureDataset("PARCELS.DWG");
IFeatureClassContainer pFeatClassContainer;
pFeatClassContainer = pFeatDataset as IFeatureClassContainer;
IFeatureClass pFeatClass;
IFeatureLayer pFeatLayer;
int i;
for (i = 0; i <= pFeatClassContainer.ClassCount - 1; i++)
{
pFeatClass = pFeatClassContainer.get_Class(i);
if (pFeatClass.FeatureType ==
esriFeatureType.esriFTCoverageAnnotation)
{
pFeatLayer = new CadAnnotationLayerClass();
}
else
{
pFeatLayer = new FeatureLayerClass();
}
pFeatLayer.Name = pFeatClass.AliasName;
pFeatLayer.FeatureClass = pFeatClass;
axMapControl.AddLayer(pFeatLayer, 0);
}
}
pWorkspace = pCadWorkspacefactory.OpenFromFile(str_CADfileDirectory, 0) as IFeatureWorkspace;其中这句代码报错,错误提示为“对 COM 组件的调用返回了错误 HRESULT E_FAIL”
3 个回复
朱新颖
赞同来自:
2,检查下路径有没有问题,看代码没有问题。
why小飞
赞同来自:
xiaosi9524 - GISER
赞同来自:
//权限初始化
IAoInitialize m_AoInitialize = new AoInitializeClass();
esriLicenseStatus pEsriLicenseStaus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
试试这个 我是这么初始化的
ARCGIS 版本10.02
要回复问题请先登录或注册
发起人
相关问题
问题状态
—— 扫技术支持中心微信服务号!
—— 让GIS知乎问答随时随地!