显示catispecobject_CATIA-V5-几何体的创建

//---------------------------------------------------------------------------------------

// 创建几何体

//---------------------------------------------------------------------------------------

HRESULT SJDPulicMethodClass::CreateOrFindPRTTool(

CATIContainer* ipiCont,

CATUnicodeString& istrGSMName,

CATISpecObject_var& ospiGSMCL,

int inCreateSpeed

)

{

HRESULT rc = S_OK;

CATIPrtContainer * piPartCntOnRoot = NULL;

CATIMechanicalRootFactory* piMRFc = NULL;

CATISpecObject_var spiGSFeat = NULL_var; // 暂存的图形集

CATTry

{

// 获取Part Container

rc = ipiCont->QueryInterface(IID_CATIPrtContainer,(void**)&piPartCntOnRoot);

if (!SUCCEEDED(rc) || piPartCntOnRoot == NULL)

{

THROWAERROR("Error!");

}

// 获取顶级Part

CATISpecObject_var spPartOnRoot = piPartCntOnRoot->GetPart();

if (spPartOnRoot == NULL_var)

{

THROWAERROR("Error!");

}

CATIPartRequest_var spiReqOnPart = spPartOnRoot;

if (spiReqOnPart == NULL_var)

{

THROWAERROR("Error!");

}

CATUnicodeString uAliasName = "";

CATUnicodeString uSubString = "";

int iFindPos = 0;

int iNum = 0;

int iTempNum = 0;

if (inCreateSpeed == 0) // 不查找操作

{

// 遍历所有集合集

CATListValCATBaseUnknown_var listOfUnGS;

rc = spiReqOnPart->GetAllBodies("MfDefault3DView",listOfUnGS);

if (!SUCCEEDED(rc))

{

THROWAERROR("Error!");

}

for (int i = 1; i <= listOfUnGS.Size();i++)

{

CATIAlias_var spiAs = listOfUnGS[i];

if (spiAs == NULL_var)

{

continue;

}

uAliasName = spiAs->GetAlias();

iFindPos = uAliasName.SearchSubString(istrGSMName);

if (iFindPos != -1)

{

iTempNum = uAliasName.GetLengthInChar() - istrGSMName.GetLengthInChar();

uSubString=uAliasName.SubString(iFindPos + istrGSMName.GetLengthInChar(),iTempNum);

// 将尾数转化为数字

uSubString.ConvertToNum(&iTempNum);

if (iTempNum > iNum)

{

iNum = iTempNum;

}

}

}

}

// 如果没找到

CATUnicodeString uStrTemp = "";

if (spiGSFeat == NULL_var || inCreateSpeed == 1)

{

iNum = iNum + 1;

uStrTemp.BuildFromNum(iNum);

istrGSMName = istrGSMName + uStrTemp;

}

// 创建几何集

rc = ipiCont->QueryInterface(IID_CATIMechanicalRootFactory,(void**)&piMRFc);

if (!SUCCEEDED(rc) || piMRFc == NULL)

{

THROWAERROR("Error!");

}

spiGSFeat = piMRFc->CreatePRTTool(istrGSMName,spPartOnRoot);

if (!SUCCEEDED(rc) || spiGSFeat == NULL_var)

{

THROWAERROR("Error!");

}

ospiGSMCL = spiGSFeat;

rc = S_OK;

}

CATCatch(CATMfErrUpdate , pUpdateError){

rc = E_INVALIDARG;

}

CATCatch(CATError , pError){

rc = E_INVALIDARG;

}

CATEndTry

if (piPartCntOnRoot != NULL)

{

piPartCntOnRoot->Release();

piPartCntOnRoot = NULL;

}

if (piMRFc != NULL)

{

piMRFc->Release();

piMRFc = NULL;

}

return rc;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值