Code:
tag_t part;
char *part_nname = "test_part";
UF_PART_new(part_nname, 1, &part);
tag_t t_sketch = NULL_TAG;
UF_SKET_initialize_sketch ("test_sketch", &t_sketch ); double t_matrix[9] = {1,0,0,0,1,0,0,0,0};
tag_t t_obj[2];
int t_ref[2];
UF_SKET_create_sketch ("test_sketch", 2, t_matrix, t_obj, t_ref, 1, &t_sketch );
UF_CURVE_line_t line[4];
tag_t l[4];
line[0].start_point[0] = 20;
line[0].start_point[1] = 20;
line[0].start_point[2] = 0;
line[0].end_point[0] = -20;
line[0].end_point[1] = 20;
line[0].end_point[2] = 0;
UF_CURVE_create_line(&line[0],&l[0]);
line[1].start_point[0] = -20;
line[1].start_point[1] = 20;
line[1].start_point[2] = 0;
line[1].end_point[0] = -20;
line[1].end_point[1] = -20;
line[1].end_point[2] = 0;
UF_CURVE_create_line(&line[1],&l[1]);
line[2].start_point[0] = -20;
line[2].start_point[1] = -20;
line[2].start_point[2] = 0;
line[2].end_point[0] = 20;
line[2].end_point[1] = -20;
line[2].end_point[2] = 0;
UF_CURVE_create_line(&line[2],&l[2]);
line[3].start_point[0] = 20;
line[3].start_point[1] = -20;
line[3].start_point[2] = 0;
line[3].end_point[0] = 20;
line[3].end_point[1] = 20;
line[3].end_point[2] = 0;
UF_CURVE_create_line(&line[3],&l[3]);
UF_SKET_terminate_sketch ();
//UF_SKET_set_reference_status (t_sketch, l[0], UF_SKET_reference );
//UF_SKET_set_reference_status (t_sketch, l[1], UF_SKET_reference );
//UF_SKET_set_reference_status (t_sketch, l[2], UF_SKET_reference );
//UF_SKET_set_reference_status (t_sketch, l[3], UF_SKET_reference );
uf_list_p_t loop_list, features;
UF_MODL_create_list(&loop_list);
UF_MODL_put_list_item(loop_list, l[0]);
UF_MODL_put_list_item(loop_list, l[1]);
UF_MODL_put_list_item(loop_list, l[2]);
UF_MODL_put_list_item(loop_list, l[3]);
double direction[3] = {0,0,1};
double ref_pt[3];
char *limit1[2] = {"0", "10"};
UF_MODL_create_extruded(loop_list, "0", limit1, ref_pt, direction, UF_NULLSIGN, &features);
UF_PART_save();
UF_terminate();
return;