/****************************************************************************** Copyright (c) 1999 Unigraphics Solutions, Inc. Unpublished - All Rights Reserved *******************************************************************************/ /***************************************************************/ /* PROGRAM NAME:datasets VERSION:1.0 PURPOSE: Test example to allow a user to call IMAN user exits for new and copy datasets. */ /***************************************************************/ #include #include #include #include #include #include static const char *app_rel_types[][2]= { "UG master part file", "has shape", "UG part file", "has specification", "UG part file", "has manifestation", "UG alternative rep", "has altrep" }; static int num_app_types = sizeof(app_rel_types)/sizeof(app_rel_types[0]); static const char *dataset_name = "dummy_dataset"; /***************************************************************/ extern void ufusr(char *name, int *rtcode, int rtlen) { int count, iapp, irel, irc = 0, argc = 0, n_revs = 0; const char *argv[] = {""}; char model_name[UF_UGMGR_NAME_SIZE+1]; char rev_name[UF_UGMGR_PARTREV_SIZE+1]; logical mod; char part_name[UF_UGMGR_NAME_SIZE+1]; UF_UGMGR_tag_t part_tag, folder_tag, *contents = NULL, *revs = NULL; /**************************beginning of executable*******************/ printf("\nstarting assign_datasets v1.0\n"); /*********************************************/ irc=UF_UGMGR_initialize(argc, argv);/* get licence*/ if (irc != 0) { printf("Unable to get a ufunc/ugmanager license!\n"); return; } printf("got ufunc license\n"); /*********************************************/ strcpy(part_name, ""); /* Get the root folder to search */ irc = UF_UGMGR_ask_root_folder(&folder_tag); if (irc != 0) { printf("Unable to get a folder tag!\n"); return; } printf("got folder tag\n"); while (strlen(part_name) == 0) { int inx, found = -1; char folder_name[UF_UGMGR_NAME_SIZE+1]; UF_UGMGR_object_type_t type; /* Find the folder contents */ irc = UF_UGMGR_list_folder_contents(folder_tag, &count, &contents); if (irc != 0) { printf("Unable to get folder contents!\n"); return; } printf("got folder contents\n"); for (inx = 0; inx < count; inx++) { UF_UGMGR_ask_object_type(contents[inx], &type); switch (type) { case UF_UGMGR_type_folder: { UF_UGMGR_ask_folder_name(contents[inx], folder_name); if (found < 0) { found = inx; folder_tag = contents[inx]; } break; } case UF_UGMGR_type_part: { UF_UGMGR_ask_part_number(contents[inx], part_name); found = -1; part_tag = contents[inx]; break; } case UF_UGMGR_type_part_revision: { UF_UGMGR_ask_part_revision_id(contents[inx], part_name); break; } case UF_UGMGR_type_unknown: default: break; } } /* 05-Jun-98 If we found a folder and no part then set this as the new root and try again. */ if (found > -1) { UF_UGMGR_set_default_folder(folder_tag); } } /* 05-Jun-98 Now we have found a part to be used. Find the revision. */ irc = UF_UGMGR_list_part_revisions( part_tag, &n_revs, &revs ); if ((irc == 0) && (n_revs > 0)) { UF_UGMGR_ask_part_revision_id( revs[0], rev_name ); /* 04-Jun-98 Check the default new dataset names for possible app/reltypes */ for (iapp = 0; iapp < num_app_types; iapp++) { for (irel = 0; irel < num_rel_types; irel++) { irc = UF_UGMGR_assign_new_dset_name( part_name, rev_name, app_types[iapp] , rel_types[irel] , "", model_name, &mod ); NOTE(("Fail code %d model_name %s", irc, model_name)); } } /* 04-Jun-98 Check the default copy dataset names for possible app/reltypes */ for (iapp = 0; iapp < num_app_types; iapp++) { for (irel = 0; irel < num_rel_types; irel++) { irc = UF_UGMGR_assign_copy_dset_name( part_name, rev_name, dataset_name, app_types[iapp] , rel_types[irel] , "", "", model_name, &mod ); NOTE(("Fail code %d model_name %s modifiable %s", irc, model_name, mod ? "TRUE" : "FALSE")); } } } UF_UGMGR_terminate(); }