_pSelectedProduct是一个CATIPLMNavOccurrence接口指针,pAddedHuman 为被添加的Product Reference,pAddedObj为pAddedHuman 的一个实例。
HRESULT hr = S_OK ;
CATIPLMProducts_var spProductsOnSelectedRef = NULL_var;
CATIPLMNavOccurrence_var spOccOnSelected = _pSelectedProduct;
CATIPLMNavReference *pRefOnSelected = NULL;
if(SUCCEEDED(spOccOnSelected -> GetRelatedReference(pRefOnSelected))&&pRefOnSelected!=NULL){
spProductsOnSelectedRef = pRefOnSelected;
ReleaseInterface(pRefOnSelected);
}
else
{
CATIPLMNavInstance *pInstOnSelected = NULL;
if(SUCCEEDED(spOccOnSelected -> GetRelatedInstance(pInstOnSelected))&&pInstOnSelected!=NULL){
pInstOnSelected -> GetReferenceInstanceOf(pRefOnSelected);
spProductsOnSelectedRef = pRefOnSelected;
ReleaseInterface(pRefOnSelected);
ReleaseInterface(pInstOnSelected);
}
}
const char * strPLMType = "PLMCoreReference";
UString V_versionValue("A");
CATOmbLifeCycleRootsBag Bag;
CATIPLMProducts *pAddedHuman = NULL;
hr = ::ARKOpenPLMComponent(strPLMType,ARKSegmentInformation::HumanExternalID[Sex][Stature],V_versionValue,IID_CATIPLMProducts,
(void**)&pAddedHuman,Bag,TRUE);
CATBaseUnknown *pAddedObj = NULL;
hr = spProductsOnSelectedRef -> AddProduct(pAddedHuman ,pAddedObj);
ReleaseInterface(pAddedHuman );
ReleaseInterface(pAddedObj);