iCAx开思工具箱
标题:
请教 如何获得"导入"和"打开"的部件的body identifer
[打印本页]
作者:
pericles
时间:
2008-10-20 15:57
标题:
请教 如何获得"导入"和"打开"的部件的body identifer
请教一个问题.我首先使用UF_PART_open打开一个已有的part,获得该part的tag.然后用UF_PART_import导入一个已有的part,获得group.接下来打算对这两个part做布尔运算,而布尔运算需要获得这两个部件的body identifer,我试了好几个函数,比如UF_PART_ask_part_tag,UF_OBJ_cycle_by_name,都不奏效,请问各位高手,该使用哪个函数来获得?
作者:
sac807
时间:
2008-10-20 16:43
首先给你要导入的Solid Body起一个名字,然后在导入后的零件中用这个名字和类型UF_solid_type去遍历他即可。
作者:
pericles
时间:
2008-10-20 22:40
谢谢sac807!
我使用了UF_OBJ_cycle_objs_in_part来试图获得"打开"和"导入"零件的BODY ID,但是不成功,请教一下是什么原因,谢谢
下面是我的代码
char part_name[132]="c:\\pump.prt";
tag_t part;
UF_PART_load_status_t error_status;
UF_PART_open(part_name,&part,&error_status);
char file_name1[] = "c:\\electrode.prt"; //导入操作的源文件
UF_import_part_modes_t modes; //导入对象时的模式设置
double dest_csys[6]; //导入后对象所处的坐标系
double dest_point[3]; //导入后确定对象位置的基准点
double scale = 1.0;
tag_t group;
modes.layer_mode = 0;
modes.group_mode = 1;
modes.view_mode = 0;
modes.plist_mode = 1;
modes.cam_mode = FALSE;
dest_csys[0] = 1; //坐标系X轴的矢量
dest_csys[1] = 0;
dest_csys[2] = 0;
dest_csys[3] = 0; //坐标系Y轴的矢量
dest_csys[4] = 1;
dest_csys[5] = 0;
dest_point[0] = 0.0; //基准点设为原点
dest_point[1] = 0.0;
dest_point[2] = 0.0;
UF_PART_import ( file_name1, &modes, dest_csys, dest_point, scale, &group );
UF_OBJ_cycle_objs_in_part(part,UF_solid_type,&pump);
UF_OBJ_cycle_objs_in_part(group,UF_solid_type,&electrode);
logical retain_target_body=TRUE;
logical retain_tool_body=TRUE;
tag_t electrode_pump_intersect;
UF_MODL_intersect_bodies_with_retained_options(pump,electrode,retain_target_body,retain_tool_body,&electrode_pump_intersect);
作者:
gao264
时间:
2008-10-24 09:43
tag_t group=NULL_TAG;再试试,看help不仔细吧,先传空指针进去
作者:
pericles
时间:
2008-11-6 23:32
tag_t group=NULL_TAG也试了```不行诶
作者:
pericles
时间:
2008-11-8 12:41
感谢gao264!
目前"打开"的部件的body_tag获得了,但是"导入"的部件的body_tag依然不行```我的思路是对于导入的部件,先用UF_GROUP_ask_group_data获得group的数据,然后再用UF_OBJ_cycle_objs_in_part 遍历,但是不行``不知道错在何处,麻烦各位高手解答下```
{
char part_name[132]="c:\\pump.prt";
tag_t part;
UF_PART_load_status_t error_status;
UF_PART_open(part_name,&part,&error_status);
char file_name1[] = "c:\\electrode.prt"; //导入操作的源文件
UF_import_part_modes_t modes; //导入对象时的模式设置
double dest_csys[6]; //导入后对象所处的坐标系
double dest_point[3]; //导入后确定对象位置的基准点
double scale = 1.0;
tag_t group = NULL_TAG;
modes.layer_mode = 0;
modes.group_mode = 1;
modes.view_mode = 0;
modes.plist_mode = 1;
modes.cam_mode = FALSE;
dest_csys[0] = 1; //坐标系X轴的矢量
dest_csys[1] = 0;
dest_csys[2] = 0;
dest_csys[3] = 0; //坐标系Y轴的矢量
dest_csys[4] = 1;
dest_csys[5] = 0;
dest_point[0] = 0.0; //基准点设为原点
dest_point[1] = 0.0;
dest_point[2] = 0.0;
UF_PART_import ( file_name1, &modes, dest_csys, dest_point, scale, &group );
tag_t pump = NULL_TAG;
tag_t electrode = NULL_TAG;
tag_t *group_members;
int count_of_members = NULL_TAG;
UF_GROUP_ask_group_data(group,&group_members,&count_of_members);
int type = UF_solid_type;
int type1 = UF_solid_type;
UF_OBJ_cycle_objs_in_part(part,type,&pump);
UF_OBJ_cycle_objs_in_part(*group_members,type1,&electrode);
logical retain_target_body=TRUE;
logical retain_tool_body=TRUE;
tag_t electrode_pump_intersect;
UF_MODL_intersect_bodies_with_retained_options(pump,electrode,retain_target_body,retain_tool_body,&electrode_pump_intersect);
}
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3