AE开发中遇到对com组件调用返回了错误

IDataset shpDataset = (IDataset)outWorkspace;
IWorkspaceName pShpWorkspaceName = (IWorkspaceName)shpDataset.FullName;
//CAD文件的空间数据集的遍历
IWorkspaceFactory pCADWorkSpaceFactory = new CadWorkspaceFactoryClass();
IFeatureWorkspace pCADFeatureWorkSpace = (IFeatureWorkspace)pCADWorkSpaceFactory.OpenFromFile(filePath, 0);
IFeatureDataset pCADFeatureDataset = pCADFeatureWorkSpace.OpenFeatureDataset(strFile);
IFeatureClassContainer pFeatureClassContainer = pCADFeatureDataset as IFeatureClassContainer;
IEnumFeatureClass pEnumFeatureClass = pFeatureClassContainer.Classes;
IFeatureClass pFeatureClass = pEnumFeatureClass.Next();

while (pFeatureClass != null)
{
IDataset cadDataset = (IDataset)pFeatureClass;
IFeatureClassName cadFeatureClassName = (IFeatureClassName)cadDataset.FullName;
IFeatureClassName shpFeatureClassName = new FeatureClassNameClass();
IDatasetName shpDatasetName = (IDatasetName)shpFeatureClassName;
string sname = pFeatureClass.FeatureDataset.Name;
shpDatasetName.Name = sname.Replace(".dxf", "_") + pFeatureClass.AliasName;
shpDatasetName.WorkspaceName = pShpWorkspaceName;
IFieldChecker pFieldChecker = new FieldCheckerClass();
IFields inFields = pFeatureClass.Fields;
IFields outFields = null;
IEnumFieldError pEnumFieldError = null;
pFieldChecker.InputWorkspace = (IWorkspace)pCADFeatureWorkSpace;
pFieldChecker.ValidateWorkspace = outWorkspace;
pFieldChecker.Validate(inFields, out pEnumFieldError, out outFields);

IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverterClass();
pFeatureDataConverter.ConvertFeatureClass(cadFeatureClassName, null, null, shpFeatureClassName, null, outFields, "", 100, 0);

pFeatureClass = pEnumFeatureClass.Next();
}
DialogResult result = MessageBox.Show("添加到当前地图?", "添加到当前地图?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
string[] filepathname = Directory.GetFiles(outShpPath, "*.shp");
IFeatureWorkspace tempFeatureWorkspace = outWorkspace as IFeatureWorkspace;
for (int i = 0; i < filepathname.Length; i++)
{
string filename = System.IO.Path.GetFileName(filepathname.ToString());
//MessageBox.Show(filename);
IFeatureClass m_pFeatureClass = tempFeatureWorkspace.OpenFeatureClass(filename);
IDataset m_pDataset = m_pFeatureClass as IDataset;
IFeatureLayer m_pFeatureLayer = null;
m_pFeatureLayer = new FeatureLayerClass();


m_pFeatureLayer.FeatureClass = m_pFeatureClass;
m_pFeatureLayer.Name = m_pDataset.Name;
//pFeatureLayer.Name = pFeatureClass.AliasName; //这句代码也与上句一个效果
ILayer pLayer = m_pFeatureLayer as ILayer;
this.pMapControl.Map.AddLayer(pLayer);
}
}
MessageBox.Show("转换成功!");
}
已邀请:

要回复问题请先登录注册