点击查看详细介绍

UF_MODL_create_extruded() 函数的参数解释说明、函数详细用法,以及实例代码演示

misnn 9年前 1454 0

购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008  QQ号:85585969  


函数结构:
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
)

函数说明:
创建一个挤压本体。的锥角,并限制变量是文字串,这样,如果需要的表达式可被输入。 您可以只有在使用锥形选项时使用直线和弧线。另外,如果你挤出一个开放的配置文件,必须锥角设置为零。 在里面示例代码我们选择,所以我们设定的值,不使用此选项等于零(炭taper_angle=“0.0”)。如果你有一个内部的圈子已关闭发电机曲线的边界,为的锥角圆圈符号相反。例如,如果您指定的1锥角度(炭taper_angle=“1.0”),该圆的锥角是零下1度。见建模用户手册,了解有关的更多详细信息的锥角。通过对象列表创建的配置文件必须是连续的。

函数参数:
第1个参数为输入:
objects代表参数变量,uf_list_p_t 为输入参数类型,对象的列表被挤压。

第2个参数为输入:
输入char * 字符类型的参数,参数的变量格式为taper_angle,锥度角(度)。

第3个参数为输入:
输入char * 字符类型的参数,参数的变量格式为limit [ 2 ],挤出的限制。这被声明为:字符限制[2]。的第一个值是在挤出的起始值和第二值是挤出(见例如节目)的末尾。

第4个参数为输入:
输入double 双精度类型的参数,参数的变量格式为point [ 3 ],不曾用过

第5个参数为输入:
输入double 双精度类型的参数,参数的变量格式为direction [ 3 ],挤压轴。

第6个参数为输入:
sign代表参数变量,UF_FEATURE_SIGN 为输入参数类型,要执行的操作的符号。UF_NULLSIGN=创建新的目标坚实UF_POSITIVE=添加到目标固体UF_NEGATIVE=从目标减去固体UF_UNSIGNED=相交目标固体

第7个参数为输出:
features代表参数变量,uf_list_p_t * 为输出参数类型,功能标识符的列表中创建。此列表必须通过调用UF_MODL_delete_list释放。

UF_MODL_create_extruded函数实例代码演示:
下面的例子中挤出沿z轴线和弧。三线和两个圆弧绘制。中心线为基准线只,并且不包括在待挤压的物体。
[quote]
#include <stdio.h>
#include <uf.h>
#include <uf_curve.h>
#include <uf_csys.h>
#include <uf_modl.h>
#include <uf_disp.h>
#include <uf_part.h>
#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
static int report( char *file, int line, char *call, int irc)
{
if (irc)
{
char messg[133];
printf("%s, line %d: %s\n", file, line, call);
(UF_get_fail_message(irc, messg)) ?
printf(" returned a %d\n", irc) :
printf(" returned error %d: %s\n", irc, messg);
}
return(irc);
}
static void do_ugopen_api(void)
{
double l1_endpt1[3] = {-1.4476606170268,2.3788333712953,0.0};
double l1_endpt2[3] = { 1.5471310496399,2.2539419253757,0.0};
double l2_endpt1[3] = {-1.4476606170268,1.2548103580189,0.0};
double l2_endpt2[3] = { 1.5471310496399,1.3797018039385,0.0};
double l3_endpt1[3] = {-1.4710981170268,1.8168218646571,0.0};
double l3_endpt2[3] = { 1.5289018829732,1.8168218646571,0.0};
double direction[3] = {0.0,0.0,1.0};
double ref_pt[3];
double arc1_start_ang = (PI/180)*87.611984536731;
double arc1_end_ang = (PI/180)*272.38801546327;
double arc1_rad = 0.5625;
double arc2_start_ang = (PI/180)*272.38801546327;
double arc2_end_ang = (PI/180)*447.61198453673;
double arc2_rad = 0.4375;
char *part_name = "arm";
char *taper_angle = "0.0";
char *limit1[2] = {"1.0", "1.25"};
int english_units = 2, i, count = 4;
tag_t objarray[5], part, wcs_tag, matrix_tag;
uf_list_p_t loop_list, features;
UF_FEATURE_SIGN create = UF_NULLSIGN;
UF_CURVE_line_t line1, line2, line3;
UF_CURVE_arc_t arc1, arc2;
line1.start_point[0] = l1_endpt1[0];
line1.start_point[1] = l1_endpt1[1];
line1.start_point[2] = l1_endpt1[2];
line1.end_point[0] = l1_endpt2[0];
line1.end_point[1] = l1_endpt2[1];
line1.end_point[2] = l1_endpt2[2];
line2.start_point[0] = l2_endpt1[0];
line2.start_point[1] = l2_endpt1[1];
line2.start_point[2] = l2_endpt1[2];
line2.end_point[0] = l2_endpt2[0];
line2.end_point[1] = l2_endpt2[1];
line2.end_point[2] = l2_endpt2[2];
line3.start_point[0] = l3_endpt1[0];
line3.start_point[1] = l3_endpt1[1];
line3.start_point[2] = l3_endpt1[2];
line3.end_point[0] = l3_endpt2[0];
line3.end_point[1] = l3_endpt2[1];
line3.end_point[2] = l3_endpt2[2];
arc1.start_angle = arc1_start_ang;
arc1.end_angle = arc1_end_ang;
arc1.arc_center[0] = l3_endpt1[0];
arc1.arc_center[1] = l3_endpt1[1];
arc1.arc_center[2] = l3_endpt1[2];
arc1.radius = arc1_rad;
arc2.start_angle = arc2_start_ang;
arc2.end_angle = arc2_end_ang;
arc2.arc_center[0] = l3_endpt2[0];
arc2.arc_center[1] = l3_endpt2[1];
arc2.arc_center[2] = l3_endpt2[2];
arc2.radius = arc2_rad;

UF_CALL(UF_PART_new(part_name, english_units, &part));
UF_CALL(UF_CURVE_create_line(&line1,&objarray[0]));
UF_CALL(UF_CURVE_create_line(&line2,&objarray[1]));
UF_CALL(UF_CURVE_create_line(&line3,&objarray[4]));
UF_CALL(UF_CSYS_ask_wcs(&wcs_tag));
UF_CALL(UF_CSYS_ask_matrix_of_object(wcs_tag, &matrix_tag));
arc1.matrix_tag = matrix_tag;
arc2.matrix_tag = matrix_tag;
UF_CALL(UF_CURVE_create_arc(&arc1, &objarray[2]));
UF_CALL(UF_CURVE_create_arc(&arc2, &objarray[3]));
UF_CALL(UF_MODL_create_list(&loop_list));
for(i = 0; i < count; i++) {
UF_CALL(UF_MODL_put_list_item(loop_list, objarray[i]));
}
UF_CALL(UF_MODL_create_extruded(loop_list, taper_angle, limit1,
ref_pt, direction, create, &features));

UF_PART_save();
}
/*ARGSUSED*/
void ufusr(char *param, int *retcode, int param_len)
{
if (!UF_CALL(UF_initialize()))
{
do_ugopen_api();
UF_CALL(UF_terminate());
}
}
int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}




[/quote]

0

最新回复 (0)
请登录后发表新帖