购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
函数结构:UF_UGMGR_ask_root_folder( UF_UGMGR_tag_t * folder_tag) 函数说明:
返回当前用户的根文件夹的数据库标签。 这个数据库标签中的参数文件夹标签返回。如果一个错误发生时,返回NULL的标记。
函数参数:
第1个参数为输出:
folder_tag代表参数变量,UF_UGMGR_tag_t * 为输出参数类型,当前用户的根文件夹的数据库标记。
UF_UGMGR_ask_root_folder函数实例代码演示:
下面的例子涉及范围广泛的UG/经理UG/开放API。其目的是找出所有的内容您文件夹,开始在主文件夹。所有文件夹,部件,零件修订版,主部件文件,非主零件文件,以及相关文件被打印出来。信息被印刷在一个缩进形式,以便你可以一眼看出某个特定文件夹的内容。 对于例:文件夹:首页部分:发动机版本:A型:主文件夹:螺丝部分:flat_head版本:A型:主版本:A型:规格,名称:dwg001版本:A型:表现形式,名称:NCtool001部分:cross_headREV:B型:主
[quote]
#include <stdio.h>
#include <stdlib.h>
#include <uf.h>
#include <uf_ugmgr.h>
#define CHECK( func_ ) \
ifail = (func_); \
if ( ifail != 0 ) {\
printf("ERROR: %s returned %d", # func_, ifail ); \
return ifail; }
#define PRINT( content_ ) \
{ int ii; \
for (ii=0; ii<indent_level; ii++) \
{ printf(" "); } \
printf content_ ; \
printf("\n"); }
static int list_in_folder(UF_UGMGR_tag_t folder);
static int list_in_part(UF_UGMGR_tag_t part);
static int indent_level = 0;
/*---------------------------------------------------------------*/
int main (int argc, char *argv[])
{
int ifail = 0;
UF_UGMGR_tag_t root;
ifail = UF_UGMGR_initialize(argc,(const char**)argv);
if (ifail != 0)
{
printf("ERROR: Failed to initialize with error code %d",
ifail);
exit(1);
}
ifail = UF_UGMGR_ask_root_folder(&root);
if(ifail == 0)
{
ifail = list_in_folder(root);
}
else
{
exit(1);
}
UF_UGMGR_terminate();
return 0;
}
/*---------------------------------------------------------------*/
static int list_in_folder(UF_UGMGR_tag_t folder)
{
int ifail = 0;
char folder_name[UF_UGMGR_NAME_SIZE + 1];
int i;
int count;
UF_UGMGR_tag_t* folder_contents;
UF_UGMGR_object_type_t obj_type;
if (folder == UF_UGMGR_null_tag)
{
return ifail;
}
CHECK(UF_UGMGR_ask_folder_name(folder, folder_name));
PRINT(("Folder: %s", folder_name));
indent_level++;
CHECK(UF_UGMGR_list_folder_contents(folder, &count,
&folder_contents));
for(i=0; i<count; i++)
{
CHECK(UF_UGMGR_ask_object_type(folder_contents[i], &obj_type));
switch(obj_type)
{
case UF_UGMGR_type_folder :
CHECK(list_in_folder(folder_contents[i]));
break;
case UF_UGMGR_type_part :
CHECK(list_in_part(folder_contents[i]));
break;
default :
printf("Invalid object type found");
break;
}
}
UF_free( folder_contents );
indent_level--;
return ifail;
}
/*---------------------------------------------------------------*/
static int list_in_part(UF_UGMGR_tag_t part)
{
int ifail = 0;
char part_name[MAX_FSPEC_SIZE + 1];
int i, j, k;
int count;
int dep_count;
char** names;
int rev_count;
UF_UGMGR_tag_t* revisions;
char revision_id[UF_UGMGR_NAME_SIZE + 1];
char part_number[UF_UGMGR_NAME_SIZE + 1];
char** file_types;
char** file_names;
if (part == UF_UGMGR_null_tag)
{
return ifail;
}
CHECK(UF_UGMGR_ask_part_number(part, part_number));
PRINT(("Part: %s", part_number));
indent_level++;
CHECK(UF_UGMGR_list_part_revisions(part, &rev_count,
&revisions));
for(j=0; j<rev_count; j++)
{
CHECK(UF_UGMGR_ask_part_revision_id(revisions[j],
revision_id));
/** listing dependent files for master **/
CHECK(UF_UGMGR_encode_part_filename (part_number, revision_id,
"" , "", part_name));
PRINT(("Rev.: %s - Type: %s", revision_id, "master"));
indent_level++;
CHECK(UF_UGMGR_ask_dependent_files(part_name, &dep_count,
&names));
for(k=0; k<dep_count; k++)
{
PRINT(("Dependent files: %s", names[k]));
}
indent_level--;
UF_free_string_array(dep_count, names);
CHECK(UF_UGMGR_list_part_rev_files(revisions[j], &count,
&file_types, &file_names));
for(i=0; i<count;i++)
{
CHECK(UF_UGMGR_encode_part_filename (part_number,
revision_id,
file_types[i],
file_names[i],
part_name));
PRINT(("Rev.: %s - Type: %s, Name: %s", revision_id,
file_types[i], file_names[i]));
indent_level++;
CHECK(UF_UGMGR_ask_dependent_files(part_name, &dep_count,
&names));
for(k=0; k<dep_count; k++)
{
PRINT(("Dependent files: %s", names[k]));
}
indent_level--;
UF_free_string_array(dep_count, names);
}
UF_free_string_array(count, file_types);
UF_free_string_array(count, file_names);
}
indent_level--;
UF_free(revisions);
return ifail;
}
[/quote]