UF_MODL_create_linear_iset 线性阵列往往是在创建一个特征之后,零件上相同特征按照线性排列,通过线性阵列实现建模;如结果图,图中的某一孔是圆柱特征和块特征求差运算得到的,其余孔和该孔是线性分布关系,可以通过线性阵列得到;阵列特征之前该特征一定是通过布尔运算得到的,否则阵列失败,切记。
UF_FEATURE_SIGN sign = UF_NULLSIGN;
double block_orig[3] = { 0.0,0.0,0.0 };
char* block_len[3] = { "50","50","10" };//字符型指针
tag_t blk_obj;
UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj);//创建块特征
UF_FEATURE_SIGN sign1 = UF_NEGATIVE;
double cylinder_orig[3] = { 5.0,5.0,0.0 };
char* height = "12";
char* diam = "5";
double direction[3] = { 0.0,0.0,1.0 };
tag_t cyl_obj_id;
UF_MODL_create_cyl1(sign1, cylinder_orig, height, diam, direction, &cyl_obj_id);//创建圆柱特征,并与块特征布尔求差得到孔,之后将该孔进行阵列。
//线性阵列和环形阵列之前特征必须是布尔运算得到的,这一点也符合实际零件特征。
int method =0;
char* number_in_x = "4";
char* distance_x= "10";
char* number_in_y= "4";
char* distance_y= "10";
uf_list_p_t feature_list;
UF_MODL_create_list(&feature_list);
UF_MODL_put_list_item(feature_list, cyl_obj_id);
tag_t feature_obj_id;
UF_MODL_create_linear_iset(method, number_in_x, distance_x, number_in_y, distance_y, feature_list, &feature_obj_id);