iCAx开思网

标题: UGNX中如何通过part的object_id 获取part的名称或着tag [打印本页]

作者: hjz310519    时间: 2005-8-23 08:23
标题: UGNX中如何通过part的object_id 获取part的名称或着tag
我是调用函数UF_UI_select_with_single_dialog来通过鼠标获取对象的object_id ,如下的代码中的返回参数tObject,但是我想得到是选择的part的名称,因此我用了一个函数UF_OBJ_ask_name,但是获取回来的对象的名称是空的,不知道为什么,请大虾看看:
  
char sCue[]="单对象选择对话框";
char sTitle[]="单对象选择对话框";
   
int iScope=UF_UI_SEL_SCOPE_NO_CHANGE;
int iResponse;
tag_t tObject;
tag_t tview;
double adCursor[3];
UF_UI_select_with_single_dialog(sCue,sTitle,
                UF_UI_SEL_SCOPE_NO_CHANGE, init_proc, NULL,
                    [$iResponse, &tObject, adCursor, &tview)]
   
char name[200 + 1];  
UF_OBJ_ask_name(tObject,name); //不知道为什么,这个函数中的参数name返回是个空值?
  
********************************************************
  
下面是UF_UI_select_with_single_dialog中的参数init_proc的定义:
  
static int init_proc(UF_UI_selection_p_t select,void* user_data)
{
     int num_triples = 1;//可选择类型的数量
     UF_UI_mask_t mask_triples[]={UF_solid_type}; //可选择的类型,还有些不太了解,我想只让选择solid body,不知道我写的对不对?
     /* enable only UF_solid_type */
     if((UF_UI_set_sel_mask(select,
             UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,
             num_triples, mask_triples)) == 0)
     {
         return (UF_UI_SEL_SUCCESS);
     }
     else
     {
         return (UF_UI_SEL_FAILURE);
     }
}
作者: hjz310519    时间: 2005-8-23 15:30
顶阿顶,各位大虾,求助阿,我郁闷了一下午了
作者: hjz310519    时间: 2005-8-23 20:19
键盘兄呢,帮忙指点一下吧!!!!!
作者: 深夜摔键盘    时间: 2005-8-24 01:11
你得先确定对象是否选到了,查看一下对象的tag值就知道了。
  
你的问题可能是因为你没有为你的对象设置名称,所以ask不到name的。
作者: hjz310519    时间: 2005-8-24 10:25
键盘兄,对象是选到了,是不是这里我的一些概念混淆了,
我是想得到这个对象所属的部件文件的名称,请问是不是就是这个对象的名字?还有这个part不是在创建开始的时候就设置名字了吗?
比如说 我新建了一个长方体,保存在硬盘上,名字为“cuber.prt”,
然后我通过UF_UI_select_with_single_dialog选择这个cuber.prt,最终我是想得到“cuber.prt”这个名字; 但是UF_UI_select_with_single_dialog只能得到object_id ,然后我用UF_OBJ_ask_name,能不能的到“cuber.prt”这个名字?
谢谢键盘兄!!!
作者: 深夜摔键盘    时间: 2005-8-24 11:27
不要浮躁,书,文档都是要看的。
  
在你的硬盘上part是文档,当它进入内存后,你可以把它看做是一个大型的数据结构。可以说part是UG最大的对象了,你的长方体是part中的对象,它们之间包含与被包含的关系。
  
UF_OBJ_ask_name,只能得到part中的对象名,这个对象名在创建时我忘记是不是系统会给它以默认的名称,但用户可以在对象建立之后设置它的名字。
  
关于取part文件名的问题,可以去uf_part.h中看看。
作者: hjz310519    时间: 2005-8-24 11:56
一语惊醒梦中人啊,我确实有些急于求成了,赫赫
那个对象的名称我确实没有设置,我刚才在UG中设置了一下,就可以获取到了,虽然不是我想要的,但是让我明白了这个函数UF_OBJ_ask_name的用处,
再次感谢键盘兄对我的一些菜鸟问题不厌其烦的解答,你算是我的入门的老师 阿!!!!
有些时候学者学者都有些灰心了,多亏你在一边指点!!!
回去还要多多看书阿,!!!!!!
作者: hchhyl    时间: 2005-9-16 08:25
标题: 111
可以通过object_id得到它的parent part tag的,你去查查函数吧
作者: xilen    时间: 2005-9-26 08:09
顶一下
作者: henry14    时间: 2005-9-26 09:11
应该是用这个函数吧,能得到对象所属part的tag
UF_OBJ_ask_owning_part (
tag_t object_in_part,
tag_t * part_tag );
具体可以去查一下




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3