点击查看详细介绍

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

misnn 9年前 904 0

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


函数结构:
UF_MODL_create_general_flange
(
tag_t target_face,
UF_STRING_p_t bend_edge_string,
UF_STRING_p_t spine_string,
UF_STRING_p_t section_curves,
int step_count,
int poly_cubic,
int reverse_normal,
int reverse_thicken,
char * thickness_str,
char * tolerance_str,
UF_MODL_parm_p_t plus,
UF_MODL_parm_t bend_radius [ ],
UF_MODL_parm_t bend_angle [ ],
UF_MODL_parm_t web_length [ ],
tag_p_t general_flange_tag
)

函数说明:
其目标面部创建一个一般的法兰,弯曲半径,弯曲角度,和网络的长度。随着这些项目的可选脊柱,厚度,公差串,弯曲的方向,以及步骤的数据可以被设置。 输出是相关联的一般凸缘的对象标识符。

函数参数:
第1个参数为输入:
target_face代表参数变量,tag_t 为输入参数类型,安装面广义法兰。凸缘被约束为相切此面沿着弯曲边缘。

第2个参数为输入:
bend_edge_string代表参数变量,UF_STRING_p_t 为输入参数类型,在切线面的边缘,用作连接边缘广义凸缘。

第3个参数为输入:
spine_string代表参数变量,UF_STRING_p_t 为输入参数类型,一个边缘或曲线用于定义弯曲和纸幅的剖面。如果这个值是零,弯曲边缘的字符串作为脊椎的字符串。

第4个参数为输入:
section_curves代表参数变量,UF_STRING_p_t 为输入参数类型,用作创建一个一般的法兰的替代方法的两个或多个部分的曲线。曲线必须开始相切的目标面,是与C0弯边,共面,首尾和来弥补交替的直线和圆弧。如果使用此参数,加,bend_radius,bend_angle和web_length被忽略。

第5个参数为输入:
输入int 整数型的参数,参数的变量格式为step_count,在广义凸缘步骤的数目。零是无效的数字。对于每一个步骤包括弯曲半径,弯曲角度和网络的值。

第6个参数为输入:
输入int 整数型的参数,参数的变量格式为poly_cubic,=通过精确的漫画代表0使用Rational精确的B样条曲线。 = 1使用多项式近似产生的表面具有更好的参数。这不会产生二次曲线精确。

第7个参数为输入:
输入int 整数型的参数,参数的变量格式为reverse_normal,= 0使用切线面法线在弯曲边的中心来确定该凸缘的方向。 =1使用在弯曲边的中心的切线面法线的逆来确定凸缘的方向。

第8个参数为输入:
输入int 整数型的参数,参数的变量格式为reverse_thicken,=0如果体型是固体,勾芡沿弯曲的方向上加上弯曲和网络。 =1如果体型是固体,勾芡加弯曲和网络相对的弯曲的方向。

第9个参数为输入:
输入char * 字符类型的参数,参数的变量格式为thickness_str,如果体型建模首选项设置为固体创建的固体本体的厚度。

第10个参数为输入:
输入char * 字符类型的参数,参数的变量格式为tolerance_str,这最初是从建模距离公差设定。此值作为建模距离公差相同的效果。

第11个参数为输入:
plus代表参数变量,UF_MODL_parm_p_t 为输入参数类型,弯曲边缘和弯曲的开始之间的靶面张力的法律规范。

第12个参数为输入:
bend_radius [ ]代表参数变量,UF_MODL_parm_t 为输入参数类型,弯曲半径的法律规范。

第13个参数为输入:
bend_angle [ ]代表参数变量,UF_MODL_parm_t 为输入参数类型,弯曲的角度的法律规范。

第14个参数为输入:
web_length [ ]代表参数变量,UF_MODL_parm_t 为输入参数类型,弯曲后的表面延伸的长度的法律规范。

第15个参数为输出:
general_flange_tag代表参数变量,tag_p_t 为输出参数类型,指针功能创建的法兰对象标识符

