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

📄 project_dim_dialog.c

📁 基于UG的尺寸标准、尺寸公差,二次开发的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:

		 //获取公差带代号
		 data.item_attr=UF_STYLER_VALUE;
		 data.item_id=PROJECT_DIM_OPTION_AXIS_CODE;
		 UF_STYLER_ask_value(dialog_id,&data);
		 index=data.value.integer;

		 data.item_attr=UF_STYLER_SUBITEM_VALUES;	
		 UF_STYLER_ask_value(dialog_id,&data);
		 strcpy(p_dim_para->axis_code,data.value.strings[index]);
		 UF_STYLER_free_value(&data);

		 data.item_attr=UF_STYLER_VALUE;
		 data.item_id=PROJECT_DIM_OPTION_HOLE_CODE;
		 UF_STYLER_ask_value(dialog_id,&data);
		 index=data.value.integer;

		 data.item_attr=UF_STYLER_SUBITEM_VALUES;	
		 UF_STYLER_ask_value(dialog_id,&data);
		 strcpy(p_dim_para->hole_code,data.value.strings[index]);
		 UF_STYLER_free_value(&data);


	 }

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

     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_hole_code_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_hole_code_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,column_index,row_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_OPTION_HOLE_CODE;
	 UF_STYLER_ask_value(dialog_id,&data);
	 column_index=data.value.integer;

	 data.item_attr=UF_STYLER_SUBITEM_VALUES;
	 UF_STYLER_ask_value(dialog_id,&data);
	 strcpy(p_dim_para->hole_code,data.value.strings[column_index]);
	 UF_STYLER_free_value(&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;
	 if(m_bench!=2)//不是配合
	 {
		 row_index=Pro_Dim_ask_table_row_index(p_dim_para->dim_value);
		 Pro_Dim_ask_hole_tolerance_value(column_index,row_index,
			 &p_dim_para->up_tolerance,&p_dim_para->low_tolerance);

		 //设置上下偏差的数值

		 data.item_attr=UF_STYLER_SENSITIVITY;
		 data.item_id=PROJECT_DIM_REAL_UP_TOLERANCE;
		 data.value.integer=TRUE;
		 UF_STYLER_set_value(dialog_id,&data);

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

		 data.item_attr=UF_STYLER_VALUE;
		 data.item_id=PROJECT_DIM_REAL_UP_TOLERANCE;
		 data.value.real=p_dim_para->up_tolerance;
		 UF_STYLER_set_value(dialog_id,&data);

		 data.item_attr=UF_STYLER_VALUE;
		 data.item_id=PROJECT_DIM_REAL_LOW_TOLERANCE;
		 data.value.real=p_dim_para->low_tolerance;
		 UF_STYLER_set_value(dialog_id,&data);
	 }
     /* ---- Enter your callback code here ----- */

     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_axis_code_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_axis_code_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,column_index,row_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_OPTION_AXIS_CODE;
	 UF_STYLER_ask_value(dialog_id,&data);
	 column_index=data.value.integer;

	 data.item_attr=UF_STYLER_SUBITEM_VALUES;
	 UF_STYLER_ask_value(dialog_id,&data);
	 strcpy(p_dim_para->axis_code,data.value.strings[column_index]);
	 UF_STYLER_free_value(&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;

	 if(m_bench!=2)//不是配合
	 {

		 row_index=Pro_Dim_ask_table_row_index(p_dim_para->dim_value);
		 Pro_Dim_ask_axis_tolerance_value(column_index,row_index,
			 &p_dim_para->up_tolerance,&p_dim_para->low_tolerance);

		 //设置上下偏差的数值
		 data.item_attr=UF_STYLER_SENSITIVITY;
		 data.item_id=PROJECT_DIM_REAL_UP_TOLERANCE;
		 data.value.integer=TRUE;
		 UF_STYLER_set_value(dialog_id,&data);

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

		 data.item_attr=UF_STYLER_VALUE;
		 data.item_id=PROJECT_DIM_REAL_UP_TOLERANCE;
		 data.value.real=p_dim_para->up_tolerance;
		 UF_STYLER_set_value(dialog_id,&data);

		 data.item_attr=UF_STYLER_VALUE;
		 data.item_id=PROJECT_DIM_REAL_LOW_TOLERANCE;
		 data.value.real=p_dim_para->low_tolerance;
		 UF_STYLER_set_value(dialog_id,&data);
	 }

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

     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 );               */
}

int Pro_Dim_ask_table_row_index(double dim_value)
{
	double  e=0.001;
	if(dim_value<3.0||fabs(dim_value-3.0)<e)
		return 0;
	else if(dim_value<6.0||fabs(dim_value-6.0)<e)
		return 1;
	else if(dim_value<10.0||fabs(dim_value-10.0)<e)
		return 2;
	else if(dim_value<18.0||fabs(dim_value-18.0)<e)
		return 3;
	else if(dim_value<30.0||fabs(dim_value-30.0)<e)
		return 4;
	else if(dim_value<50.0||fabs(dim_value-50.0)<e)
		return 5;
	else if(dim_value<80.0||fabs(dim_value-80.0)<e)
		return 6;
	else if(dim_value<120.0||fabs(dim_value-120.0)<e)
		return 7;
	else if(dim_value<180.0||fabs(dim_value-180.0)<e)
		return 8;
	else if(dim_value<250.0||fabs(dim_value-250.0)<e)
		return 9;
	else if(dim_value<315.0||fabs(dim_value-315.0)<e)
		return 10;
	else if(dim_value<400.0||fabs(dim_value-400.0)<e)
		return 11;
	else if(dim_value<500.0||fabs(dim_value-500.0)<e)
		return 12;
	else
		return -1;
}

void Pro_Dim_ask_hole_tolerance_value(int col_index,int row_index,double *up_tol,double *low_tol)
{
	static double up_tolerance_value[13][10]=
	{
		0.045,0.020,0.012,0.010,0.014,0.025,0.060,0.000,-0.004,-0.006,
		0.060,0.028,0.016,0.012,0.018,0.030,0.075,0.003,-0.004,-0.008,
		0.076,0.035,0.020,0.015,0.022,0.036,0.090,0.005,-0.004,-0.009,
		0.093,0.043,0.024,0.018,0.027,0.043,0.110,0.006,-0.005,-0.011,
		0.117,0.053,0.028,0.021,0.033,0.052,0.130,0.006,-0.007,-0.014,
		0.142,0.064,0.034,0.025,0.039,0.062,0.160,0.007,-0.008,-0.017,
		0.174,0.076,0.040,0.030,0.046,0.074,0.190,0.009,-0.009,-0.021,
		0.207,0.090,0.047,0.035,0.054,0.087,0.220,0.010,-0.010,-0.024,
		0.245,0.106,0.054,0.040,0.063,0.100,0.250,0.012,-0.012,-0.028,
		0.285,0.122,0.061,0.046,0.072,0.115,0.290,0.013,-0.014,-0.033,
		0.320,0.137,0.069,0.052,0.081,0.130,0.320,0.016,-0.014,-0.036,
		0.350,0.151,0.075,0.057,0.089,0.140,0.360,0.017,-0.016,-0.041,
		0.385,0.165,0.083,0.063,0.097,0.155,0.400,0.018,-0.017,-0.045
	};
	static double low_tolerance_value[13][10]=
	{
		0.020,0.006,0.002,0,0,0,0,-0.010,-0.014,-0.016,
		0.030,0.010,0.004,0,0,0,0,-0.009,-0.016,-0.020,
		0.040,0.013,0.005,0,0,0,0,-0.010,-0.019,-0.024,
		0.050,0.016,0.006,0,0,0,0,-0.012,-0.023,-0.029,
		0.065,0.020,0.007,0,0,0,0,-0.015,-0.028,-0.035,
		0.080,0.025,0.009,0,0,0,0,-0.018,-0.033,-0.042,
		0.100,0.030,0.010,0,0,0,0,-0.021,-0.039,-0.051,
		0.120,0.036,0.012,0,0,0,0,-0.025,-0.045,-0.059,
		0.145,0.043,0.014,0,0,0,0,-0.028,-0.052,-0.068,
		0.170,0.050,0.015,0,0,0,0,-0.033,-0.060,-0.079,
		0.190,0.056,0.017,0,0,0,0,-0.036,-0.066,-0.088,
		0.210,0.062,0.018,0,0,0,0,-0.040,-0.073,-0.098,
		0.230,0.068,0.020,0,0,0,0,-0.045,-0.080,-0.108
	};
	*up_tol=up_tolerance_value[row_index][col_index];
	*low_tol=low_tolerance_value[row_index][col_index];
}

