iCAx开思工具箱
标题:
哎,都试了N个函数都不行,大家帮我看看啊
[打印本页]
作者:
Jkklk
时间:
2008-7-17 17:18
标题:
哎,都试了N个函数都不行,大家帮我看看啊
对装配件中的根部件进行旋转、平移操作,采用如下两个函数获得根部件的tag_t标识:
tPrtWork = UF_ASSEM_ask_work_part();
tPrtRootOcc = UF_ASSEM_ask_root_part_occ(tPrtWork);
将tag_t标识 tPrtRootOcc ,输入到函数:uf5947(TransMatrix, &tPrtRootOcc , &ip_3, &ip_4, &ip_5, &ip_6, &nr_7, &nr_8, &ir_9);
结果操作不成功,显示内存冲突,请问高手咋回事呢,不胜感激啊!
作者:
dianzi24
时间:
2008-7-18 09:55
用uf5947平移没问题,我用过多次。看看和消参有没有关系,是不是你那tag_t对象本身不能移动啊?
作者:
Jkklk
时间:
2008-7-18 12:34
标题:
回复 2楼 dianzi24 的帖子
多谢dianzi24的提示,不过我修改了uf5947函数里面的参数,还是不能进行操作。根部件就是一个完整的体,不知可否能用。方便的话,能把您的那段代码发我看看吗!
作者:
dianzi24
时间:
2008-7-18 13:03
double matrix[16];
double length[3];
int copyFlag=1, layer=-1, curveFlag=2, rtState;
tag_t nr7,nr8;
length[0] = 100;
length[1] = 200;
length[2] = 300;
FTN(uf5943)(length,matrix);
FTN(uf5947)(matrix, parts, &number_part, ©Flag, &layer, &curveFlag, &nr7, &nr8, &rtState);
其中parts是tag_p_t,我平移的体是创建的、选择的,以及用函数从另一个part文件里导入的体都没问题。
number_part是数量
还有我是说你要移动的体是不是没消参那?
作者:
Jkklk
时间:
2008-7-18 14:16
标题:
回复 4楼 dianzi24 的帖子
很感谢楼上的,下面是我的一段程序。用如下两个函数获得根部件的tag_t:tagRootPart ,再通过函数UF_ASSEM_ask_part_occ_children(tagRootPart, &Children);,获得其唯一子部件的tag_t。
tagCurrentPart = UF_PART_ask_display_part();
tagRootPart = UF_ASSEM_ask_root_part_occ( tagCurrentPart );
tag_t* Children = NULL;
iChildCount = UF_ASSEM_ask_part_occ_children(tagRootPart, &Children);
uc1601("移动部件一段距离。", TRUE);
double LinerDelt[3] = {0, 0, 150};
double TransMatrix[16];
uf5943(LinerDelt, TransMatrix); //获得平移矩阵
int ip_3=1, ip_4=1, ip_5=-1, ip_6=2;
tag_t nr_7, nr_8;
int ir_9;
uf5947(TransMatrix, Children &ip_3, &ip_4, &ip_5, &ip_6, &nr_7, &nr_8, &ir_9);
执行函数uf5947时,第二个参数用Children(其为tag_p_t类型的)代入,如上所示,可以移动该子部件。
如果将第二个参数换为:&tagRootPart (也是tag_p_t类型的)(即为:uf5947(TransMatrix, & &tagRootPart , ip_3, &ip_4, &ip_5, &ip_6, &nr_7, &nr_8, &ir_9);),就不能执行移动操作,显示内存冲突,能帮我看看什么问题吗?是不是根部件的tag_t有错误?
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3