📄 project_dim_dialog.c
字号:
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 + -