//创建两个sheet
CATISpecObject_var spiSpecFirstSheet = NULL_var;
CATISpecObject_var spiSpecSecondSheet = NULL_var;
CATISheet_var spiFirstSheet = NULL_var;
CATISheet_var spiSecondSheet = NULL_var;
spiFirstSheet = piDrawing->GetCurrentSheet();
spiSpecFirstSheet = spiFirstSheet;
rc = CopyAndPasteSheet(piDrawing, spiSpecFirstSheet, spiSpecSecondSheet); // piDrawing为一个已经创建的工程图
if (FAILED(rc) || NULL_var == spiSpecSecondSheet)
{
return FALSE;
}
spiSecondSheet = spiSpecSecondSheet;
if (NULL_var == spiSecondSheet)
{
return FALSE;
}
piDrawing->SetCurrentSheet(spiFirstSheet);
// ------------------------------------------------
/**
* @brief 复制sheet
* @param[in] ispiSpecOnDrawing 当前Drawing对象
* @param[in] ispiSpecOnSourceSheet 被复制的sheet
* @param[out] ospiSpecOnTargetSheet 复制后的sheet对象
* @retval 成功:S_OK 失败:E_FAIL
* @note [详细说明]
* @attention [注意事项说明]
*/
// ------------------------------------------------
HRESULT CopyAndPasteSheet(CATISpecObject_var ispiSpecOnDrawing, CATISpecObject_var ispiSpecOnSourceSheet, CATISpecObject_var &ospiSpecOnTargetSheet)
{
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT rc=S_OK;
ospiSpecOnTargetSheet=NULL_var;
if(ispiSpecOnDrawing==NULL_var || ispiSpecOnSourceSheet==NULL_var)
{
return E_FAIL;
}
//拷贝
IdFormat iIdFmy = "CATDrwCont";
const CATFormat* pFmt = CATFormat::GetRegisteredFormat(iIdFmy);
CATIContainer_var spDrwCont = ispiSpecOnDrawing->GetFeatContainer(); //图纸
CATICutAndPastable *piCutAndPastableOnCont = NULL;
rc = spDrwCont -> QueryInterface(IID_CATICutAndPastable,(void**) &piCutAndPastableOnCont);
if (FAILED(rc) || NULL == piCutAndPastableOnCont)
{
return FALSE;
}
ListOfVarBaseUnknown listFromCopy;
listFromCopy.Append(ispiSpecOnSourceSheet);
ListOfVarBaseUnknown lisTarget;
lisTarget.Append(ispiSpecOnDrawing);
CATLISTV(CATBaseUnknown_var) listTargetUK = piCutAndPastableOnCont -> Paste (listFromCopy,&lisTarget,pFmt);
if(listTargetUK.Size() == 0)
{
return FALSE;
}
CATBaseUnknown *pUKOnPathElement=NULL;
rc=listTargetUK[1]->QueryInterface(IID_CATBaseUnknown, (void**)&pUKOnPathElement);
if(FAILED(rc) || pUKOnPathElement == NULL)
{
return FALSE;
}
CATPathElement *pPathElementOnTargetSheet=(CATPathElement *)pUKOnPathElement;
if(pPathElementOnTargetSheet!=NULL)
{
CATBaseUnknown *pUKOnTargetSheet=pPathElementOnTargetSheet->FindElement(IID_CATIDftSheet);
if(pUKOnTargetSheet ==NULL)
{
return FALSE;
}
ospiSpecOnTargetSheet=pUKOnTargetSheet;
if(ospiSpecOnTargetSheet == NULL_var)
{
return FALSE;
}
pPathElementOnTargetSheet->Release();
pPathElementOnTargetSheet=NULL;
}
return S_OK;
}
/////////////////////////////////////////////////////////////////////////////////////////
}
网友评论