uf简单拉伸
头文 #include <uf_modl.h>
函数 UF_MODL_create_extruded
UG/Open API 提供了相当多的函数用于创建拉伸特征,这里介绍四个常用的函数。其
他函数基本与此类似只是参数与应用场合稍有不同。函数 UF_MODL_create_extruded()用
于创建拉伸实体,拉伸锥角(taper angle)与界限(limit)为字符串变量,在使用时可
以表达式的形式输入。当使用锥角选项时,只能拉伸直线或圆弧,如果拉伸开放的截面,
必须将拉伸锥角设置为 0 (如 char *taper_angle = "0.0"),该函数的参数说明如表 5-4所示。
extern int UF_MODL_create_extruded (
uf_list_p_t objects,
char * taper_angle,
char * limit[ 2 ],
double point[ 3 ],
double direction[ 3 ],
UF_FEATURE_SIGN sign,
uf_list_p_t * features );
参 数 I/O 类型 描 述
uf_list_p_t objects Input 拉伸对象的标识链表
char * taper_angle Input 拉伸锥角
char * limit[2] Input 拉伸界限:limit[0]为拉伸起始值;limit[1]为拉伸终止值
double point[3] Input 不再使用
double direction[3] Input 拉伸方向
UF_FEATURE_SIGN sign Input 布尔操作类型
uf_list_p_t * features Output to be freed 建的拉伸特征的标识链表,使用函数 UF_MODL_delete_list()释放内存
//【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】
//UF_FEATURE_SIGN sign=UF_NULLSIGN; //创建新的几何实体
//UF_FEATURE_SIGN sign=UF_POSITIVE; //添加到目标实体,做加运算
//UF_FEATURE_SIGN sign=UF_NEGATIVE; //从目标实体中去除,做减运算
//UF_FEATURE_SIGN sign=UF_UNSIGNED; //与目标实体做交运算
//【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】
//咧1,创建一条直线做拉伸操作生成片体
tag_t object_tag;
UF_CURVE_line_t line_coords; //直线函数
line_coords.start_point[0]=0; //启始点坐标
line_coords.start_point[1]=0;
line_coords.start_point[2]=0;
line_coords.end_point[0]=10; //终止点坐标
line_coords.end_point[1]=10;
line_coords.end_point[2]=0;
UF_CURVE_create_line(&line_coords,&object_tag); //创建一条直线
uf_list_p_t objects,features; //对象列表
UF_MODL_create_list(&objects); // 必须写上不然下一条代码不成立
UF_MODL_put_list_item(objects, object_tag); // object_tag对象加入到objects对象列表尾部
char * taper_angle="0.0"; //锥角
char * limit[ 2 ]={"5","10"}; //起始值,终止值
double point[ 3 ]={0,0,0}; //不再使用
double direction[ 3 ]={0,0,1}; //拉伸方向
UF_FEATURE_SIGN sign=UF_NULLSIGN; //创建新的几何实体
UF_MODL_create_extruded (objects, taper_angle, limit, point, direction, sign, &features);//拉伸
//【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】
//咧2,创建7条直线形成封闭区域做拉伸操作生成实体
tag_t object_tag[7];
UF_CURVE_line_t line_coords; //直线函数
line_coords.start_point[0]=0; //启始点坐标
line_coords.start_point[1]=0;
line_coords.start_point[2]=0;
line_coords.end_point[0]=10; //终止点坐标
line_coords.end_point[1]=0;
line_coords.end_point[2]=0;
UF_CURVE_create_line(&line_coords,&object_tag[0]); //创建一条直线
line_coords.start_point[0]=0; //启始点坐标
line_coords.start_point[1]=0;
line_coords.start_point[2]=0;
line_coords.end_point[0]=0; //终止点坐标
line_coords.end_point[1]=10;
line_coords.end_point[2]=0;
UF_CURVE_create_line(&line_coords,&object_tag[1]); //创建一条直线
line_coords.start_point[0]=0; //启始点坐标
line_coords.start_point[1]=10;
line_coords.start_point[2]=0;
line_coords.end_point[0]=10; //终止点坐标
line_coords.end_point[1]=10;
line_coords.end_point[2]=0;
UF_CURVE_create_line(&line_coords,&object_tag[2]); //创建一条直线
line_coords.start_point[0]=10; //启始点坐标
line_coords.start_point[1]=10;
line_coords.start_point[2]=0;
line_coords.end_point[0]=10; //终止点坐标
line_coords.end_point[1]=0; //
line_coords.end_point[2]=0;
UF_CURVE_create_line(&line_coords,&object_tag[3]); //创建一条直线
line_coords.start_point[0]=2; //启始点坐标
line_coords.start_point[1]=2;
line_coords.start_point[2]=0;
line_coords.end_point[0]=5; //终止点坐标
line_coords.end_point[1]=2;
line_coords.end_point[2]=0;
UF_CURVE_create_line(&line_coords,&object_tag[4]); //创建一条直线
line_coords.start_point[0]=5; //启始点坐标
line_coords.start_point[1]=2;
line_coords.start_point[2]=0;
line_coords.end_point[0]=2; //终止点坐标
line_coords.end_point[1]=5;
line_coords.end_point[2]=0;
UF_CURVE_create_line(&line_coords,&object_tag[5]); //创建一条直线
line_coords.start_point[0]=2; //启始点坐标
line_coords.start_point[1]=5;
line_coords.start_point[2]=0;
line_coords.end_point[0]=2; //终止点坐标
line_coords.end_point[1]=2; //
line_coords.end_point[2]=0;
UF_CURVE_create_line(&line_coords,&object_tag[6]); //创建一条直线
uf_list_p_t objects,features; //对象列表
UF_MODL_create_list(&objects); // 必须写上不然下一条代码不成立
UF_MODL_put_list_item(objects, object_tag[0]); // object_tag[0]对象加入到objects对象列表尾部
UF_MODL_put_list_item(objects, object_tag[1]);
UF_MODL_put_list_item(objects, object_tag[2]);
UF_MODL_put_list_item(objects, object_tag[3]);
UF_MODL_put_list_item(objects, object_tag[4]);
UF_MODL_put_list_item(objects, object_tag[5]);
UF_MODL_put_list_item(objects, object_tag[6]);
char * taper_angle="0.0"; //锥角
char * limit[ 2 ]={"5","10"}; //起始值,终止值
double point[ 3 ]; //无效可以不写
double direction[ 3 ]={0,0,1}; //拉伸方向
UF_FEATURE_SIGN sign=UF_NULLSIGN; //创建新的几何实体
//拉伸
UF_MODL_create_extruded (
objects,
taper_angle, //锥角
limit, //起始值,终止值
point, //无效可以不写
direction, //拉伸方向
sign, //布尔操作类型
&features); //返回对象
//【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】
_____________________________________________________________________________ _
中磊UG二次开发教程 梅雷著 qq1821117007
学UG就上UG网 http://www.9sug.com/ |