使用IFeatureDataConvert将dxf文件导入到GDB中

做个从dxf到GDB转换导入的一个小程序,和大家分享一下!
            _sFilePath是.DXF文件所在的目录,是在先前获取到的一个文件路径.
            IWorkspace pOutWorkspace = null;
            IFeatureWorkspace pInWorkspace = null;
            try
            {
                lstBox.Items.Add("开始导入...");
                // 获取目的数据库的SDE的连接
                AccessWorkspaceFactory pAccessWorkspaceFactory = new AccessWorkspaceFactory();
                String sfileName = @"e:\TestDB.mdb";
                pOutWorkspace = pAccessWorkspaceFactory.OpenFromFile(sfileName, 0);
                IDataset pDataset = (IDataset)pOutWorkspace;
                IWorkspaceName pWorkspaceName = (IWorkspaceName)pDataset.FullName;
                // 获取CAD的数据库连接
                IWorkspaceFactory pCADWorkspaceFactory = new CadWorkspaceFactory();
                pInWorkspace = (IFeatureWorkspace)pCADWorkspaceFactory.OpenFromFile(_sFilePath, 0);
                IFeatureDataset pFeatureDataset = pInWorkspace.OpenFeatureDataset(_sFileName);
                //loop through the cad feature classes and convert 
                IFeatureClassContainer pFeatureClassContainer = (IFeatureClassContainer)pFeatureDataset;
                IEnumFeatureClass pEnumFc = pFeatureClassContainer.Classes;
                //枚举变量 遍历找到每个dxf文件中所包含的数据
                IFeatureClass pFeatureClass =pEnumFc.Next();
                while (pFeatureClass != null)
                {
                    //Get the Input featureclassname
                    IDataset pInDataset = (IDataset)pFeatureClass;
                    IFeatureClassName pInFcName = (IFeatureClassName)pInDataset.FullName;
                    //Create new output featureclassname 
                    IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass();
                    IDatasetName pDatasetName = (IDatasetName)pOutFeatureClassName;
                    String sname = pFeatureClass.FeatureDataset.Name;

                    pDatasetName.Name = sname.Replace(".DXF", "_") + pFeatureClass.AliasName;
                    lstBox.Items.Add("导入" + sname.Replace(".dxf", "_") + pFeatureClass.AliasName);
                    //pDatasetName.Name = sname.Replace(".dwg", "_") + pFeatureClass.AliasName;
                    pDatasetName.WorkspaceName = pWorkspaceName;
                    //获取所有字段,并给一个新的字段赋予初始值 
                    //检查要素类的字段是否有效
                    IFieldChecker pFieldChecker;
                    IFields pFields = pFeatureClass.Fields;
                    IFields pOutFields;
                    pFieldChecker = new FieldCheckerClass();
                    pFieldChecker.InputWorkspace = (IWorkspace)pInWorkspace;
                    pFieldChecker.ValidateWorkspace = pOutWorkspace;
                    IEnumFieldError pEnumFieldError = null;
                    pOutFields字段为检查后 赋予的新的字段信息
                    pFieldChecker.Validate(pFields, out pEnumFieldError, out pOutFields);
                    //对数据进行转换
                    IFeatureDataConverter pFDC = new FeatureDataConverter();
                    pFDC.ConvertFeatureClass(pInFcName, null, null, pOutFeatureClassName, null, pOutFields, "", 100, 0);
                    pFDC = null;
                    pFeatureClass = pEnumFc.Next();
                }
                pOutWorkspace = null;
                pInWorkspace = null;
                lstBox.Items.Add("导入完成");
            }
            catch (Exception ex)
            {
                pOutWorkspace = null;
                pInWorkspace = null;
                lstBox.Items.Add("导入失败");
                MessageBox.Show(ex.Message);
            }