购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
函数结构:UF_UGMGR_encode_part_filename( const char * part_number, const char * part_revision, const char * part_file_type, const char * part_file_name, char encoded_name [ MAX_FSPEC_BUFSIZE ]) 函数说明:
编码输入参数到NX经理的部分文件名。该所得部件文件名然后可以在任何其他开放API一起使用子程序接受一个部分文件名(例如,UF_PART_open,UF_PART_new)。以下规则适用于输入参数:如果指定NULL值,空字符串“”或“大师”对于part_file_type参数,函数假定您希望编码部分作为主零件文件。在这种情况下,part_file_name字段应指定为NULL或空串“,”。如果指定了“规范”或“表现”的一部分文件类型,你还必须为规范或表现形式指定一个名称部分文件。对于PART_NUMBER,part_revision总长度相结合,而part_file_name字段不应超过50个字符。在此外,对于PART_NUMBER最大允许长度是26个字符,用于part_revision 16个字符,和32字符的part_file_name。这个函数不应该叫为CPD shapeDesign parttype
函数参数:
第1个参数为输入:
输入const char * 字符类型的参数,参数的变量格式为part_number,零件号。
第2个参数为输入:
输入const char * 字符类型的参数,参数的变量格式为part_revision,一部分修改。
第3个参数为输入:
输入const char * 字符类型的参数,参数的变量格式为part_file_type,部分文件类型。应为NULL,空字符串“”,“大师”,“规范”或“表现”。需要注意的是“大师”,“规范”和“表现”必须只使用小写字母拼写。
第4个参数为输入:
输入const char * 字符类型的参数,参数的变量格式为part_file_name,部分文件名。仅在需要part_file_type是“规范”的“表现”。
第5个参数为输出:
输出char 字符类型的参数,参数的变量格式为encoded_name [ MAX_FSPEC_BUFSIZE ],部分文件名的编码形式。声明与数组大小MAX FSPEC BUFSIZE此参数。
UF_UGMGR_encode_part_filename函数实例代码演示:
[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 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_part( 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",
ifail);
exit(1);
}
create_part();
print_work_part_info();
UF_PART_close_all();
UF_UGMGR_terminate();
return 0;
}
/*---------------------------------------------------------------*/
static int create_part( void )
{
char* part_number = "600-A-wej-mk1-eng";
char* part_revision = "A";
char* part_file_type = "master";
char* part_file_name = "";
char encoded_name[MAX_FSPEC_SIZE + 1];
tag_t part_tag;
UF_UGMGR_tag_t db_part_tag;
UF_UGMGR_tag_t root_folder;
char root_folder_name[UF_UGMGR_NAME_SIZE];
int i, count;
UF_UGMGR_tag_t *folder_contents;
UF_UGMGR_object_type_t object_type;
char folder_name[UF_UGMGR_NAME_SIZE];
logical folder_exists = false;
CHECK(UF_UGMGR_ask_root_folder(&root_folder));
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
printf("Root folder is %s\n", root_folder_name);
/* Scan through the root folder, looking for a folder called
"Test Set Default Folder". If this folder exists, set it to be
the default folder into which newly created parts are
placed.
*/
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count,
&folder_contents));
for ( i=0; i<count; i++ )
{
CHECK(UF_UGMGR_ask_object_type(folder_contents[i],
&object_type));
if (object_type == UF_UGMGR_type_folder)
{
CHECK(UF_UGMGR_ask_folder_name(folder_contents[i],
folder_name));
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
{
printf("Test Set Default Folder exists\n");
CHECK(UF_UGMGR_set_default_folder(folder_contents[i]));
folder_exists = true;
printf("Set default folder to %s\n", folder_name);
}
}
}
/* If the folder "Test Set Default Folder" doesn't exist, set the
default folder to be the root folder.
*/
if (!folder_exists)
{
printf("Test Set Default Folder does not exist\n");
CHECK(UF_UGMGR_set_default_folder(root_folder));
printf("Set default folder to %s\n", root_folder_name);
}
printf("Encoding UG/Manager part filename...\n");
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
part_file_type,
part_file_name,
encoded_name ));
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
printf("Created part...\n");
CHECK(UF_PART_save());
printf("Saved part...\n");
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
"Mk3 Engine" ));
printf("Set part name and description...\n");
return 0;
}
/*---------------------------------------------------------------*/
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 );
return 0;
}
[/quote]