iCAx开思网

标题: 请教 装配环境下 二次开发 替换部件引用集的做法 [打印本页]

作者: fewkey    时间: 2008-11-12 12:27
标题: 请教 装配环境下 二次开发 替换部件引用集的做法
小弟用C语言在做批量裁剪螺钉孔的工具,也就是把一块板上的安装螺钉孔 一次性 全部布尔减运算,但是在批量替换螺钉引用集的时候遇到了问题,不知道怎么做了,下面是帮助文档上的例子,用了一下,怎么不好使呢,螺钉的引用集都没替换。请各位大哥教一下,谢谢了!
#include <uf.h>
#include <uf_assem.h>
/*---------------------------------------------------------------*/
/*ARGSUSED*/
extern void  ufusr(char *def, int *ret_code, int retlen)  
{  tag_t displayed_part = NULL_TAG;   
   UF_initialize();   
   displayed_part = UF_PART_ask_display_part();   
   if (displayed_part != NULL_TAG)     
     { tag_t   cset;        
       UF_ASSEM_ask_all_comp_cset(displayed_part, &cset);      
       if (cset != NULL_TAG)         
         { UF_ASSEM_set_ref_set_by_cset(cset, "SOLID");         
         }        
     }   
    UF_terminate();
}

[ 本帖最后由 fewkey 于 2008-11-12 12:33 编辑 ]
作者: fewkey    时间: 2008-11-12 12:35
顺便请各位大哥讲一下这个工具的整体思路哈。

这个是我的思路,欢迎批评指正,请不吝赐教。

程序思路:

[ 本帖最后由 fewkey 于 2008-11-26 11:32 编辑 ]
作者: fewkey    时间: 2008-11-13 08:45
高手在哪呢?
作者: cam-yp    时间: 2008-11-13 08:59
引用集没有换,可能是TAG没有找对
作者: fewkey    时间: 2008-11-13 17:43
做成功了一下,但是 cset 好像只能创建到 display part ,用root=UF_ASSEM_ask_root_part_occ(display part)求得装配根结点之后,不能创建到root下,就是用的这个函数UF_ASSEM_create_cset(root,cset_name,&cset)。

还有cset创建了成功了之后,执行一次替换引用集可以,再执行的话,如果是同样的cset_name就创建不了了,替换引用集也就失败了。请问怎么样把这个cset删掉,或者清空cset里面的所有部件?

请不吝赐教啊!!!!!
作者: cam-yp    时间: 2008-11-14 08:16
free不可以吗?
作者: fewkey    时间: 2008-11-14 08:59
用UF_free(cset)不行啊,参数的类型不对,还有没有其他的方法?

[ 本帖最后由 fewkey 于 2008-11-14 09:01 编辑 ]
作者: fewkey    时间: 2008-11-14 20:59
终于在一个例子里发现了,cset是一个object,要用UF_OBJ_delete_object(cset)把它删掉,就OK了。

现在问题又出来了。
有UF_CLEAR_set_obj_list()这个函数时,我通过UF_ASSEM_ask_part_occ_children遍历得到的是part occur,而函数要的参数是object tag,怎么转换一下。
作者: fewkey    时间: 2008-11-22 21:37
到今天为止,整个功能算是做完了,也实现了我要求的功能。程序思路也是上面说的,做完这一套之后,感觉还真是学会了好多东西。
不知是论坛上的高手太少,还是大家都不说,提个问题等几天都没人回答。罢了,还是自己慢慢摸索吧。




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3