⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 project_dim_dialog.c

📁 基于UG的尺寸标准、尺寸公差,二次开发的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
			 sprintf(text_temp1,"%.3f",p_dim_para->up_tolerance);
		 else
			 sprintf(text_temp1," %.0f",p_dim_para->up_tolerance);

		 if(p_dim_para->low_tolerance>0)
			 sprintf(text_temp2,"+%.3f",p_dim_para->low_tolerance);
		 else if(p_dim_para->low_tolerance<0)
			 sprintf(text_temp2,"%.3f",p_dim_para->low_tolerance);
		 else
			 sprintf(text_temp2," %.0f",p_dim_para->low_tolerance);

		 sprintf(text_after,"%s<(><C0.750><T%s!%s><C><)>",
			 (m_bench==0)?p_dim_para->hole_code:p_dim_para->axis_code,text_temp1,text_temp2);

		 text.location=UF_DRF_APPENDED_TEXT_AFTER;
		 text.num_lines =1;
		 p_text=text_after;
		 text.text=&p_text;
		 UF_DRF_set_appended_text(p_dim_para->dim_tag,1,&text);

	 }

	 data.item_attr=UF_STYLER_VALUE;
	 data.item_id=PROJECT_DIM_TOGGLE_DIAMETER;
	 UF_STYLER_ask_value(dialog_id,&data);
	 m_diameter=data.value.integer;
	 if(m_diameter)//加直径前缀  <O>
	 {
		 text.location = UF_DRF_APPENDED_TEXT_BEFORE;
         text.num_lines =0;
         text.text = NULL;
		 UF_DRF_set_appended_text(p_dim_para->dim_tag,1,&text);

		 text.location=UF_DRF_APPENDED_TEXT_BEFORE;
		 text.num_lines =1;
		 text.text=&text_before;
		 UF_DRF_set_appended_text(p_dim_para->dim_tag,1,&text);
	 }


     /* ---- Enter your callback code here ----- */

     UF_terminate ();

    /* Callback acknowledged, do not terminate dialog                 */
    /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted    */
    /* for this callback type.  You must respond to your apply button.*/
    return (UF_UI_CB_CONTINUE_DIALOG); 

}


/* -------------------------------------------------------------------------
 * Callback Name: PROJECT_DIM_cancel_fun
 * This is a callback function associated with an action taken from a
 * UIStyler object. 
 *
 * Input: dialog_id   -   The dialog id indicate which dialog this callback
 *                        is associated with.  The dialog id is a dynamic,
 *                        unique id and should not be stored.  It is
 *                        strictly for the use in the NX Open API:
 *                               UF_STYLER_ask_value(s) 
 *                               UF_STYLER_set_value   
 *        client_data -   Client data is user defined data associated
 *                        with your dialog.  Client data may be bound
 *                        to your dialog with UF_MB_add_styler_actions
 *                        or UF_STYLER_create_dialog.                 
 *        callback_data - This structure pointer contains information
 *                        specific to the UIStyler Object type that  
 *                        invoked this callback and the callback type.
 * -----------------------------------------------------------------------*/
int PROJECT_DIM_cancel_fun ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
     /* Make sure User Function is available. */  
     if ( UF_initialize() != 0) 
          return ( UF_UI_CB_CONTINUE_DIALOG );

     /* ---- Enter your callback code here ----- */

     UF_terminate ();

    /* Callback acknowledged, terminate dialog             */
    /* It is STRONGLY recommended that you exit your       */
    /* callback with UF_UI_CB_EXIT_DIALOG in a cancel call */
    /* back rather than UF_UI_CB_CONTINUE_DIALOG.          */
    return ( UF_UI_CB_EXIT_DIALOG );                       

}


/* -------------------------------------------------------------------------
 * Callback Name: PROJECT_DIM_sel_dim_fun
 * This is a callback function associated with an action taken from a
 * UIStyler object. 
 *
 * Input: dialog_id   -   The dialog id indicate which dialog this callback
 *                        is associated with.  The dialog id is a dynamic,
 *                        unique id and should not be stored.  It is
 *                        strictly for the use in the NX Open API:
 *                               UF_STYLER_ask_value(s) 
 *                               UF_STYLER_set_value   
 *        client_data -   Client data is user defined data associated
 *                        with your dialog.  Client data may be bound
 *                        to your dialog with UF_MB_add_styler_actions
 *                        or UF_STYLER_create_dialog.                 
 *        callback_data - This structure pointer contains information
 *                        specific to the UIStyler Object type that  
 *                        invoked this callback and the callback type.
 * -----------------------------------------------------------------------*/
