购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
函数结构:UF_ask_grip_args( int argument_count, UF_args_p_t gruf_arg_list) 函数说明:
这个例程用于从一握节目接收参数。该握程序设置这些参数与命令GRIP,GRARGS。握程序然后调用内部的开放API程序的执行与GRIP XSPAWN命令。开放API的程序,在执行过程中,维护系统,包括任何交互式的完全控制权陈述或错误消息。从GRIP收到的参数,定义结构,UF_args_s,即介绍了与GRIP程序共享的参数。这个定义必须提供给GRIP的定义相匹配GRARGS命令,以便把手变量内容可以被复制到开放的内容API变量。请注意以下限制:。该GRARGS命令被限制为103的参数。。字符串输入到UF_ask_grip_args尺寸应宣布最大GRIP字符串(132个字符),加上一个空字符或133个字符。。呼叫不能嵌套。例如,一个序列,其中GRIP XPAWNs一个它采用UF_call_grip执行GRIP内部开放的API程序,和类似的话,是不允许的。
函数参数:
第1个参数为输入:
输入int 整数型的参数,参数的变量格式为argument_count,算上从GRIP可执行参数
第2个参数为输入:
gruf_arg_list代表参数变量,UF_args_p_t 为输入参数类型,从GRIP的数据参数。结构的阵列,其中阵列中的每个元素是一个包含一个参数的类型,大小,和地址的结构。实际值的这次调用进行修改。
UF_ask_grip_args函数实例代码演示:
以下是例子NX开放的API程序。您调用此从GRIP程序的程序包,然后从数据接收创建一个简单的孔需要。这个程序返回一个字符串指示可能发生的任何错误。
[quote]
#include <stdio.h>
#include <string.h>
#include <uf.h>
#include <uf_modl.h>
#define GRIP_ARG_COUNT 7
/*ARGSUSED*/
extern void ufusr (char *param, int *retcod, int param_len)
{
/* Declarations */
tag_t hole_faces[2], hole_feature;
double hole_position[3], hole_direction[3];
char hole_diameter[133], hole_depth[133];
char hole_angle[133], error_string[133];
UF_args_t grip_arg_list[GRIP_ARG_COUNT];
int error_status;
/* Define the argument list for NX Open API calling GRIP */
grip_arg_list[0].type = UF_TYPE_DOUBLE_ARRAY;
grip_arg_list[0].length = 3;
grip_arg_list[0].address = hole_position;
grip_arg_list[1].type = UF_TYPE_DOUBLE_ARRAY;
grip_arg_list[1].length = 3;
grip_arg_list[1].address = hole_direction;
grip_arg_list[2].type = UF_TYPE_CHAR;
grip_arg_list[2].length = 0;
grip_arg_list[2].address = hole_diameter;
grip_arg_list[3].type = UF_TYPE_CHAR;
grip_arg_list[3].length = 0;
grip_arg_list[3].address = hole_depth;
grip_arg_list[4].type = UF_TYPE_CHAR;
grip_arg_list[4].length = 0;
grip_arg_list[4].address = hole_angle;
grip_arg_list[5].type = UF_TYPE_TAG_T_ARRAY;
grip_arg_list[5].length = 2;
grip_arg_list[5].address = hole_faces;
grip_arg_list[6].type = UF_TYPE_CHAR;
grip_arg_list[6].length = 0;
grip_arg_list[6].address = error_string;
/* Initialize NX Open API */
UF_initialize();
/* Update the local arguments with the contents from the GRIP variables */
error_status = UF_ask_grip_args (GRIP_ARG_COUNT, grip_arg_list);
if (error_status != 0)
{
UF_get_fail_message (error_status, error_string);
fprintf (stderr, "UF_ask_grip_args failed due to: %s\n", error
_string);
return;
}
/* Create the simple hole */
error_status = UF_MODL_create_simple_hole (hole_position, hole_direction,
hole_diameter, hole_depth,
hole_angle, hole_faces[0],
hole_faces[1], &hole_feature)
;
if (error_status != 0)
UF_get_fail_message (error_status, error_string);
else
strcpy (error_string, "No error.");
/* Update the GRIP arguments with the contents from the local variables */
error_status = UF_set_grip_args (GRIP_ARG_COUNT, grip_arg_list);
if (error_status != 0)
{
UF_get_fail_message (error_status, error_string);
fprintf (stderr, "UF_set_grip_args failed due to: %s\n", error
_string);
return;
}
/* Terminate NX Open API */
UF_terminate();
}
[/quote]