美文网首页
CATIA-V5-复制形成两个sheet

CATIA-V5-复制形成两个sheet

作者: 游在路上的鱼 | 来源:发表于2019-03-04 11:42 被阅读0次

//创建两个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;

}

/////////////////////////////////////////////////////////////////////////////////////////

}

相关文章

网友评论

      本文标题:CATIA-V5-复制形成两个sheet

      本文链接:https://www.haomeiwen.com/subject/xrbbuqtx.html