static int init_proc(UF_UI_selection_p_t select,void* user_data)
{
    int num_triples = 1;
    UF_UI_mask_t mask_triples[]={UF_dimension_type, UF_all_subtype, 0};
	
	if(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,
            num_triples, mask_triples)==0)
        return (UF_UI_SEL_SUCCESS);
    else
        return (UF_UI_SEL_FAILURE);
}

int PROJECT_DIM_sel_dim_fun ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
     /* Make sure User Function is available. */
	 PROJECT_DIM_PARMETER          *p_dim_para;
	 int						   i,response;
     tag_t                         dim_tag, view_tag;
     double                        cursor[3];
	 int                           result,num_text,dim_type;
     double                        dim_origin[3];
     UF_DRF_dim_info_t             *dim_info;
	 double                        mpr[70];
	 int                           mpi[100];
	 char                          radius_val[27],diameter_val[27];
	 char                          dim_value_string[50];
	 UF_STYLER_item_value_type_t   data;
	 UF_DRF_appended_text_p_t      appended_text;
	 UF_DRF_appended_text_t        text;
	 char            *messages={ "该尺寸后面有附加文本,是否删除?"};
	 UF_UI_message_buttons_t       buttons;

     if ( UF_initialize() != 0) 
          return ( UF_UI_CB_CONTINUE_DIALOG );
     p_dim_para=(PROJECT_DIM_PARMETER *)client_data;
     /* ---- Enter your callback code here ----- */
	 UF_UI_select_with_single_dialog("选择一个尺寸","选择工程图尺寸",
                   UF_UI_SEL_SCOPE_WORK_PART, init_proc, NULL,
                   &response, &dim_tag, cursor, &view_tag);
	 if (response == UF_UI_OBJECT_SELECTED ||
            response == UF_UI_OBJECT_SELECTED_BY_NAME)
	 {
		 p_dim_para->dim_tag=dim_tag;
		 UF_DISP_set_highlight(dim_tag,0);
		 UF_DRF_ask_object_preferences(dim_tag,mpi,mpr,radius_val,diameter_val);
		 if(mpi[6]==2||mpi[6]==3||mpi[6]==10||mpi[6]==11)
		 {
			 mpi[6]=1;
			 UF_DRF_set_object_preferences(dim_tag,mpi,mpr,radius_val,diameter_val);
		 }
		 UF_DRF_ask_dim_info(dim_tag, &dim_type,&dim_origin[0],&dim_info);
		 for(i=0;i<dim_info->num_text;i++)
		 {
			 if(dim_info->text_info[i].text_type==1)
			 {
				 strcpy(dim_value_string,dim_info->text_info[i].text[0].full_string);
				 break;
			 }
		 }
		 if(i==dim_info->num_text)
		 {
			 uc1601("没找到尺寸值",1);
			 return (UF_UI_CB_CONTINUE_DIALOG);
		 }
		 p_dim_para->dim_value=atof(dim_value_string);
		 if(p_dim_para->dim_value>500.0)
		 {
			 uc1601("尺寸值大于500,目前系统中查询不到对应的偏差数值",1);
			 return (UF_UI_CB_CONTINUE_DIALOG);
		 }
		 UF_DRF_free_dimension(&dim_info);
		 UF_DRF_ask_appended_text(p_dim_para->dim_tag, &num_text,&appended_text);
		 for(i=0;i<num_text;i++)
		 {
			 if(appended_text[i].location==UF_DRF_APPENDED_TEXT_AFTER)
				 break;
		 }
		 if(i<num_text)//尺寸有后面附加的文本
		 {
			 buttons.button1=TRUE;buttons.button2=FALSE;buttons.button3=TRUE;
			 buttons.label1="删除";buttons.label3="不删除";
			 buttons.response1=1;buttons.response3=-1;
			 UF_UI_message_dialog("提示",UF_UI_MESSAGE_INFORMATION,&messages,1,TRUE,
				 &buttons,&result);
			 if(result==1)//删除
			 {
				 text.location = UF_DRF_APPENDED_TEXT_AFTER;
			     text.num_lines =0;
				 text.text = NULL;
				 UF_DRF_set_appended_text(p_dim_para->dim_tag,1,&text);
			 }
		 }
		 UF_DRF_free_appended_text(num_text,appended_text);

		 data.item_attr=UF_STYLER_LABEL;
		 data.item_id=PROJECT_DIM_LABEL_DIM;
		 data.value.string=dim_value_string;
		 UF_STYLER_set_value(dialog_id,&data);

		 data.item_attr=UF_STYLER_SENSITIVITY;
		 data.item_id=UF_STYLER_NAV_INDEX;
		 data.subitem_index=UF_STYLER_APPLY_INDEX;
		 data.value.integer=TRUE;
		 UF_STYLER_set_value(dialog_id,&data);
	 }
     UF_terminate ();

    /* Callback acknowledged, do not terminate dialog */
    return (UF_UI_CB_CONTINUE_DIALOG); 
    
    /* or Callback acknowledged, terminate dialog.    */
    /* return ( UF_UI_CB_EXIT_DIALOG );               */

}

