UG二次开发之制图相关的函数

#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,&note_tag));
		return note_tag;
	}
	return NULL_TAG;
}





#ifdef __cplusplus
}
#endif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值