iCAx开思工具箱
标题:
【求助】UF_MODL_create_chamfer的用法
[打印本页]
作者:
请教问题
时间:
2004-3-31 21:19
标题:
【求助】UF_MODL_create_chamfer的用法
我在精华区 手把手教你学ug二次开发中看到UF_MODL_create_chamfer的用法,但是没看懂,希望哪位大侠给举一个简单的例子,在圆柱上导角,
UF_FEATURE_SIGN sign=UF_NULLSIGN;
double origin[ 3 ]={0.0,0.0,0.0};
char * height="6";
char * diam="2";
ouble direction[ 3 ]={0.0,0.0,1.0};
tag_t cyl_obj_id=0;
i_ret=UF_MODL_create_cylinder ( sign, NULL, origin, height,diam,direction, [$ cyl_obj_id)]
这些可以画出圆柱,下面怎么导角呢?请各位帮帮忙阿
作者:
goodluckwu
时间:
2004-4-1 08:43
我不太清楚chamfer和blend的区别,不过我做过blend,是这样的,也许对你有帮助:
1。使用UF_MODL_ask_body_faces()获得所有的face。
2。便利所有face,使用UF_MODL_ask_face_props(),提取每个face的法线方向,找到你要的face(如果你使用别的方法来区分你所要倒角的面也可以)
3。使用UF_MODL_ask_face_edges()获得该面所有的边。
4。使用UF_ask_curve_data()之类的函数来判断是否是你想要的边。找到了就可以调用UF_MODL_create_blend()来倒角了。当然,如果你想把这个面上所有的边都倒掉,那就不必判断了。直接挨着倒就行了
作者:
请教问题
时间:
2004-4-1 09:51
谢谢上面的那位回答,我在精华区 手把手教你学ug二次开发中看到chamfer的用法,是zzz编辑的,希望明白这个问题的大侠们再指点一下,非常感激
作者:
windcc
时间:
2004-4-1 10:49
UF_MODL_create_chamfer是边倒角,倒出来的是倒角是个小平面。blend是圆倒角,倒出来的是曲面,往里凹或者往外凸,自动判断。
UF_MODL_create_chamfer我做过一个例子。
参数:
int cyl_1_num_faces,ii,cyl_1_num_edge;
double rad[2]={0,0};
double cyl_1_face_param[2],cyl_1_face_point[3],cyl_1_face_u_deriv1[3];
double cyl_1_face_v_deriv1[3],cyl_1_face_u_deriv2[3],cyl_1_face_v_deriv2[3];
double cyl_1_face_normal[3],cyl_1_face_radii[2];
uf_list_p_t cyl_1_face_list, cyl_1_edge_list, chamfer_1_edge_list;
tag_t cyl_1_face_tag, place_face[2],cyl_1_edge_tag[2],edge_obj_1;
UF_CURVE_arc_t cyl_1_arc_coords;
int chamfer_1_subtype = 2; /*2 = Double Offset*/
char * chamfer_1_offset1 = "0.3";
char * chamfer_1_offset2 = "0.3";
char * chamfer_1_theta = "0";
//uf_list_p_t chamfer_1_edge_list;
tag_t chamfer_feature_obj_1;
实现:
UF_MODL_ask_feat_faces(cyl_obj_1, [$cyl_1_face_list)]
UF_MODL_ask_list_count(cyl_1_face_list, [$cyl_1_num_faces)]
cyl_1_face_param[0] = 0.5;
cyl_1_face_param[1] = 0.5;
for (ii = 0;ii < cyl_1_num_faces;ii++)
{
UF_MODL_ask_list_item(cyl_1_face_list, ii, [$cyl_1_face_tag)]
UF_MODL_ask_face_props(cyl_1_face_tag,
cyl_1_face_param,
cyl_1_face_point,
cyl_1_face_u_deriv1,cyl_1_face_v_deriv1,
cyl_1_face_u_deriv2,cyl_1_face_v_deriv2,
cyl_1_face_normal,cyl_1_face_radii);
if (cyl_1_face_normal[2] < -0.75)
place_face[ 0 ] = cyl_1_face_tag;
}
UF_MODL_ask_face_edges (place_face[ 0 ], [$cyl_1_edge_list)]
UF_MODL_ask_list_count(cyl_1_edge_list, [$cyl_1_num_edge)]
for(ii=0;ii<cyl_1_num_edge;ii++)
{
UF_MODL_ask_list_item(cyl_1_edge_list, ii, [$cyl_1_edge_tag[ii])]
UF_CURVE_ask_arc_data (cyl_1_edge_tag[ii], [$cyl_1_arc_coords)]
rad[ii] = cyl_1_arc_coords.radius;
}
if(rad[ 0 ] > rad[ 1 ] )
{
edge_obj_1 = cyl_1_edge_tag[ 0 ];
}
else
{
edge_obj_1 = cyl_1_edge_tag[ 1 ];
}
UF_MODL_create_list([$chamfer_1_edge_list)]
UF_MODL_put_list_item(chamfer_1_edge_list, edge_obj_1);
UF_MODL_create_chamfer (chamfer_1_subtype,
chamfer_1_offset1,
chamfer_1_offset2,
chamfer_1_theta,
chamfer_1_edge_list,
[$chamfer_feature_obj_1)]
作者:
请教问题
时间:
2004-4-1 10:53
帮帮我阿,各位大侠,我急着用这个函数阿,
作者:
请教问题
时间:
2004-4-1 10:55
谢谢上面这位阿,万分感谢
作者:
请教问题
时间:
2004-4-1 10:58
请问windcc 大侠:我在圆柱上导角,要用到那一个阿,
作者:
请教问题
时间:
2004-4-1 11:00
UF_MODL_create_chamfer是边倒角,倒出来的是倒角是个小平面。blend是圆倒角,倒出来的是曲面 ,在圆柱上导角,要用blend吗
作者:
windcc
时间:
2004-4-1 11:29
请教问题 wrote:
请问windcc 大侠:我在圆柱上导角,要用到那一个阿,
想要什么就用什么函数做呗:)
要用blend就用blend,要用chamfer就用chamfer呗
作者:
windcc
时间:
2004-4-1 11:34
blend:
参数:
/*8倒角的参数*/
/*取圆柱体1的平面,判断参数*/
int num_faces,ii,num_mao,num_edge;
double face_param[2],face_point[3],face_u_deriv1[3];
double face_v_deriv1[3],face_u_deriv2[3],face_v_deriv2[3];
double face_normal[3],face_radii[2];
uf_list_p_t face_list;
//tag_t place_face[1];
tag_t face_tag, mao_tag,edge_tag,edge_obj_cir;
//tag_t top_face[1],
uf_list_p_t cy1_edge_list, blend1_edge_list;
int edge_type;
const char * blend1_radius = "0.2";
// uf_list_p_t blend1_edge_list;
int blend1_smooth_overflow = 0;
int blend1_cliff_overflow = 0;
int blend1_notch_overflow = 0;
double blend1_vrb_tool = 0;
tag_t blend1_feature_obj_1;
实现:
//从体取面
UF_MODL_ask_feat_faces(mao_tag , [$face_list)]
UF_MODL_ask_list_count(face_list, [$num_faces)]
face_param[0] = 0.5;
face_param[1] = 0.5;
for (ii = 0;ii < num_faces;ii++)
{
UF_MODL_ask_list_item(face_list, ii, [$face_tag)]
UF_MODL_ask_face_props(face_tag,
face_param,
face_point,
face_u_deriv1,face_v_deriv1,
face_u_deriv2,face_v_deriv2,
face_normal,face_radii);
// if (face_normal[2] > 0.75)
// place_face[0] = face_tag;
// if (face_normal[1] < -0.75)
// top_face[0] = face_tag;
}
//从面取线
UF_MODL_ask_face_edges (face_tag, [$cy1_edge_list)]
UF_MODL_ask_list_count(cy1_edge_list, [$num_edge)]
for(ii=0;ii<num_edge;ii++)
{
UF_MODL_ask_list_item(cy1_edge_list, ii, [$edge_tag)]
UF_MODL_ask_edge_type (
edge_tag,
[$edge_type)]
if(edge_type == UF_MODL_CIRCULAR_EDGE)
{
edge_obj_cir = edge_tag;
}
// sprintf(temp,"vertex_count=%f\n",point1[2]);
// UF_UI_write_listing_window(temp);
}
UF_MODL_create_list([$blend1_edge_list)]
UF_MODL_put_list_item(blend1_edge_list, edge_obj_cir);
UF_MODL_create_blend (blend1_radius, blend1_edge_list, blend1_smooth_overflow, blend1_cliff_overflow, blend1_notch_overflow, blend1_vrb_tool, [$blend1_feature_obj_1)]
作者:
请教问题
时间:
2004-4-1 11:41
我是一个新手,对函数的用法不清楚,想做一个在圆柱边上导圆角,实在作不出来,
作者:
请教问题
时间:
2004-4-1 11:43
windcc 你好厉害阿,我很崇拜,想请问你的联习方式,好吗
作者:
请教问题
时间:
2004-4-3 16:51
windcc,请你帮我看看螺纹的画法好吗?我画不出,只能用特征表示
作者:
jelowell
时间:
2007-4-17 19:19
我也急于知道 在二次开发中如何进行倒角
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3