类似密封圈
tag_t PK_CreateRing(const double point[3],const double dir[3],const double diam[2])
{
double d[2]={diam[0],diam[1]};
double mat_3d[9]={0.0};
if(diam[0]==diam[1])
{
return NULL;
}
else if(diam[0]>diam[1])
{
d[0]=diam[1];
d[1]=diam[0];
}
if(0!=UF_MTX3_initialize_z(dir,mat_3d))
return NULL;
PK_AXIS2_sf_t basis_set;
PK_BODY_t pkBody=PK_ENTITY_null;
basis_set.location.coord[0]=point[0]*0.001;
basis_set.location.coord[1]=point[1]*0.001;
basis_set.location.coord[2]=point[2]*0.001;
UF_MTX3_z_vec(mat_3d,basis_set.axis.coord);
UF_MTX3_x_vec(mat_3d,basis_set.ref_direction.coord);
PK_BODY_create_solid_torus(d[1]*0.5*0.001,d[0]*0.5*0.001,&basis_set,&pkBody);
if(pkBody==PK_ENTITY_null)return NULL;
tag_t partition;
UF_PS_ask_current_partition(&partition);
PK_BODY_create_change_partition(pkBody,&body_tag);
tag_t body_tag=NULL;
UF_PS_create_obj_from_ps_tag(pkBody,&body_tag);
UF_DISP_add_item_to_display(body_tag);
return body_tag;
}