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”
已邀请:

朱新颖

赞同来自:

1,检查一下程序是否绑定的Engine,初始化的Engine许可;
2,检查下路径有没有问题,看代码没有问题。

why小飞

赞同来自:

好的,我按照您说的去试试

xiaosi9524 - GISER

赞同来自:

ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
                //权限初始化
                IAoInitialize m_AoInitialize = new AoInitializeClass();
                esriLicenseStatus pEsriLicenseStaus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
                m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
 
试试这个 我是这么初始化的
ARCGIS 版本10.02

要回复问题请先登录注册