点击查看详细介绍

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

misnn 9年前 1733 0

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


函数结构:
UF_ATTR_read_value
(
tag_t object,
char * title,
int type,
UF_ATTR_value_p_t value
)

函数说明:
读出的给定类型的具有指定的属性的值 标题。如果属性的类型是UF_ATTR_any(或6)然后返回与给定标题中找到的第一个属性的值。注意:主叫方不应该依赖属性在任何返回特定的顺序。UF_ATTR_bool(8)如果没有找到属性,那么零将返回为属性的 类型。传递一个对象标签会导致读取距离的值属性的对象。在零件标记传递会导致阅读从该部分的一部分属性值。鼓励在新的应用

函数参数:
第1个参数为输入:
object代表参数变量,tag_t 为输入参数类型,部分标签或对象标记。

第2个参数为输入:
输入char * 字符类型的参数,参数的变量格式为title,属性名称(最大字符长度为UF_ATTR_MAX_TITLE BUFSIZE)

第3个参数为输入:
输入int 整数型的参数,参数的变量格式为type,属性类型搜索:UF超滤ATTR_bool UF ATTR_integer ATTR_real UF_ATTR_time UF_ATTR_null UF_ATTR_string UF_ATTR_any UF_ATTR_reference

第4个参数为输入:
value代表参数变量,UF_ATTR_value_p_t 为输入参数类型,类型化的属性值:如果“类型”是UF_ATTR_string然后在“值 - > value.string”必须是NULL或点的大小UF_ATTR_MAX_STRING_BUFSIZE的字符缓冲区。如果该值为NULL,则返回的缓冲区进行分配,对用户负责通过调用UF_free释放它()。如果“type”是UF_ATTR_reference然后在“值 - > value.string”必须是NULL或点的大小UF_ATTR_MAX_STRING_BUFSIZE的字符缓冲区。如果该值为NULL,则返回的缓冲区进行分配,对用户负责通过调用UF_free释放它()。如果“值 - >类型”= 0,则该属性不存在搜索的类型。如果“类型”是UF_ATTR_any并返回“值 - >键入”是UF_ATTR_string或UF_ATTR_reference,那么返回的字符串是动态分配的,你必须使用UF_free来释放内存。如果“值 - >类型”是UF_ATTR_time,则该值将是在其上被执行的程序的计算机的当前时区。

UF_ATTR_read_value函数实例代码演示:
[quote]
#include <stdio.h>
#include <string.h>
#include <uf.h>
#include <uf_defs.h>
#include <uf_attr.h>
#include <uf_obj.h>
#include <uf_disp.h>
#include <uf_ui.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)
{
tag_t obj1 = NULL_TAG;
tag_t obj2 = NULL_TAG;
char title1[UF_ATTR_MAX_STRING_LEN+1] = "CYL1";
char title2[UF_ATTR_MAX_STRING_LEN+1] = "BLOCK1";
char sval[UF_ATTR_MAX_STRING_LEN+1];
char message[MAX_LINE_SIZE+1];
char buffer[UF_UI_MAX_STRING_LEN+1];
char *object_name1 = "OBJECT1";
char *object_name2 = "OBJECT2";
UF_ATTR_value_t value1,value2;
UF_CALL(UF_UI_open_listing_window());

UF_CALL(UF_OBJ_cycle_by_name(object_name1,&obj1));
printf("obj1 = %d\n", obj1);
UF_CALL(UF_OBJ_cycle_by_name(object_name2,&obj2));
printf("obj2 = %d\n", obj2);
UF_CALL(UF_ATTR_read_value(obj1, title1, UF_ATTR_any, &value1));
strcpy(message, "Attribute Title : ");
strcat(message, title1);
/* Display the attribute's value */
switch ( value1.type ) {
case UF_ATTR_integer :
sprintf(buffer, "Integer Attribute : %d\n",
value1.value.integer);
UF_UI_write_listing_window(buffer);
break;
case UF_ATTR_real :
sprintf(buffer, "Floating Point Attribute : %f\n",
value1.value.real);
UF_UI_write_listing_window(buffer);
break;
case UF_ATTR_time :
sprintf(buffer, "Date & Time Attribute : %d, %d\n",
value1.value.time[0],
value1.value.time[1]);
UF_UI_write_listing_window(buffer);
break;
case UF_ATTR_null :
UF_UI_write_listing_window("Null Attribute :\n");
break;
case UF_ATTR_string :
strcpy(sval, value1.value.string);
sprintf(buffer, "String Attribute : %s\n", sval);
UF_UI_write_listing_window(buffer);
UF_free(value1.value.string);
break;
case UF_ATTR_reference :
strcpy(sval,value1.value.reference);
sprintf(buffer, "Reference Attribute: %s\n", sval);
UF_UI_write_listing_window(buffer);
UF_free(value1.value.reference);
break;
default :
UF_UI_write_listing_window("Attribute Does Not Exist!\n");
break;
}
/* Set the attribute value's string pointer to point
to the 'sval' character array so that the string
attribute's value is read into 'sval'
*/
value2.value.string = sval;
UF_CALL(UF_ATTR_read_value(obj2, title2, UF_ATTR_string, &value2));

/* Display the string attribute of second object if it exists. */
if (value2.type != 0) {
sprintf(buffer, "String Attribute = %s\n", sval);
UF_UI_write_listing_window(buffer);
}
else
UF_UI_write_listing_window("String Attribute Does Not Exist for
second object!\n");
}
/*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)
请登录后发表新帖