iCAx开思工具箱

标题: 问一个弱弱的问题 [打印本页]

作者: ptjmy    时间: 2004-5-18 15:51
标题: 问一个弱弱的问题
下图是装配导入部件的对话框,请问二次开发对应该命令的函数是什么?
作者: ptjmy    时间: 2004-5-18 18:40
其实只要在装配中导入部件时,有一个部件列表可供选择就可以,几个函数联合实现这个功能也行!高手指点一下啊
作者: ptjmy    时间: 2004-5-18 20:01
选择几个部件中一个部件载入,功能很简单啊,这样的函数应该有吧
作者: zzz    时间: 2004-5-18 21:54
UG所有装配的函数都在uf_assem里面
作者: ptjmy    时间: 2004-5-18 22:34
我晚上一直在找,没找到,zzz版主好人帮到底吧,哪个函数或者组合能实现该功能啊
作者: ptjmy    时间: 2004-5-19 12:43
难道真的只有通过UIstyler自己做一个对话框实现这个功能吗?我学UG二次开发没多久,高人指点一下
作者: ptjmy    时间: 2004-5-19 18:36
我对UIstyler不大熟悉,如果需要使用UIstyler的话,麻烦稍微说具体一点
作者: zzz    时间: 2004-5-20 09:44
不是UF_ASSEM_add_part_to_assembly()吗?把一个part加到assembly里面好像只有这一个函数。
作者: ptjmy    时间: 2004-5-20 09:55
可能是我意思没表达清楚,我要的是对话框,可以选择一个部件导入,对话框如何实现?如果已经选择好part,加到assembly里我也会
作者: haiying    时间: 2004-5-20 10:23
可以用UIstyler或者用数据库(这个要牵扯一个接口的问题,麻烦一点)的形式!
作者: chrispuffy    时间: 2004-5-20 11:42
我认为先用一个push button田家你要的零部件,再用single select list先是这个零部件,选择这个里不见后,再用一个push button插入好像就可以啊,我认为这样就可以实现了
作者: ptjmy    时间: 2004-5-20 12:31
嗯,如果能实现这个,功能是满足要求了,你有跟这个相关的源代码,让我参考一下吗?我对这个不是太熟悉,我邮箱ptjmy@eyou.com
作者: ptjmy    时间: 2004-5-21 10:29
如何得到single select list其中的一项呢,哪位熟悉UIstyler的帮我写几行代码,先谢了!
作者: ptjmy    时间: 2004-5-21 10:31
这是我写的:
                 UF_UI_open_listing_window();
   value.item_id=MY_PART_LIST;
   value.indicator=UF_STYLER_SELECTION_VALUE;
   value.item_attr=UF_STYLER_SELECTION;
   irc=UF_STYLER_ask_value(dialog_id,[$value)]
   UF_UI_write_listing_window(value.value.selection);
作者: ptjmy    时间: 2004-5-21 14:01
大家帮帮忙吧,我现在急着用
作者: ptjmy    时间: 2004-5-21 14:50
zzz版主,帮帮我吧,我需要的功能很简单,就是在 singgle select list中选择一个部件名,好在后面的装配中使用!
作者: zzz    时间: 2004-5-21 14:52
ptjmy wrote:
这是我写的:  
                   UF_UI_open_listing_window();  
     value.item_id=MY_PART_LIST;  
     value.indicator=UF_STYLER_STRING_VALUE;  
     value.item_attr=UF_STYLER_VALUE;  
     irc=UF_STYLER_ask_value(dialog_id,[$value)]  
strcpy(file_full_name, value.value.string);
  
UF_ASSEM_add_part_to_assembly(file_full_name, ...);
  
     UF_UI_write_listing_window(value.value.selection);

  
看我改的
作者: ptjmy    时间: 2004-5-21 16:15
刚刚忘了把图片存为jpg格式
zzz版主,好像不行啊,莫非我没说清楚,我要的是用鼠标在select list中选择一个部件名,如下图,然后按apply,得到部件名,用于以后的装配。执行结果如下:
在底下的状态栏显示:internal error:memory access violation,
大家继续帮忙啊!
作者: ptjmy    时间: 2004-5-21 16:23
刚刚忘了把图片存为jpg格式
作者: zzz    时间: 2004-5-21 18:01
自己调试一下吧
作者: ptjmy    时间: 2004-5-21 19:35
调试时发现一个问题:如果选择select single list的项的话,在回调函数中设置断点根本就不起作用,但如果不选的话,得到的数据是乱码,难道在设置之前还要写一段如何选择部件名的代码吗?麻烦指点一下!
作者: zzz    时间: 2004-5-21 21:05
那肯定是你的回调函数没起作用,再看看你的回调函数的定义吧。
作者: spline    时间: 2004-5-21 21:54
要是UF中可以直接调用macro,并能交互访问,整个世界就清静多了。
作者: ptjmy    时间: 2004-5-22 10:58
回调函数定义不是UIstyler自动生成的吗?再说如果我不选select single list里面的值的话,设置断点是可以调试的啊,我把源代码传上来大家帮我改改,这个一共加起来也不到20行代码,我弄了两天还没弄好,大家不要见笑,呵呵!我建立目录的方法全照手把手教做的
作者: ptjmy    时间: 2004-5-22 15:16
虽说这么一个简单问题,不应该不停的打扰大家,但我实在是弄了好长时间没弄出来,肯请哪位高手帮我改一下!
作者: ptjmy    时间: 2004-5-23 12:37
大家这么忙,我把我写的全贴出来,大家看就方便了
int MY_constructor_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{     
   UF_STYLER_item_value_type_t list_data;
     char *strings[]={"bb1","bb2","bb3",NULL,NULL,NULL,NULL,NULL,NULL,NULL};
     /* Make sure User Function is available. */   
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
   list_data.item_id=MY_PART_LIST;
   list_data.item_attr=UF_STYLER_SUBITEM_VALUES;
   list_data.count=10;
   list_data.indicator=UF_STYLER_STRING_VALUE;
   list_data.value.strings=strings;
   UF_STYLER_set_value(dialog_id,[$list_data)]
  
     UF_terminate ();
  
    /* Callback acknowledged, do not terminate dialog */
    return (UF_UI_CB_CONTINUE_DIALOG);  
    /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted    */
    /* for this callback type.  You must continue dialog construction.*/
  
}
  
int MY_apply_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{    int irc;
   UF_STYLER_item_value_type_t value;
  
     /* Make sure User Function is available. */   
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
   UF_UI_open_listing_window();
     value.item_id=MY_PART_LIST;
   value.indicator=UF_STYLER_STRING_VALUE;
   value.item_attr=UF_STYLER_VALUE;
     irc=UF_STYLER_ask_value(dialog_id,[$value)]    
   UF_UI_write_listing_window(value.value.selection);  
  
     UF_terminate ();
  
    /* Callback acknowledged, do not terminate dialog                 */
    /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted    */
    /* for this callback type.  You must respond to your apply button.*/
    return (UF_UI_CB_CONTINUE_DIALOG);  
  
}
我添加的回调函数有constructor_cb、destructor_cb、ok_cb、cancel_cb、apply_cb
作者: ptjmy    时间: 2004-5-23 13:14
我把apply_cb的代码复制到手把手那个例子就好了,我竟然在这里无意中挖了好大一个坑!哈哈
谢谢zzz版主,谢谢大家!




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3