做基准面,通过集成方法实现
对块的各个面都做一个基准面,通过偏置该块的各个面得到基准面。
具体实现代码如下:
UF_FEATURE_SIGN sign1;
tag_t block_tag;
block_tag = NULL_TAG;
tag_t body_tag = NULL_TAG;
double corner_point1[3] = { 0.0, 0.0, 0.0 };
char* edge_len[3] = { "200.0", "100.0","100.0" };
sign1 = UF_NULLSIGN;
tag_t blk_tag1 = NULL_TAG; // 现在是指针类型
//创建块
UF_MODL_create_block(sign1, block_tag, corner_point1, edge_len, &blk_tag1); // 不再需要取地址符号
//遍历面
UF_MODL_ask_feat_body(blk_tag1, &body_tag);//获得块的标识号,通过特征获得
uf_list_p_t face_list;//定义链表变量
UF_MODL_create_list(&face_list);//初始化链表
UF_MODL_ask_body_faces(body_tag, &face_list);//通过体特征获得面的链表
int pt_select[3] = { 0,0,-1 };
double reference_point[3]= { 0,0,0 };
char * angle_string = "0"; char * offset_string = "20.0";
int num_dplanes=1;
tag_t dplane_tag[2] ;
tag_t object_tags[3];
object_tags[2] = NULL_TAG;
object_tags[1] = NULL_TAG;
int i = 0;//面链表的序号值
tag_t current_face = NULL_TAG;
UF_MODL_ask_list_count(face_list, &i);//获得面组的总数量
for (int j = 0; j <= i - 1; j++)//通过循环遍历面并改颜色
{
UF_MODL_ask_list_item(face_list, j, ¤t_face);//获得具体面的标识号
tag_t face_tag = current_face;
object_tags[0] = current_face;
UF_OBJ_set_color(face_tag, 1);//设定面颜色
char buf[256];
sprintf(buf, "已选择的整数变量的值为%d\n", i);
uc1601(buf, 1);
//创建块的面的偏置基准面
//生成基准面,参考块的面,用偏置方法实现,注意把点坐标参数设为空,以及将角度也设为空。不需要的参数设为空即可;
UF_MODL_create_relative_dplane
(
1,
object_tags,
pt_select,
0,
NULL,
NULL,
offset_string,
&num_dplanes,
dplane_tag
);
UF_MODL_delete_list(&face_list);
/* Terminate the API environment */
UF_CALL(UF_terminate());
}