UF_MODL_create_general_flange函数实例代码演示:
图二步通用法兰这个例子需要一个空白的,开放的一部分。该代码创建一个块和一般的凸缘。

[quote]
#include <stdio.h>
#include <string.h>
#include <uf.h>
#include <uf_part.h>
#include <uf_curve.h>
#include <uf_csys.h>
#include <uf_defs.h>
#include <uf_modl.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)
{
char *part_name = "general_flange";

int reverse_normal, poly_cubic, reverse_thicken;
int nsteps;

char *edge_lens[] = {"100.0","100.0","10.0"};
char thickness_str[132];
char tolerance_str[132];

double origin[3]={0.0,0.0,0.0};

UF_MODL_parm_t plus;
UF_MODL_parm_t radius[2], angle[2], length[2];

tag_t block_tag, target_face, flange_obj_id;
tag_t part, edge1_tag;

UF_STRING_t bend_edge, spine;

uf_list_p_t edge_list;
uf_list_p_t face_list;

UF_FEATURE_SIGN sign = UF_NULLSIGN;

UF_CALL(UF_PART_new(part_name, UF_PART_ENGLISH, &part));

UF_CALL(UF_MODL_create_block1 ( sign, origin, edge_lens,
&block_tag));
UF_MODL_ask_feat_faces ( block_tag, &face_list);
UF_MODL_ask_list_item ( face_list, 4, &target_face);
UF_MODL_ask_face_edges ( target_face, &edge_list);
UF_MODL_ask_list_item ( edge_list, 2, &edge1_tag);

UF_MODL_init_string_list ( &bend_edge);
UF_MODL_init_string_list ( &spine);

UF_MODL_create_string_list (1, 1, &bend_edge);
UF_MODL_create_string_list (1, 1, &spine);

bend_edge.num = 1; /* number of items in string array
*/
bend_edge.string[0] = 1; /* number of items in id array */
bend_edge.dir[0] = (int) UF_MODL_CURVE_START_FROM_BEGIN;
bend_edge.id[0] = edge1_tag;

spine.num = 1;
spine.string[0] = 1;
spine.dir[0] = (int) UF_MODL_CURVE_START_FROM_END;
spine.id[0] = edge1_tag;

plus.method_type = UF_MODL_PARM_CONSTANT;
strcpy ( plus.defined_by.constant.value, "0.0");

nsteps = 2;

radius[0].method_type = UF_MODL_PARM_CONSTANT;
angle[0].method_type = UF_MODL_PARM_CONSTANT;
length[0].method_type = UF_MODL_PARM_CONSTANT;

radius[1].method_type = UF_MODL_PARM_CONSTANT;
angle[1].method_type = UF_MODL_PARM_CONSTANT;
length[1].method_type = UF_MODL_PARM_CONSTANT;

strcpy ( radius[0].defined_by.constant.value, "25.0");
strcpy ( angle[0].defined_by.constant.value, "90.0");
strcpy ( length[0].defined_by.constant.value, "10.0");

strcpy ( radius[1].defined_by.constant.value, "30");
strcpy ( angle[1].defined_by.constant.value, "40.0");
strcpy ( length[1].defined_by.constant.value, "10.0");

reverse_normal = 0; /* =0 no change =1 flip it */
poly_cubic = 0; /* =0 rational =1
polynomial(approximate) */
reverse_thicken = 1; /* =0 along bend direction =1 opposite
bend dir */

strcpy ( thickness_str, "10.0");
strcpy ( tolerance_str, "0.01");

UF_CALL(UF_MODL_create_general_flange (target_face,
&bend_edge,
&spine, NULL, nsteps, poly_cubic, reverse_normal,
reverse_thicken, thickness_str, tolerance_str, &plus,
radius, angle, length, &flange_obj_id));
}

void ufusr(char *param, int *retcode, int paramLen)
{
if (!UF_CALL(UF_initialize()))
{
do_ugopen_api();
UF_CALL(UF_terminate());
}
}

int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}



[/quote]

0

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