点击查看详细介绍

UF_MODL_update_all_features() 函数的参数解释说明、函数详细用法,以及实例代码演示

misnn 7年前 1476 0

购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008  QQ号:85585969  


函数结构:
UF_MODL_update_all_features
函数说明:
日志当前工作部分的NX更新列表的所有功能,然后执行更新。您可以使用此功能检查是否所有在一个部分的特征可以在不修改的部分进行更新。 这个功能是UF_MODL_update,这将更新修改的对象和不同只有依赖对象。 UF_MODL_update_all_features返回零值如果成功完成更新。它返回错误代码UF_MODL_ERR_PENDING_UPDATE,如果它检测到该模型已被修改并相应的更新尚未执行。它也将返回错误第一个遇到的故障码,应在更新失败。

UF_MODL_update_all_features函数实例代码演示:
该示例程序执行以下操作:打开它在命令行中指定为零件文件输入参数。获取现有的抑制功能,更新前的清单。定义更新失败选项设置为“禁止”。呼吁UF_MODL_update_all_features更新所有功能的开口部分。恢复更新失败选项恢复为默认选项(撤消)。再次获取抑制名单。检查是否有更新过程中抑制任何功能,并打印出的姓名,如果有的话。这个程序可以被修改,以尽快中止更新过程检测到第一更新失败。如果你愿意,你可以删除码之前,并调用后调用UF_MODL_set_fail_optionUF_MODL_update_all_features。该系统采用“撤消”为默认情况下,如果更新失败而中止更新。
[quote]
#include <uf.h>
#include <uf_defs.h>
#include <uf_undo.h>
#include <uf_part.h>
#include <uf_modl.h>
#include <uf_modl_error.h>
static int get_args(int argc, char **argv, char *part_name);
static void do_it( void );
extern int main(int argc, char **argv)
{
int err,is_suppressed ;
char partname[MAX_FSPEC_SIZE+1] ;
char *feat_name ;
tag_t part_tag,feature_tag ;
UF_PART_load_status_t open_status ;
uf_list_p_t face_list ;
/*
Get input arguments.
*/
err = get_args(argc,argv,partname) ;
if (!err)
{
err = UF_initialize();
printf("Open part file %s...\n", partname );
err = UF_PART_open(partname,&part_tag,&open_status);
if (err != 0)
{
printf(">>>Could not open %s\n", partname);
UF_terminate();
return (1);
}
do_it();
err = UF_terminate();
}
}
static int get_args(int argc, char **argv, char *part_name)
{
if(argc !=2)
{
part_name[0] = '\0';
printf("\nThis program requires a part file name as input.\n");
printf("The syntax for this program is as follows:\n\n");
printf("\t%s <part_name>\n", argv[0]);
return(1);
}
else if ((strlen (argv[1])) > MAX_FSPEC_SIZE)
{
printf("Error: File name is too long.");
return(1);
}
else
{
strcpy(part_name, argv[1]);
return(0);
}
}
static int ask_suppressed_features(
uf_list_p_t *feature_list )
{
int count = 0;
UF_MODL_ask_suppress_list( feature_list );
UF_MODL_ask_list_count( *feature_list, &count );
return count;
}
/*
* Subtract list_one from list_two
* and print the left
*/
static void print_new_suppressed_features(
uf_list_p_t list_one,
uf_list_p_t list_two )
{
int i, j;
int count_one = 0, count_two = 0;
if ( list_two != 0 )
UF_MODL_ask_list_count( list_two, &count_two );
if ( list_one != 0 )
UF_MODL_ask_list_count( list_one, &count_one );
for ( i = 0; i < count_two; i++ )
{
tag_t item_in_list_two;
logical pre_suppressed ;
pre_suppressed = FALSE;
UF_MODL_ask_list_item( list_two, i, &item_in_list_two );
for ( j = 0; j < count_one; j++)
{
tag_t item_in_list_one;
UF_MODL_ask_list_item( list_one, j, &item_in_list_one);
if ( item_in_list_one == item_in_list_two )
{
pre_suppressed = TRUE;
break;
}
}
if ( !pre_suppressed )
{
char *feat_name;
UF_MODL_ask_feat_name( item_in_list_two, &feat_name );
printf(" %s\n", feat_name );
UF_free( feat_name );
}
}
}
static void do_it( void )
{
uf_list_p_t pre_suppress_list = 0,
suppress_list = 0;
int error;
int pre_suppressed_count = 0;
int suppressed_count = 0;
printf("Ask if the part has existing suppressed features\n");
pre_suppressed_count = ask_suppressed_features( &pre_suppress_list);
printf(">>>Suppressed feature count is %d\n", pre_suppressed_count );
printf("Set update failure option to Suppress\n");
error = UF_MODL_set_update_fail_option (UF_MODL_UPDATE_SUPPRESS);
printf("Update all features in the current part...\n");
error = UF_MODL_update_all_features();
if (error == 0)
{
printf(">>>No update failure detected for features\n");
}
else
{
char msg_buffer[133] = { 0 } ;
printf(">>>*****Some feature(s) failed to update. Please examine syslog file for details\n");
UF_get_fail_message(error, msg_buffer);
printf("The update failure message is\n %s\n", msg_buffer);
printf("Ask again the suppressed features\n");
suppressed_count = ask_suppressed_features( &suppress_list);
printf(">>>Suppressed feature count is %d\n", suppressed_count );
if ( suppressed_count > pre_suppressed_count )
{
printf("The following features were suppressed during update:\n");
print_new_suppressed_features( pre_suppress_list, suppress_list );
}
else
printf(">>>*****Suppressed feature count reduced!!! Update result is incorrect.\n");
UF_MODL_delete_list( &suppress_list );
}
UF_MODL_delete_list( &pre_suppress_list );
printf("Restore update failure option\n");
UF_MODL_set_update_fail_option (UF_MODL_UPDATE_NO_OPTION);
}




[/quote]

0

最新回复 (0)
请登录后发表新帖