|
这个例子是清华那本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 可不可以?
非常感谢!非常感谢!!非常感谢!!! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|