OPENC函数 UF_CSYS UF_MTX UF_VEC (判断矢量平行)(UF_VEC3_is_parallel)
1 //设置single_dialog选择过滤 2 static int init_proc(UF_UI_selection_p_t select,void* user_data) 3 { 4 int num_triples = 1; 5 //面 6 UF_UI_mask_t mask_triples[] = {UF_face_type,0,0}; 7 /* enable only lines and edges */ 8 if((UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,num_triples, mask_triples)) == 0) 9 { 10 return (UF_UI_SEL_SUCCESS); 11 } 12 else 13 { 14 return (UF_UI_SEL_FAILURE); 15 } 16 } 17 extern DllExport void ufsta( char *param, int *returnCode, int rlen ) 18 { 19 /* Initialize the API environment */ 20 if( UF_CALL(UF_initialize()) ) 21 { 22 /* Failed to initialize */ 23 return; 24 } 25 26 /* TODO: Add your application code here */ 27 UF_initialize(); 28 //select_with_single_dialog 29 char message[]="单选对话框"; 30 char title[]="请选择:"; 31 int scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY; 32 int response=0; 33 int count=0; 34 tag_t objects=NULL; 35 double cursor[3]={0.0}; 36 tag_t vieew=NULL_TAG; 37 //ask_face_data 38 int type=22;//有界平面 39 double point[3]={0.0}; 40 double direction[3]={0.0}; 41 double bounding_box[6]={0.0}; 42 double radius[3]={0.0}; 43 double rad_data[3]={0.0}; 44 int norm_dir=0; 45 46 //坐标系那一堆 47 tag_t wcs_tag=NULL_TAG; 48 tag_t matrix_tag=NULL_TAG; 49 double matrix_value[9]={0.0}; 50 double wcs_vec_x[3]={0.0}; 51 double wcs_vec_y[3]={0.0}; 52 double wcs_vec_z[3]={0.0}; 53 double tolerance=0.00001; 54 //is_parallel 55 int x_parallel=0; 56 int y_parallel=0; 57 int z_parallel=0; 58 59 //获取wcs坐标系然后得到他的矩阵 60 UF_CSYS_ask_wcs(&wcs_tag); 61 UF_CSYS_ask_matrix_of_object(wcs_tag,&matrix_tag); 62 UF_CSYS_ask_matrix_values (matrix_tag,matrix_value); 63 //得到x y z三个矢量方向 64 UF_MTX3_x_vec(matrix_value,wcs_vec_x); 65 UF_MTX3_y_vec(matrix_value,wcs_vec_y); 66 UF_MTX3_z_vec(matrix_value,wcs_vec_z); 67 //单选对话框 68 UF_UI_select_with_single_dialog (message,title,scope,init_proc,NULL,&response,&objects,cursor,&vieew); 69 if (response == UF_UI_OBJECT_SELECTED ||response == UF_UI_OBJECT_SELECTED_BY_NAME) 70 { 71 UF_DISP_set_highlight(objects,0); 72 UF_MODL_ask_face_data(objects,&type,point,direction,bounding_box,radius,rad_data,&norm_dir); 73 UF_VEC3_is_parallel (wcs_vec_x,direction,tolerance,&x_parallel); 74 UF_VEC3_is_parallel (wcs_vec_y,direction,tolerance,&y_parallel); 75 UF_VEC3_is_parallel (wcs_vec_z,direction,tolerance,&z_parallel); 76 if (x_parallel==1) 77 { 78 uc1601("与WCS的X轴平行",1); 79 } 80 else if (y_parallel==1) 81 { 82 uc1601("与WCS的Y轴平行",1); 83 } 84 else if (z_parallel==1) 85 { 86 uc1601("与WCS的Z轴平行",1); 87 } 88 else 89 { 90 uc1601("都不平行",1); 91 } 92 } 93 94 UF_terminate(); 95 /* Terminate the API environment */ 96 UF_CALL(UF_terminate()); 97 }
Life's is not that binary