/* -------------------------------------------------------------------------
 * Callback Name: PROJECT_DIM_sel_benchmark_fun
 * This is a callback function associated with an action taken from a
 * UIStyler object. 
 *
 * Input: dialog_id   -   The dialog id indicate which dialog this callback
 *                        is associated with.  The dialog id is a dynamic,
 *                        unique id and should not be stored.  It is
 *                        strictly for the use in the NX Open API:
 *                               UF_STYLER_ask_value(s) 
 *                               UF_STYLER_set_value   
 *        client_data -   Client data is user defined data associated
 *                        with your dialog.  Client data may be bound
 *                        to your dialog with UF_MB_add_styler_actions
 *                        or UF_STYLER_create_dialog.                 
 *        callback_data - This structure pointer contains information
 *                        specific to the UIStyler Object type that  
 *                        invoked this callback and the callback type.
 * -----------------------------------------------------------------------*/
int PROJECT_DIM_sel_benchmark_fun ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
     /* Make sure User Function is available. */ 
	 PROJECT_DIM_PARMETER          *p_dim_para;
	 UF_STYLER_item_value_type_t   data;
	 int                           m_bench,index;
     if ( UF_initialize() != 0) 
          return ( UF_UI_CB_CONTINUE_DIALOG );

	 p_dim_para=(PROJECT_DIM_PARMETER  *)client_data;
	 data.item_attr=UF_STYLER_VALUE;
	 data.item_id=PROJECT_DIM_RADIO_BENCHMARK;
	 UF_STYLER_ask_value(dialog_id,&data);
	 m_bench=data.value.integer;

	 data.item_attr=UF_STYLER_SENSITIVITY;
	 data.subitem_index=UF_STYLER_NO_SUB_INDEX;

	 if(m_bench==0)//孔
	 {
		 data.value.integer=TRUE;
		 data.item_id=PROJECT_DIM_OPTION_HOLE_CODE;	
		 UF_STYLER_set_value(dialog_id,&data);

		 data.value.integer=FALSE;
		 data.item_id=PROJECT_DIM_OPTION_AXIS_CODE;	
		 UF_STYLER_set_value(dialog_id,&data);

		 //设置上下偏差实数控件INSENSITIVITY
		 data.item_attr=UF_STYLER_SENSITIVITY;
		 data.value.integer=FALSE;
		 data.item_id=PROJECT_DIM_REAL_UP_TOLERANCE;
		 UF_STYLER_set_value(dialog_id,&data);
		 
		 data.item_id=PROJECT_DIM_REAL_LOW_TOLERANCE;
		 UF_STYLER_set_value(dialog_id,&data);

	 }
	 else if(m_bench==1)//轴
	 {
		 data.value.integer=TRUE;
		 data.item_id=PROJECT_DIM_OPTION_AXIS_CODE;	
		 UF_STYLER_set_value(dialog_id,&data);

		 data.value.integer=FALSE;
		 data.item_id=PROJECT_DIM_OPTION_HOLE_CODE;	
		 UF_STYLER_set_value(dialog_id,&data);

		 //设置上下偏差实数控件INSENSITIVE
		 data.item_attr=UF_STYLER_SENSITIVITY;
		 data.value.integer=FALSE;
		 data.item_id=PROJECT_DIM_REAL_UP_TOLERANCE;
		 UF_STYLER_set_value(dialog_id,&data);
		 
		 data.item_id=PROJECT_DIM_REAL_LOW_TOLERANCE;
		 UF_STYLER_set_value(dialog_id,&data);
	 }
	 else if(m_bench==2)//配合
	 {
		 //设置上下偏差下拉列表控件SENSITIVE实数控件INSENSITIVE
		 data.value.integer=TRUE;
		 data.item_id=PROJECT_DIM_OPTION_AXIS_CODE;	
		 UF_STYLER_set_value(dialog_id,&data);

		 data.item_id=PROJECT_DIM_OPTION_HOLE_CODE;	
		 UF_STYLER_set_value(dialog_id,&data);

		 data.value.integer=FALSE;
		 data.item_id=PROJECT_DIM_REAL_UP_TOLERANCE;	
		 UF_STYLER_set_value(dialog_id,&data);

		 data.value.integer=FALSE;
		 data.item_id=PROJECT_DIM_REAL_LOW_TOLERANCE;	
		 UF_STYLER_set_value(dialog_id,&data);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -