#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;//层不变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;//层不变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;
}
//
//UF_DRF_ask_label_info
//date[0]==是否输出1输出0不输出
//date[1]==文字大小
//date[2]==X位置
//date[3]==Y位置
//date[4]==颜色
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;
// static char font_name[16]=font;//"chinesef_fs";//條碼字體
UF_UGFONT_add_font(fte_tag,&status,font_name); //设置为ISO_FONT 字体。
UF_CALL(UF_DRF_ask_preferences(mpi, mpr, radius, diameter));
//設置參數
mpi[87] = int(date[4]); //Color
mpi[88] =status; //Font
mpi[89] = 3; //Density 1=正常 2=粗 3=细
mpr[44] = date[1] ; //Hight
mpr[3] = 0.0; /* Text angle */
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
UG二次开发之制图相关的函数
最新推荐文章于 2024-06-06 14:26:01 发布