找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 16804|回复: 5
打印 上一主题 下一主题

[求助] 请教 如何获得"导入"和"打开"的部件的body identifer

[复制链接]
跳转到指定楼层
1
发表于 2008-10-20 15:57:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
请教一个问题.我首先使用UF_PART_open打开一个已有的part,获得该part的tag.然后用UF_PART_import导入一个已有的part,获得group.接下来打算对这两个part做布尔运算,而布尔运算需要获得这两个部件的body identifer,我试了好几个函数,比如UF_PART_ask_part_tag,UF_OBJ_cycle_by_name,都不奏效,请问各位高手,该使用哪个函数来获得?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2008-10-20 16:43:43 | 只看该作者
首先给你要导入的Solid Body起一个名字,然后在导入后的零件中用这个名字和类型UF_solid_type去遍历他即可。
3
发表于 2008-10-20 22:40:10 | 只看该作者
谢谢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);
4
发表于 2008-10-24 09:43:31 | 只看该作者
tag_t   group=NULL_TAG;再试试,看help不仔细吧,先传空指针进去
5
发表于 2008-11-6 23:32:58 | 只看该作者
tag_t   group=NULL_TAG也试了```不行诶
6
发表于 2008-11-8 12:41:34 | 只看该作者
感谢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);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-1 08:17 , Processed in 0.025404 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表