iCAx开思工具箱
标题:
参数化求助
[打印本页]
作者:
cwk_seu
时间:
2011-12-21 21:13
标题:
参数化求助
在做一个参数化的例子,大体的流程是,在catia窗口打开一个三维零件(只有两个拉伸凸台特征,其中拉伸高度是想参数化的尺寸),通过菜单调出对话框,在对话框里输入两个拉伸凸台的高度值,点击确定完成模型更新,现在程序编译和运行都没问题,但是功能实现不了,模型不能更新,整了好几天没搞定,非常郁闷,求高手指点迷经!!
确定按钮响应函数程序如下(蓝色部分是参数赋值程序):
void TestDialog::OnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
// Add your code here
//获取当前零件文档
HRESULT rc=E_FAIL;
CATDocument * pDocument=NULL;
CATFrmEditor* pEditor=CATFrmEditor::GetCurrentEditor();
if(NULL!=pEditor)
{
pDocument=pEditor->GetDocument();
CATInit *pInitOnDoc=NULL;
rc = pDocument->QueryInterface(IID_CATInit,(void**)&pInitOnDoc);
//获取零件的根容器
CATIPrtContainer *pIPrtCont = NULL;
pIPrtCont=(CATIPrtContainer *)pInitOnDoc->GetRootContainer("CATIPrtContainer");
//获取零件设计特征
CATISpecObject_var spSpecObjectPart = pIPrtCont->GetPart();
if (NULL_var != spSpecObjectPart)
{
//零件特征遍历
CATIDescendants * pIDescendants = NULL;
rc = spSpecObjectPart->QueryInterface(IID_CATIDescendants,(void**)&pIDescendants);
if (SUCCEEDED(rc))
{
CATLISTV (CATISpecObject_var) List ;
pIDescendants->GetAllChildren("
CATIPad
",List);
double firstLimit ; // First and second limits of the pad
double secondLimit = 0.;
CATMathDirection dirY(0., 1., 0.);
//第一个参数改变
CATIPad_var spPrism(List[0]);
firstLimit = _pL1Editor->GetValue();
spPrism->ModifyDirection(dirY);
spPrism->ModifyEndType(catOffsetLimit);
spPrism->ModifyEndOffset(firstLimit);
spPrism->ModifyStartType(catOffsetLimit);
spPrism->ModifyStartOffset(secondLimit);
//第二个参数改变
CATIPad_var spPris(List[1]);
firstLimit = _pL2Editor->GetValue();
spPris->ModifyDirection(dirY);
spPris->ModifyEndType(catOffsetLimit);
spPris->ModifyEndOffset(firstLimit);
spPris->ModifyStartType(catOffsetLimit);
spPris->ModifyStartOffset(secondLimit);
//更新模型
spSpecObjectPart->Update();
}
}
}
}
作者:
linlily0925
时间:
2012-1-11 16:31
spPris->ModifyEndOffset(firstLimit);
你的这个firstlimit值应该是从面板中得到的值哦~~
如果面板中的值正确得到的话,pad应该是可以更新的~~
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3