iCAx开思网

标题: UG OPEN API 啊,大家帮帮忙! [打印本页]

作者: chengcheng82    时间: 2006-11-28 20:27
标题: UG OPEN API 啊,大家帮帮忙!
这个例子是清华那本UG/OPEN API 编程基础最后的那个联合开发的例子。我简化一下如下:
tag_t   tooltag;

int CYLINDER_cylinder_action_create_tool_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)       //建模的控件的回调函数
{
                     tag_t instance;
        tag_t displayed_part;
        tag_t root_tag;
        displayed_part=UF_PART_ask_display_part();//获得当前显示的零件的ID 如果没有显示部件,则返回NULL_TAG
root_tag=UF_ASSEM_ask_root_part_occ(displayed_part);//获取根节occurence的tag,如果没有根节点,则返回NULL—TAG
ret=UF_ASSEM_create_component_part(displayed_part,"c:\\tmp\\verifytoolstool.prt",
        "","verifytool",1,0,csys_origin,matrix_values,0,NULL,&instance)         //在displayed_part下建立一个部件,并据此函数得到此关系的instance.
........
........    //建立一个圆柱体

tag_t target=UF_ASSEM_ask_part_occ_of_inst(root_tag,instance);
tooltag=target;

}

int CYLINDER_cylinder_action_position_tool_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)//定位的回调函数
{
tag_t member=NULL_TAG;
int ret=UF_OBJ_cycle_objs_in_part(UF_ASSEM_ask_prototype_of_occ(tooltag),
                 UF_solid_type,&member);
......
......
}
说明此程序中有两个控件的回调函数,一个建模,另一个随后进行定位,条件是点击两个控件之前,视图中已经存在一个装配!即:存在根节点。对话框如图所示。
问题:在定位函数中,为何UF_OBJ_cycle_objs_in_part()函数执行不了,已经查出是由于第一个参数UF_ASSEM_ask_prototype_of_occ(tooltag)的原因。
另外,我还想问一下,UF_OBJ_cycle_objs_in_part()的第一个参数一定要prototype 的tag么?occurance的tag 可不可以?

非常感谢!非常感谢!!非常感谢!!!
作者: missing914    时间: 2006-11-28 21:59
www.cadway.org问问,那边高手较多,我有问题也是那边帮解决的!
作者: chengcheng82    时间: 2006-11-29 11:55
我从昨晚到现在两顿饭没吃了,大家不要见死不救啊!!!
作者: vodka    时间: 2006-11-29 13:52

原帖由 missing914 于 2006-11-28 21:59 发表
www.cadway.org问问,那边高手较多,我有问题也是那边帮解决的!

最SB 的就是这种托儿,自己没点斤两,还显得很有领导才能似的,物尽其才,回家看孩子去吧
作者: ghmirist    时间: 2006-11-29 14:30
不可以用occurance的tag 。
作者: ghmirist    时间: 2006-11-29 14:32
因为这个函数用途是在一个文件内找对象,occurance只是装配中对文件的引用。
作者: chengcheng82    时间: 2006-11-29 17:44
楼上的你好,按照你的说法,那这程序应该是没有错啊,我就是用UF_ASSEM_sak_prototype_of_occ(tooltag)来得到tootag的prototype 的tag啊,可是程序就是到这里就停止了,麻烦你,再帮我看看,多谢!!!
作者: 风一样的我    时间: 2006-11-29 19:09
顶你!
作者: missing914    时间: 2006-11-29 19:28
妈的,我倒是好心,想帮你们解决问题,我拖什么啊,他们给我钱啊!
听不听随便你们吧!
真是狗咬吕洞宾不识好人心!
作者: chengcheng82    时间: 2006-11-29 20:05
missing 别生气嘛,vodka 也别生气哦,大家还不都是 为了解决问题,是吧:)
在ghmirist的提醒下,我想我已经发现问题了,就是因为UF_OBJ_cycle_objs_in_part()需要在一个文件中去执行,而这个程序中ret=UF_ASSEM_create_component_part(displayed_part,"d:\5.prt",
                        "","verifytool",1,0,csys_origin,matrix_values,0,NULL,&instance);
虽然在displayed_part下建立了一个部件,但是并没有在windows下建立一个文档来储存新建立的这个部件。导致函数无法执行!

问题已经找到,现在正在解决中,期待大家的高见:)
多谢!
作者: chengcheng82    时间: 2006-12-4 18:57
已搞定,原来是创建部件的参数问题。终于可以睡个安稳觉了!




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