找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 16682|回复: 1
打印 上一主题 下一主题

[求助] 参数化求助

[复制链接]
跳转到指定楼层
1
发表于 2011-12-21 21:13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
在做一个参数化的例子,大体的流程是,在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();

  }
}
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2012-1-11 16:31:20 | 只看该作者
spPris->ModifyEndOffset(firstLimit);
你的这个firstlimit值应该是从面板中得到的值哦~~
如果面板中的值正确得到的话,pad应该是可以更新的~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-23 09:46 , Processed in 0.026058 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表