#include "nx_inc.h"
#include "Lin_uf_CALL.h"
#ifdef __cplusplus
extern "C" {
#endif
extern int ask_duplication_of_name(char *dwg_name)
{
int num_drawings=0;
tag_p_t drawing_list=NULL;
UF_CALL(UF_DRAW_ask_drawings (&num_drawings, &drawing_list ));
for(int i=0;i<num_drawings;i++)
{
char name[30];
memset(name,0,30);
UF_CALL(UF_OBJ_ask_name (drawing_list[i], name));
if(strcmp(dwg_name,name)==0)
{
UF_free (drawing_list);
return 1;
}
}
UF_free (drawing_list);
return 0;
}
void save_current_view(char *view_name)
{
int error_flag ;
tag_t view_tag_1=NULL_TAG;
UF_VIEW_ask_tag_of_view_name (view_name, &view_tag_1 );
UF_VIEW_delete (view_tag_1,&error_flag );
uc6454(view_name);
uc6432("",1);
uc6450("",view_name,0,0);
}
extern tag_t create_new_draw(char * drawing_name)
{
tag_t drawing_tag;
UF_DRAW_info_t drawing_info;
drawing_info.size_state = UF_DRAW_METRIC_SIZE;
drawing_info.size.metric_size_code = UF_DRAW_A4;
drawing_info.drawing_scale = 1.0;
drawing_info.units = UF_PART_METRIC;
drawing_info.projection_angle = UF_DRAW_THIRD_ANGLE_PROJECTION;
UF_CALL(UF_DRAW_create_drawing(drawing_name, &drawing_info, &drawing_tag));
UF_CALL(UF_DRAW_open_drawing( drawing_tag ));
return drawing_tag;
}
extern void Test_create_draft_view ( tag_t drawing_tag, char *view_name,
double view_scale, double view_position[2],
tag_t *draft_view_tag )
{
tag_t part_tag = UF_PART_ask_display_part();
tag_t view_tag = NULL_TAG;
UF_DRAW_view_info_t view_info;
UF_OBJ_cycle_by_name_and_type (part_tag,view_name,UF_view_type,FALSE, &view_tag);
view_info.view_status = UF_DRAW_ACTIVE_VIEW;
view_info.anchor_point = NULL_TAG;
view_info.view_scale = view_scale;
view_info.use_ref_pt = FALSE;
view_info.inherit_boundary = FALSE;
view_info.transfer_annotation = FALSE;
view_info.model_name[0]='\0';
view_info.arrangement_name[0]='\0';
UF_DRAW_import_view ( drawing_tag, view_tag, view_position, &view_info, draft_view_tag );
}
extern tag_t import_part_to_draw(char * file_name)
{
UF_import_part_modes_t modes;
modes.layer_mode = 0;
modes.group_mode = 0;
modes.csys_mode = 0;
modes.plist_mode = 0;
modes.view_mode = 0;
modes.cam_mode = FALSE;
modes.use_search_dirs = FALSE;
double dest_csys[6]={1.0,0.0,0.0,0.0,1.0,0.0};
double dest_point[3]={0.0,0.0,0.0};
tag_t group;
UF_CALL(UF_PART_import(file_name,&modes,dest_csys,dest_point,1.0,&group));
return group;
}
extern tag_t import_part_to_draw_2(char * file_name)
{
UF_import_part_modes_t modes;
modes.layer_mode = 0;
modes.group_mode = 1;
modes.csys_mode = 0;
modes.plist_mode = 0;
modes.view_mode = 0;
modes.cam_mode = FALSE;
modes.use_search_dirs = FALSE;
double dest_csys[6]={1.0,0.0,0.0,0.0,1.0,0.0};
double dest_point[3]={0.0,0.0,0.0};
tag_t group;
UF_CALL(UF_PART_import(file_name,&modes,dest_csys,dest_point,1.0,&group));
if (group!=NULL_TAG)
{
tag_p_t group_members;
int group_members_num;
UF_CALL(UF_GROUP_ask_group_data (group,&group_members,&group_members_num));
for (int i=0;i<group_members_num;i++)
{
UF_CALL(UF_OBJ_set_blank_status(group_members[i], UF_OBJ_NOT_BLANKED));
}
UF_free(group_members);
}
return group;
}
extern tag_t create_note(double date[5],char *str_note,char *font_name)
{
if(int(date[0])==1 && strlen(str_note)>0)
{
int mpi[100];
double mpr[70];
char diameter[27];
char radius[27];
memset(diameter,0,27);
memset(radius,0,27);
tag_t part_tag=NULL_TAG;
part_tag=UF_PART_ask_display_part();
tag_t fte_tag = NULL;
UF_OBJ_cycle_objs_in_part(part_tag, UF_font_table_type, &fte_tag);
int status=0;
UF_UGFONT_add_font(fte_tag,&status,font_name);
UF_CALL(UF_DRF_ask_preferences(mpi, mpr, radius, diameter));
mpi[87] = int(date[4]);
mpi[88] =status;
mpi[89] = 3;
mpr[44] = date[1] ;
mpr[3] = 0.0;
UF_CALL(UF_DRF_set_preferences(mpi, mpr, radius, diameter));
int num_lines_text=1;
char *text_string[1];
text_string[0]=str_note;
int orientation=0;
double origin_3d[3]={0};
tag_t note_tag=NULL_TAG;
origin_3d[0]= date[2];
origin_3d[1]= date[3];
UF_CALL(UF_DRF_create_note (num_lines_text, text_string,
origin_3d, orientation,¬e_tag));
return note_tag;
}
return NULL_TAG;
}
#ifdef __cplusplus
}
#endif