1.Tag
Tag是对象的唯一标识符,它仅仅是把一个UG对象载入内存时的标示符,是流水号,在prt保存再打开后,Tag就会变。
UF中对象标识符用tag_t表示,tag_t 在UG/Open API头文件uf_defs.h里被定义:typedef unsigned int tag_t,实际是无符号整数。
在NXOpen中,系统把tag_t映射为NXOpen.Tag,定义为public enum Tag。
UG中访问对象必须使用tag。比如查询UG对象的类型,UG对象的类型和子类型定义在uf_obiect_types.h中,查询可通过NXOpen.UF命名空间的UFObj.AskTypeAndSubtype(Tag, Int32, Int32),它是NXOpen对于UF函数UF_OBJ_ask_type_and_subtype的封装。
2.Handle
在uf.h中有一段注释如下:Multiple parts can be loaded into NX during a single session, and the Tag (i.e. Object Identifier) cannot be guaranteed between sessions. Consequently, "handles" were created to identify objects between sessions. This handle is persistent between sessions.
UF中,每个UG对象有个Handle,Handle是个编码字符串,它是唯一的(在该文件中),是可以保存的,同一个对象,无论你对该文件操作了多少次,打开了多少次,它都是不变的。但我发现NXOpen中代表一个.prt部件的Part对象的Handle每次重新打开后都是不一样的。
UFTag.AskHandleOfTag(Tag)(UF_TAG_ask_handle_of_tag的封装)用来根据Tag获得句柄。
UFTag.ASKTagOfHandle(string)(UF_TAG_ask_tag_of_handle的封装)用来根据句柄获得Tag。
经过解析后,一个Handle可以分解成文件信息、ID信息和版本信息,实际上Handle就是由这三种信息拼成的字符串。
UFTag.DecomposeHandle(string handle,out string file_data,out uint sub_file_id,out uint version)(UF_TAG_decompose_handle的封装)解析Handle。
UFTag.ComposeHandle(string,uint,uint,out string)(UF_TAG_compose_handle的封装)重新组合Handle。
上面的sub_file_id,UF中解释为"Sub-file identifier for handle. The sub_file is an internal file in the part file database." 相当于Tag,不过在一个文件里是不变的。handle太长,又是字符串,使用不方便,所以经常使用的是这个ID。
3.Journal Identifier
NXObject类有个只读属性JournalIdentifier,字符串类型,解释为"Returns the identifier that would be recorded in a journal for this object",在Journal中对象的标识。它作为NXObject.FindObject(string journalIdentifier)的传入参数来查找一个NXObject对象。一般来说,FindObject不在手写的代码中使用,存在是为了支持Journal的录制和回放。
浙公网安备 33010602011771号