|
小弟做了个装配二次开发的程序,出了点小问题,现在急着出结果,哪位大虾能帮上忙的,不胜感激!!
问题如下:
把两个零件装配到一起,用了三个装配约束关系,定义了一个函数addmate,施加单独的装配约束均能成功
但是只要把三个装配约束加到一起,就不行了,后两个加不上去,但零件位置的确变化了。
UF_ASSEM_solve_mc和UF_ASSEM_apply_mc_data返回值也是对的,约束查看窗口里只能看到一个约束,另外从自由度上看,后朗个约束的确没加上去。
快崩溃了!!!
addmate函数的代码如下,
UF_ASSEM_init_mc (&ftf); //初始化约束关系
ftf.name=NULL;
ftf.user_name=FALSE;
ftf.suppressed=FALSE;
ftf.num_constraints=1;
ftf.constraints[0].name = NULL;
ftf.constraints[0].user_name = FALSE;
ftf.constraints[0].from_status = UF_ASSEM_ok;
ftf.constraints[0].to_status = UF_ASSEM_ok;
//约束类型
//mod by obana 20070302
ftf.constraints[0].mate_type=UF_ASSEM_v16_mate;
//自己定义的得到occ和inst的函数,测试没问题
ftf.constraints[0].from_part_occ = GetOccByName((const char*)pfrom1->text);
ftf.mated_object=GetInstByName((const char*)pfrom2->text); /////
ftf.constraints[0].to_part_occ = GetOccByName((const char*)pto1->text);
ftf.constraints[0].from = GetPrtoByName((char*)pto2->text);
ftf.constraints[0].to = GetPrtoByName((char*)pPrto->text);
ftf.constraints[0].offset = NULL_TAG;
ret=UF_ASSEM_solve_mc (&ftf, &status, &dof, transform);//条件计算
if(ret != 0)
{
UF_get_fail_message(ret,message);
UF_UI_write_listing_window("solve_mc failed!!");
UF_UI_write_listing_window("\n");
}
UF_UI_write_listing_window("solve_mc success!!");
UF_UI_write_listing_window("\n");
if (ret==0||status==UF_ASSEM_mc_solved)
{
ret=UF_ASSEM_apply_mc_data (&ftf, &struct_status, &status );//执行匹配
return TRUE;
}
else
return FALSE; |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|