购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
工作中遇到问题需要写一个把prt格式转化成x_t或者igs格式的程序,模型中包含有片体,网上找到的程序不能包含片体,求助大神
int prt_save_as_xt(tag_t body_tag,string ps)
{
//没有后缀名时,加上后缀名
if( std::string::npos == ps.find( ".x_t" ))
ps += ".x_t";
//引用代码:Ug2Ansys.cpp 李 响, 中国地质大学( *** ) 2006.12.31
uf_list_p_t body_list;
// 获得装配树根事例root_part_occ, 当函数返回NULL_TAG时, 表明当前部件文件中没有装配(即单个部件)
tag_t root_part_occ = UF_ASSEM_ask_root_part_occ( body_tag );
VISUALSAN_NUAA_202_RUN( UF_MODL_create_list(&body_list) );
// 如果是单个部件
if(root_part_occ == NULL_TAG)
{
tag_t object = NULL_TAG;
int UF_body_type;
int type;
int subtype;
do{
VISUALSAN_NUAA_202_RUN(
UF_OBJ_cycle_objs_in_part(body_tag, UF_solid_type, &object)
);
if(object != NULL_TAG)
{
VISUALSAN_NUAA_202_RUN(
UF_OBJ_ask_type_and_subtype(object, &type, &subtype)
);
VISUALSAN_NUAA_202_RUN(
UF_MODL_ask_body_type(object, &UF_body_type)
);if(subtype != UF_solid_body_subtype)
continue;
if(UF_body_type == UF_MODL_SOLID_BODY)
{
VISUALSAN_NUAA_202_RUN(
UF_MODL_put_list_item(body_list, object)
);
break;
}
}
}while(1);
}
//如果是装配体
else
{
tag_t obj = UF_ASSEM_ask_prototype_of_occ(root_part_occ);
tag_t object = NULL_TAG;
int UF_body_type;
int type;
int subtype;
do
{
VISUALSAN_NUAA_202_RUN(
UF_OBJ_cycle_objs_in_part(body_tag, UF_solid_type, &object) );
if(object != NULL_TAG)
{
VISUALSAN_NUAA_202_RUN(
UF_OBJ_ask_type_and_subtype(object, &type, &subtype) );
// 判断body是否是一个Solid或Sheet
VISUALSAN_NUAA_202_RUN(
UF_MODL_ask_body_type(object, &UF_body_type) );
if(subtype != UF_solid_body_subtype)
continue;
if(UF_body_type == UF_MODL_SOLID_BODY)
{
// 将对象加入到链表的尾部
VISUALSAN_NUAA_202_RUN(
UF_MODL_put_list_item(body_list, object) );
}
}
else
{
break;
}
}while(1);
}
// 如果文件存在, 先删除
remove( ps.c_str() );
// 创建Parasolid文件
VISUALSAN_NUAA_202_RUN(
UF_PS_export_data(body_list, (char*)ps.c_str() ) );
// 删除链表
VISUALSAN_NUAA_202_RUN(
UF_MODL_delete_list(&body_list) );
return 0;
}