/*
This example uses a part with a named circular edge, "BNDOBJ", to
define the boundary limits.
*/
#include <stdlib.h>
#include <stdio.h>
#include <uf.h>
#include <uf_defs.h>
#include <uf_draw.h>
#include <uf_obj.h>
#include <uf_part.h>
#include <uf_view.h>
void ufusr(char *param, int *retcod, int param_len)
{
    int         ifail = 0;
    tag_t       object_tag = NULL_TAG;
    tag_t       view_tag = NULL_TAG;
    tag_t       part_tag = NULL_TAG;
    char        error_message[133];
    char *      view_name = "TOP@1";
    char *      object_name = "BNDOBJ";

    ifail = UF_initialize();

    if( !ifail )
      part_tag = UF_PART_ask_display_part();

    if( !ifail && part_tag != NULL_TAG )
      ifail = UF_VIEW_ask_tag_of_view_name( view_name,
                                           &view_tag );

    if( !ifail && part_tag != NULL_TAG &&
         view_tag != NULL_TAG )

      /* retrieve tag of circle to define view boundary */
      /* this example uses a part with a named object   */
       ifail = UF_OBJ_cycle_by_name( object_name,
                                    &object_tag );

    if( !ifail && part_tag != NULL_TAG &&
         view_tag != NULL_TAG && object_tag != NULL_TAG)
        ifail = UF_DRAW_define_bound_by_objects( view_tag,
                                                 1,
                                                &object_tag );
    printf( "UF_DRAW_define_bound_by_objects " );
    if( ifail )
    {
        ifail = UF_get_fail_message( ifail, error_message );
        printf( "fails.\nError is: %s\n", error_message );
    }
    else if ( part_tag == NULL_TAG )
      printf( "fails.\nError is: no active part.\n" );
    else if ( object_tag == NULL_TAG )
      printf( "fails.\nError is: named object not found.\n");
    else if ( view_tag == NULL_TAG )
      printf( "fails.\nError is: view not found.\n");
    else 
      printf( "is successful.\n" );
    ifail = UF_terminate();
}

