bool ArcmapDataBase::convertFeatureDataset(dan::Object<iDataPlugin::IPGLayer> layer, dan::DString ipNowFeatureClassName, dan::DString ipNowFeatureDatasetName) //往要素数据集里面导入要素
{
/*相关变量定义*/
dan::DString ipOldFeatureClassName = layer->layerName();
IFeatureDataConverterPtr ipFeatureDataConvert(CLSID_FeatureDataConverter);

dan::Object<ArcmapLayer> aLayer = layer;
//获取当前空间参照(get ISpatialReference)
IFeatureClassPtr ipFeatureClass = aLayer->getFeatureClass();
IGeoDatasetPtr ipGeoDataset = ipFeatureClass;
ISpatialReferencePtr ipSpatialRefrence;
ipGeoDataset->get_SpatialReference(&ipSpatialRefrence); //得到空间参照SpatialReference

IWorkspacePtr ipWorkspace = getWorkspace();
IFeatureWorkspacePtr ipFeatureWorkspace = ipWorkspace;
IDatasetPtr ipDataset = ipWorkspace;
INamePtr ipName;
ipDataset->get_FullName(&ipName);
IWorkspaceNamePtr ipWorkspaceName = ipName;

IFeatureClassNamePtr ipCurFeatureClassName(CLSID_FeatureClassName);
IDatasetNamePtr ipDatasetName = ipCurFeatureClassName;
ipDatasetName->putref_WorkspaceName(ipWorkspaceName);
ipDatasetName->put_Name(_bstr_t((LPCTSTR)ipOldFeatureClassName.utf16())); //get InputDatasetName;

IQueryFilterPtr ipQueryFilter(CLSID_QueryFilter);

IFieldsPtr ipFields;
ipFeatureClass->get_Fields(&ipFields); //get IFields

IFeatureDatasetNamePtr ipCurFeatureDatasetName(CLSID_FeatureDatasetName);
IDatasetNamePtr ipNowDatasetName= ipCurFeatureDatasetName;
ipNowDatasetName->putref_WorkspaceName(ipWorkspaceName);
ipNowDatasetName->put_Name(_bstr_t((LPCTSTR)ipNowFeatureDatasetName.utf16())); //get OutputDatasetName

IFeatureClassNamePtr ipCurrentFeatureClassName(CLSID_FeatureClassName);
IDatasetNamePtr ipCurDatasetName = ipCurrentFeatureClassName;
ipCurDatasetName->putref_WorkspaceName(ipWorkspaceName);
ipCurDatasetName->put_Name(_bstr_t((LPCTSTR)ipNowFeatureClassName.utf16())); //get OutputFeatureClassName

IEnumInvalidObjectPtr ipEnumValid;
ipFeatureDataConvert->ConvertFeatureClass(ipCurFeatureClassName, ipQueryFilter, ipCurFeatureDatasetName, ipCurrentFeatureClassName, nullptr, ipFields, L"", 1000, 0, &ipEnumValid);

if (ipEnumValid != nullptr)
{
return true;
}
else
{
return true;
}
return false;
}

注释比较少 --大家理解一下