UF_UGMGR_validate_part_rev() 函数的参数解释说明、函数详细用法,以及实例代码演示
购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
函数结构:
UF_UGMGR_validate_part_rev
(
const char part_num [ UF_UGMGR_PARTNO_BUFSIZE ],
const char part_rev [ UF_UGMGR_PARTREV_BUFSIZE ],
const char * part_type,
char modified_part_num [ UF_UGMGR_PARTNO_BUFSIZE ],
char modified_part_rev [ UF_UGMGR_PARTREV_BUFSIZE ],
UF_UGMGR_partno_status_t * status
)
函数说明:
验证选择了一个新的零件的零件号和修订标识符修订。此功能可以拒绝提供识别,接受他们或修订。该行动体现在状态的值。此功能呼叫中心团队工程用户出口功能USER_validate_item_rev_id()执行验证。用户出口定义什么是数字的有效组合和修改,并根据其实施可以采取类型的部分考虑在内。缺省短线与团队中心工程作为供应的一部分的行为用户出口库总是返回USER_valid_id的状态,与输出参数modified_item_id和modified_rev_id设置为一个空字符串。实际上,这表示无条件接受的用户输入。
函数参数:
第1个参数为输入:
输入const char 字符类型的参数,参数的变量格式为part_num [ UF_UGMGR_PARTNO_BUFSIZE ],零件号。声明与数组大小UF_UGMR_PARTNO_SIZE+1这个参数。
第2个参数为输入:
输入const char 字符类型的参数,参数的变量格式为part_rev [ UF_UGMGR_PARTREV_BUFSIZE ],一部分修改。声明与数组大小UF_UGMR_PARTREV_SIZE+1这个参数。
第3个参数为输入:
输入const char * 字符类型的参数,参数的变量格式为part_type,部分类型的编号,版本正在验证。
第4个参数为输出:
输出char 字符类型的参数,参数的变量格式为modified_part_num [ UF_UGMGR_PARTNO_BUFSIZE ],修改的部分号码。未设置如果没有修改。
第5个参数为输出:
输出char 字符类型的参数,参数的变量格式为modified_part_rev [ UF_UGMGR_PARTREV_BUFSIZE ],修改的部分修订。未设置如果没有修改。
第6个参数为输出:
status代表参数变量,UF_UGMGR_partno_status_t * 为输出参数类型,说明枚举代码,UF_UGMGR_partno_valid - 接受UF_UGMGR_partno_invalid - 拒绝UF_UGMGR_partno_modified - 输入修改。
UF_UGMGR_validate_part_rev函数实例代码演示:
[quote]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <uf.h>
#include <uf_ugmgr.h>
#include <uf_part.h>
#include <uf_assem.h>
#define METRIC 1
#define ENGLISH 2
#define CHECK( func_ ) \
{ int ifail_ = 0; \
char message[133]; \
ifail_ = (func_); \
if ( ifail_ != 0 ) { \
UF_get_fail_message( ifail_, message ); \
printf("ERROR: %s returned from %s\n", message, # func_); \
return ifail_; } }
static int create_new_part_auto( void );
static int create_new_part_semi_auto( void );
static int create_new_part_manual( void );
static int print_work_part_info( void );
int main(int argc, char *argv[])
{
int ifail = 0;
ifail = UF_UGMGR_initialize(argc,(const char**)argv);
if (ifail != 0)
{
printf("ERROR: Failed to initialize with error code %d\n", ifail);
exit(1);
}
printf("\n");
printf("Auto assignment of part number\n");
printf("==============================\n\n");
create_new_part_auto();
print_work_part_info();
printf("Semi-auto assignment of part number\n");
printf("===================================\n\n");
create_new_part_semi_auto();
print_work_part_info();
printf("Manual assignment of part number\n");
printf("================================\n\n");
create_new_part_manual();
print_work_part_info();
UF_PART_close_all();
UF_UGMGR_terminate();
return 0;
}
static int create_new_part_auto( void )
{
char part_num[UF_UGMGR_PARTNO_SIZE+1];
char part_rev[UF_UGMGR_PARTREV_SIZE+1];
char* part_file_type = "master";
char* part_file_name = "";
char encoded_name[MAX_FSPEC_SIZE + 1];
char* part_type = "Item";
tag_t part_tag;
logical modifiable;
/* Get an authorized new part number and revision from the system. */
CHECK(UF_UGMGR_assign_part_number( "", part_type, part_num, &modifiable));
CHECK(UF_UGMGR_assign_part_rev( "", part_type, part_rev, &modifiable));
printf("System has assigned part identifiers:\n");
printf(" Number: %s\n", part_num );
printf(" Revision: %s\n", part_rev );
printf("\n");
/* Encode the number and revision into a UG/Manager part filename. */
CHECK(UF_UGMGR_encode_part_filename( part_num, part_rev, part_file_type,
part_file_name, encoded_name));
printf("Encoded UG/Manager part filename...\n");
CHECK(UF_PART_new( encoded_name, METRIC, &part_tag));
CHECK(UF_PART_save());
printf("Saved part...\n");
return 0;
}
static int create_new_part_semi_auto( void )
{
char basis_part_num[UF_UGMGR_PARTNO_SIZE+1];
char part_num[UF_UGMGR_PARTNO_SIZE+1];
char part_rev[UF_UGMGR_PARTREV_SIZE+1];
char* part_file_type = "master";
char* part_file_name = "";
char encoded_name[MAX_FSPEC_SIZE + 1];
char* part_type = "Item";
tag_t part_tag;
logical modifiable;
/* Get a basis new part number from the user */
printf( "Enter a part number to base the new number on: ");
scanf( "%s", basis_part_num );
/* Get a new part number based on user's input.
* Actual number returned depends on the implementation of the
* IMAN user exit USER_new_item_id(). The default routine ignores
* basis_part_num if no part exists in the database with this
* number. Otherwise a numerical suffix is appended if
* basis_part_num ends in a non-numeric character, or the
* numerical suffix is incremented until the part number does not
* clash with any number already in use in the database.
*/
CHECK(UF_UGMGR_assign_part_number( basis_part_num, part_type, part_num,
&modifiable));
CHECK(UF_UGMGR_assign_part_rev( "", part_type, part_rev, &modifiable));
printf("System has assigned part identifiers:\n");
printf(" Number: %s\n", part_num );
printf(" Revision: %s\n", part_rev );
/* Encode the number and revision into a UG/Manager part filename. */
CHECK(UF_UGMGR_encode_part_filename( part_num, part_rev, part_file_type,
part_file_name, encoded_name));
printf("Encoded UG/Manager part filename...\n");
CHECK(UF_PART_new( encoded_name, METRIC, &part_tag));
CHECK(UF_PART_save());
printf("Saved part...\n");
return 0;
}
static int create_new_part_manual( void )
{
char part_num[UF_UGMGR_PARTNO_SIZE+1];
char part_rev[UF_UGMGR_PARTREV_SIZE+1];
char amended_part_num[UF_UGMGR_PARTNO_SIZE+1];
char amended_part_rev[UF_UGMGR_PARTREV_SIZE+1];
char* part_file_type = "master";
char* part_file_name = "";
char encoded_name[MAX_FSPEC_SIZE + 1];
tag_t part_tag;
logical modifiable;
int retcode = 0;
UF_UGMGR_partno_status_t validity;
/* Get new part number and revision from the user */
printf( "Enter part number: ");
scanf( "%s", part_num );
printf( "Enter revision id: ");
scanf( "%s", part_rev );
printf("User selected part identifiers:\n");
printf(" Number: %s\n", part_num );
printf(" Revision: %s\n", part_rev );
/* Check that the user input does not violate in-house standards.
* Do this by calling the validate function which in turn calls the
* IMAN user exit USER_validate_part_rev.
*/
CHECK(UF_UGMGR_validate_part_rev( part_num, part_rev, "",
amended_part_num, amended_part_rev,
&validity ));
switch (validity)
{
case UF_UGMGR_partno_valid:
printf( "User selected number OK.\n");
break;
case UF_UGMGR_partno_invalid:
printf( "User selected number not OK.\n");
retcode = 1;
break;
case UF_UGMGR_partno_modified:
printf( "Chosen part identifier modified. Use that instead.\n");
strcpy( part_num, amended_part_num );
strcpy( part_rev, amended_part_rev );
printf( "Modified part identifiers:\n");
printf( " Number: %s\n", part_num );
printf( " Revision: %s\n", part_rev );
break;
default:
printf( "Unexpected return code while validating part numbers.\n");
printf( "WARNING: The chosen values will be used but they may\n");
printf( " not be valid.\n");
break;
}
if (retcode == 0)
{
/* Encode the number and revision into a UG/Manager part filename. */
CHECK(UF_UGMGR_encode_part_filename( part_num, part_rev,
part_file_type,
part_file_name,
encoded_name ));
printf("Encoded UG/Manager part filename...\n");
CHECK(UF_PART_new( encoded_name, METRIC, &part_tag));
CHECK(UF_PART_save());
printf("Saved part...\n");
}
return retcode;
}
static int print_work_part_info( void )
{
char work_part_name[MAX_FSPEC_SIZE+1];
tag_t work_part_tag;
char part_number[UF_UGMGR_PARTNO_SIZE+1];
char part_revision[UF_UGMGR_PARTREV_SIZE+1];
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
char part_file_name[UF_UGMGR_FNAME_SIZE+1];
UF_UGMGR_tag_t db_tag;
char part_name[UF_UGMGR_NAME_SIZE+1];
char part_desc[UF_UGMGR_DESC_SIZE+1];
work_part_tag = UF_ASSEM_ask_work_part();
UF_PART_ask_part_name( work_part_tag, work_part_name );
CHECK(UF_UGMGR_decode_part_filename( work_part_name, part_number,
part_revision,
part_file_type, part_file_name ));
printf( "For the current Work Part\n\n" );
printf( " Part Number : %s\n", part_number );
printf( " Part Revision : %s\n", part_revision );
printf( " Part File Type : %s\n", part_file_type );
printf( " Part File Name : %s\n", part_file_name );
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc));
printf( " Part Name : %s\n", part_name );
printf( " Part Description : %s\n", part_desc );
printf("\n");
return 0;
}
[/quote]
-
无

