找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

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

如何使用CATIMechanicalRootFactory创建特征!

[复制链接]
跳转到指定楼层
1
发表于 2010-3-16 14:47:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
HRESULT rc;
   
CATFrmEditor * pEditor   = GetEditor();
if (NULL == pEditor)
{
  return;
}
   
CATDocument *pDoc = pEditor->GetDocument();
if (NULL == pDoc)
{
  return;
}
   
CATInit *spInitOnDoc = NULL;
rc = pDoc -> QueryInterface (IID_CATInit, (void**) &spInitOnDoc);
if (E_NOINTERFACE == rc)
{
  Notify("NoCATInit");
  return;
}
CATIPrtContainer *pIPrtCont = NULL ;
pIPrtCont = (CATIPrtContainer*)
  spInitOnDoc->GetRootContainer("CATIPrtContainer");
if (NULL == pIPrtCont )
{
  return;
}
  CATISpecObject_var spSpecObjectOnPart = pIPrtCont->GetPart();
if (NULL_var == spSpecObjectOnPart)
{
  return;
}

CATIMechanicalRootFactory *pIMechanicalRootFactoryOnPart = NULL ;
rc = spSpecObjectOnPart->QueryInterface(IID_CATIMechanicalRootFactory,
  (void**)&pIMechanicalRootFactoryOnPart);
if (SUCCEEDED(rc ))
{
  Notify("SUCCEEDED");
}
else if (E_FAIL == rc )
{
  Notify("E_FAIL == tc");
  return;
}
else if(E_NOINTERFACE == rc )
{
  Notify("E_NOINTERFACE == rc ");
  return;
}

在创建一个新的MechanicalTool Feature或者是Geometrical Set时,要用到CATIMechanicalRootFactory 接口,但按照上面的代码,总显示接口不存在!不知是什么原因,但可以通过CATIDesendants获得MechanicalPart下面的特征!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2010-3-22 10:18:59 | 只看该作者
楼主可以尝试一下
CATIPrtContainer *pIPrtCont = NULL ;
pIPrtCont = (CATIPrtContainer*)   spInitOnDoc->GetRootContainer("CATIPrtContainer");
if (NULL == pIPrtCont )
{
  return;
}

CATIPrtPart_var spPrtPart( pIPrtCont->GetPart() );

再可以将它直接付给CATIMechanicalRootFactory
CATIMechanicalRootFactory_var  spMechanicalRootFactoryOnPart = spPrtPart;
再用spMechanicalRootFactoryOnPart 来创建特征。我这样实现过,楼主可以试试
3
发表于 2010-3-22 15:49:41 | 只看该作者
我程序里面的rc = spSpecObjectOnPart->QueryInterface(IID_CATIMechanicalRootFactory,
  (void**)&pIMechanicalRootFactoryOnPart);
这段程序改为rc = pIPrtCont->QueryInterface(IID_CATIMechanicalRootFactory,
  (void**)&pIMechanicalRootFactoryOnPart);
就可以了,还是谢谢你哈!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-26 04:45 , Processed in 0.021698 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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