- 积分
- 10
- 注册时间
- 2007-10-5
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2009-4-25 20:58:58
|
显示全部楼层
来自 河北廊坊
看来这个函数挺热的,我就试着回答一下吧。我给一个用这个函数的例子,相信你可以看懂的。
int
i,
status,
align = 1, /*1 = Parameter, 2 = Arc length*/
inter = 1, /*1 = Linear, 2 = Cubic*/
bodyType = 1; /*0 = Sheet, 1 = Solid*/
double
tolerance[] = {0.0, 0.0, 0.0},
val[] = {0.0, 0.0, 0.0};
UF_STRING_t gui;
UF_STRING_t sec;
UF_STRING_t spine;
UF_METHOD_t
Orient,
Scale;
Orient.method = 0;
Orient.inter = 0;
Orient.id = NULL_TAG;
Orient.value[0] = 0.0;
Orient.value[1] = 0.0;
Orient.value[2] = 0.0;
Orient.s_curve = NULL;
Scale.method = 7; /*Scale uniformly*/
Scale.inter = 0;
Scale.id = NULL_TAG;
Scale.value[0] = 0.0;
Scale.value[1] = 0.0;
Scale.value[2] = 0.0;
Scale.s_curve = NULL;
if(section == NULL_TAG)
{
CAD_Error("No section availible");
return FALSE;
}
if((guide1 == NULL_TAG) || (guide2 == NULL_TAG) || (guide3 == NULL_TAG))
{
CAD_Error("No guides availible");
return FALSE;
}
UF_MODL_init_string_list(&gui);
UF_MODL_init_string_list(&sec);
UF_MODL_init_string_list(&spine);
UF_MODL_create_string_list(3, 50, &gui);
UF_MODL_create_string_list(1, 50, &sec);
UF_MODL_create_string_list(0, 0, &spine);
gui.num = 3;
for(i = 0; i < 3; i++)
{
gui.string[i] = 1;
gui.dir[i] = UF_MODL_CURVE_START_FROM_BEGIN;
}
gui.id[0] = guide1; gui.id[1] = guide2; gui.id[2] = guide3;
sec.num = 1;
sec.string[0] = 1;
sec.dir[0] = UF_MODL_CURVE_START_FROM_BEGIN;
sec.id[0] = section;
status = UF_MODL_create_sweep(&gui, &sec, &spine, &Orient, &Scale, &align, &inter, &bodyType, UF_NULLSIGN, tolerance, &*retTag);
if(status)
{
UF_MODL_free_string_list(&gui);
UF_MODL_free_string_list(&sec);
UF_MODL_free_string_list(&spine);
CAD_Error2("Failed to sweep face", status);
return FALSE;
} |
|