void Pro_Dim_ask_axis_tolerance_value(int col_index,int row_index,double *up_tol,double *low_tol)
{
	static double up_tolerance_value[13][10]=
	{
		-0.020,-0.006,-0.002,0,0,0,0,0.006,0.010,0.012,
		-0.030,-0.010,-0.004,0,0,0,0,0.009,0.016,0.020,
		-0.040,-0.013,-0.005,0,0,0,0,0.010,0.019,0.024,
		-0.050,-0.016,-0.006,0,0,0,0,0.012,0.023,0.029,
		-0.065,-0.020,-0.007,0,0,0,0,0.015,0.028,0.035,
		-0.080,-0.025,-0.009,0,0,0,0,0.018,0.033,0.042,
		-0.100,-0.030,-0.010,0,0,0,0,0.021,0.039,0.051,
		-0.120,-0.036,-0.012,0,0,0,0,0.025,0.045,0.059,
		-0.145,-0.043,-0.014,0,0,0,0,0.028,0.052,0.068,
		-0.170,-0.050,-0.015,0,0,0,0,0.033,0.060,0.079,
		-0.190,-0.056,-0.017,0,0,0,0,0.036,0.066,0.088,
		-0.210,-0.062,-0.018,0,0,0,0,0.040,0.073,0.098,
		-0.230,-0.068,-0.020,0,0,0,0,0.045,0.080,0.108
	};
	static double low_tolerance_value[13][10]=
	{
		-0.045,-0.016,-0.008,-0.006,-0.010,-0.025,-0.060,0.000,0.004,0.006,
		-0.060,-0.022,-0.012,-0.008,-0.012,-0.030,-0.075,0.001,0.008,0.012,
		-0.076,-0.028,-0.014,-0.009,-0.015,-0.036,-0.090,0.001,0.010,0.015,
		-0.093,-0.034,-0.017,-0.011,-0.018,-0.043,-0.110,0.001,0.012,0.018,
		-0.117,-0.041,-0.020,-0.013,-0.021,-0.052,-0.130,0.002,0.015,0.022,
		-0.142,-0.050,-0.025,-0.016,-0.025,-0.062,-0.160,0.002,0.017,0.026,
		-0.174,-0.060,-0.029,-0.019,-0.030,-0.074,-0.190,0.002,0.020,0.032,
		-0.207,-0.071,-0.034,-0.022,-0.035,-0.087,-0.220,0.003,0.023,0.037,
		-0.245,-0.083,-0.039,-0.025,-0.040,-0.100,-0.250,0.003,0.027,0.043,
		-0.285,-0.096,-0.044,-0.029,-0.046,-0.115,-0.290,0.004,0.031,0.050,
		-0.320,-0.108,-0.049,-0.032,-0.052,-0.130,-0.320,0.004,0.034,0.056,
		-0.350,-0.119,-0.054,-0.036,-0.057,-0.140,-0.360,0.004,0.037,0.062,
		-0.385,-0.131,-0.060,-0.040,-0.063,-0.155,-0.400,0.005,0.040,0.068

	};
	*up_tol=up_tolerance_value[row_index][col_index];
	*low_tol=low_tolerance_value[row_index][col_index];
}

⌨️ 快捷键说明

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