1 NX11+VS2013 2 3 #include <uf.h> 4 #include <uf_ui.h> 5 #include <uf_modl.h> 6 #include <uf_curve.h> 7 8 9 UF_initialize(); 10 11 //创建圆柱 12 UF_FEATURE_SIGN Sign = UF_NULLSIGN; 13 double Origin[3] = { 0.0, 0.0, 0.0 }; 14 char *Height = "100"; 15 char *Diam = "50"; 16 double Direction[3] = { 0.0, 0.0, 1.0 }; 17 tag_t CylTag = NULL_TAG; 18 UF_MODL_create_cyl1(Sign, Origin, Height, Diam, Direction, &CylTag); 19 20 //特征找体 21 tag_t body_tag = NULL_TAG; 22 UF_MODL_ask_feat_body(CylTag, &body_tag); 23 24 //体找边 25 uf_list_p_t edge_list; 26 UF_MODL_ask_body_edges(body_tag, &edge_list); 27 28 //获得链表的数量 29 int count = 0; 30 UF_MODL_ask_list_count(edge_list, &count); 31 32 UF_UI_open_listing_window(); 33 for (int i = 0; i < count; i++) 34 { 35 //获得链表里的每一个tag 36 tag_t edge_tag = NULL_TAG; 37 UF_MODL_ask_list_item(edge_list, i, &edge_tag); 38 39 //获得边的类型 40 int edge_type = 0; 41 UF_MODL_ask_edge_type(edge_tag, &edge_type); 42 //Edge type : 43 //UF_MODL_LINEAR_EDGE线性边 44 //UF_MODL_CIRCULAR_EDGE圆形边 45 //UF_MODL_ELLIPTICAL_EDGE椭圆边 46 //UF_MODL_INTERSECTION_EDGE相交边 47 //UF_MODL_SPLINE_EDGE样条边 48 //UF_MODL_SP_CURVE_EDGE曲线边 49 //UF_MODL_FOREIGN_EDGE外边缘 50 //UF_MODL_CONST_PARAMETER_EDGE参数边 51 //UF_MODL_TRIMMED_CURVE_EDGE裁剪曲线边 52 //UF_MODL_CONVERGENT_EDGE收敛边 53 //判断是否为圆边 54 if (edge_type == UF_MODL_CIRCULAR_EDGE) 55 { 56 //圆弧矩阵标记、起始角和结束角(弧度测量)、圆弧中心坐标和圆弧半径 57 UF_CURVE_arc_t arc_coords; 58 UF_CURVE_ask_arc_data(edge_tag, &arc_coords); 59 double radius = arc_coords.radius;//圆弧半径 60 tag_t matrix = arc_coords.matrix_tag;//圆弧矩阵 61 double start = arc_coords.start_angle;//圆弧起始角 62 double end = arc_coords.end_angle;//圆弧结束角 63 double p1[3]; 64 p1[0] = arc_coords.arc_center[0];//圆弧中心坐标 65 p1[1] = arc_coords.arc_center[1]; 66 p1[2] = arc_coords.arc_center[2]; 67 68 char msg[256]; 69 sprintf_s(msg, "圆边的半径为:%f", radius); 70 UF_UI_write_listing_window(msg); 71 } 72 73 } 74 75 UF_terminate(); 76 77 Caesar卢尚宇 78 2019年11月13日