这两个函数对我来说还是印象比较深刻的,因为当初刚来上海找工作的时候,在那家公司做的项目就用到了tag转handle。
但是无奈我当时基础太差,虽然项目没做好,但是这两个函数却印象深刻,感觉一辈子都不会忘记。
关于tag和handle,我通俗的讲,
tag就是临时对象标识,关了prt重新打开,tag就会变.是一个整数型
handle就是永久对象标识,关了prt重新打开,handle也不会变,是一个字符串
用到的就是两个函数
tag转handle
UF_TAG_ask_handle_of_tag
handle转tag
UF_TAG_ask_tag_of_handle
下面贴两张图,看西门子官方是怎么介绍的
例子
NX9+VS2012
#include <uf.h>
#include <uf_ui.h>
#include <uf_modl.h>
#include <uf_obj.h>
UF_initialize();
//打开单对象选择对话框
char sCue[] = "请选择实体";
char sTitle[] = "选择实体";
int iScope = UF_UI_SEL_SCOPE_WORK_PART;
int iResponse = 0;
tag_t tObject = NULL_TAG;
double adCursor[3];
tag_t tView = NULL_TAG;
UF_UI_select_with_single_dialog(sCue, sTitle, iScope, init_proc, NULL, &iResponse, &tObject, adCursor, &tView);
if (iResponse == UF_UI_OK || iResponse == UF_UI_OBJECT_SELECTED || iResponse == UF_UI_OBJECT_SELECTED_BY_NAME)
{
//取消高亮
UF_DISP_set_highlight(tObject, 0);
//tag转handle
char* handle = UF_TAG_ask_handle_of_tag(tObject);
//打印
UF_UI_open_listing_window();
UF_UI_write_listing_window(handle);
char msg[256];
sprintf_s(msg, "%d", tObject);
UF_UI_write_listing_window("
");
UF_UI_write_listing_window(msg);
//handle转tag
tag_t body_tag = UF_TAG_ask_tag_of_handle(handle);
//设置体的颜色
UF_OBJ_set_color(body_tag, 186);
}
UF_terminate();
Caesar卢尚宇
2021年3月11日
Caesar卢尚宇
2021年3月11日