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

iCAx开思网

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

CAA如何得到对象的CATPathElement

[复制链接]
跳转到指定楼层
1
发表于 2005-8-24 14:05:38 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
    我在做批处理时想直接得到对象的CATPathElement而不是它本身如下面图里的点线,应该用什么函数。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
10
发表于 2005-8-26 12:05:06 | 只看该作者
acoka给的是标准答案。
  
CATPathElement( const CATBaseUnknown*  iObject = NULL )  地说明理由这样的字样:
iObject  
the object which will be the first object of the path
因此它只能生成一个以本Object为root的Path,是不符合要求的。
是我搞错了,对不起!
其实acoka这里的source我也有的,很长时间不用。。。给忘了
这里看到了才觉得眼熟,呵呵
Sorry to liuruixiao205
9
发表于 2005-8-26 10:21:58 | 只看该作者
CATPathElement* WSHCmdUtil::ExtractPathElement( CATBaseUnknown* ipObject )
{
  
  HRESULT rc = S_OK;
  CATPathElement* pPathElement = NULL;
  do {
    if( !ipObject ) {
      break;
    }
    CATIBuildPath* pBuildPath = NULL;
    {
      rc = ipObject->QueryInterface(
      IID_CATIBuildPath,
      (void**)[$pBuildPath)]
      if(FAILED(rc)){
        break;
      }
    }
  
    CATPathElement activePath = CATFrmEditor::GetCurrentEditor()->GetUIActiveObject();
    rc = pBuildPath->ExtractPathElement([$activePath,&pPathElement)]
    {
      if(!!pBuildPath){
        pBuildPath->Release();
        pBuildPath = NULL;
      }
      if(FAILED(rc) || !pPathElement){
        break;
      }
    }
  
    } while(0);
  
  if(FAILED(rc)){
    pPathElement = NULL;
  }
  
  return pPathElement;
}
8
发表于 2005-8-25 14:59:02 | 只看该作者
给你发了,还没有收到回信。
也许我的信箱被163屏蔽了。
好像我从来没有成功的发给163信箱过。
7
发表于 2005-8-25 13:14:08 | 只看该作者
saeba兄
我的程序还是有问题,能不能帮我看看,可以给我你的邮箱吗?或者QQ也行。
我的邮箱lrxhello@163.com.可以发到我的邮箱里
6
发表于 2005-8-24 21:36:23 | 只看该作者
对,是得到1。
非常感谢,saeba兄。我试试。有问题再向你请教。
5
发表于 2005-8-24 15:36:45 | 只看该作者
看了你的source有点糊涂了。。。
你是要得到(1)那些点,线的PathElement还是(2)某个UIActivate的PathElement中的元素?
  
如果是(1),
对“零部件集合体”QueryInterface CATIDecendants然后用GetAllChildren()得到“零部件集合体”下面所有的点和线,然后对他们每一个,用CATPathElement( const CATBaseUnknown* iObject = NULL ) 就得到了他们的CATPathElement.
  
如果是(2),
使用你的source.
比如说“零部件集合体”是UIActivate的情况下,它的CATPathElement中的内容就是类似:[Part1\零部件集合体],size为2
[1]Part1
[2]零部件集合体
  
但是我怀疑你是不是想要得是(1)。。。
4
发表于 2005-8-24 15:10:41 | 只看该作者
saeba 试过吗?我试试。我本来用CATIBuild来build一个的,交互没问题,可是一做批处理就出错,
3
发表于 2005-8-24 15:08:11 | 只看该作者
  //call GetRootContainer() to return the root element of the given document  
  CATFrmEditor * pEditor =CATFrmEditor::GetCurrentEditor();
  if ( NULL != pEditor )  
  {  
      CATPathElement path = pEditor->GetUIActiveObject();
      int  j=path.GetSize();
      int i=0;
   for (i=0;i<j;i++)
   {
        //CATLine *Line;
        CATBaseUnknown   * _pActiveObject ;
              _pActiveObject=path;
        CATISpecObject *_pUIActiveObject;
     if ( NULL != _pActiveObject )
     {      
      rc = _pActiveObject->QueryInterface(IID_CATISpecObject, (void**)[$_pUIActiveObject)]
我想这样来得到对象,需要用CATPathElement时,就可以直接用里面的path[size],可是连对象都找不到。
2
发表于 2005-8-24 14:22:21 | 只看该作者
是从Feature object得到CATPathElement吗?
直接用CATPathElement的构造函数就可以了吧:
  
CATPathElement  
public CATPathElement( const CATBaseUnknown*  iObject = NULL )   
  
Constructs the class from an object.  
Parameters:  
iObject  
the object which will be the first object of the path. Notice that one  
CATBaseUnknown.AddRef is done on this object.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-24 07:39 , Processed in 0.025627 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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