zoukankan      html  css  js  c++  java
  • 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 }

  • 相关阅读:
    OpenCV 图像旋转
    单链表插入与删除数据
    opencv 数据训练
    C++ 小波变换
    二十七、miniscrapy,scrapy源码初解
    二十六、Scrapy自定义命令
    二十五、scrapy中的去重规则及自定义
    二十四、在scrapy中如何获取cookies
    十六、 IO多路复用,异步非阻塞
    五、IO模型简介
  • 原文地址:https://www.cnblogs.com/zzyfym/p/12123160.html
Copyright © 2011-2022 走看看