iCAx开思工具箱

标题: 【求助】请问如何用API切换模块 [打印本页]

作者: spline    时间: 2003-3-1 16:31
标题: 【求助】请问如何用API切换模块
请问如何用API切换模块。
比如,现在在modeling模块,通过API切换到drafting模块。
谢谢!
作者: spline    时间: 2003-3-1 16:37
前面没有说清楚,是在UG当中。
可以通过函数查询当前的模块,但没有找到设置当前模块的函数
作者: sunxm    时间: 2003-3-6 14:29
先追加头文件:#include <uf_draw.h>
  
利用下面的函数:
a)    int uc6476(int ip1)
  ip1=1时进入 modeling状态
  ip1=2时进入  drafting状态
和菜单application/drafting   或application/modeling的功能一样
  
b)int uc6477(viod)
是在drafting状态下和菜单Drawing/Display Drawing的功能一样
  
例:
  
int myset1=1;
uc6476(mymyset1);
  
int myset2=2;
uc6476(mymyset2);
  
uc6477();
作者: spline    时间: 2003-3-7 09:48
我试过你所提供的函数了,她并没有切换模块,只是完成了drafting 模块下的drawing\display drawing菜单的功能,临时切换到察看实体的状态,其还在drafting模块下。你可以用UF_ask_application_module函数试一下
作者: sunxm    时间: 2003-3-7 17:44
嗯。。。。
除此以外好象没有API函数可以实现的了。
作者: spline    时间: 2003-3-7 20:21
你的结论和我目前的结论是一致的。
我期待其它人提出反对的意见来。
  
谢谢!
  
你知道如何用api来调用宏吗? 或者在.men文件中调用宏这样可以达到同样的效果的
  
GRIP是不能调用宏的。这一点已经很明确了。
作者: darkhorse    时间: 2003-3-8 09:49
.men文件可以调用宏文件,这个很简单.看看document中关于men的介绍就可以了,
作者: spline    时间: 2003-3-8 14:18
这个我已经试过了
大概是这个样子的
  
BUTTON BTNid
LABEL AAA
ACTIONS MACRO NAME.macro
  
不过就是不行的,不过这个宏可以 playback。
其中的原因我还不知道。
作者: spline    时间: 2003-3-8 18:29
Actions
The supported types of menu actions that can be specified for buttons in Unigraphics menu files are:
STANDARD  
The keyword "STANDARD" represents the standard Unigraphics action and can be specified only for a reserved Unigraphics button name.
  
User-Defined Callback
The name of a user-defined action that is bound to a user-supplied callback at runtime (see the UG/Open API Progammer's Guide and UG/Open API Reference for further details).
  
UIStyler Dialog
The name of the UIStyler dialog that is bound with a user-supplied list of callbacks at runtime (see UG/Open API UIStyler Programmer's Guide and UG/Open API Reference - UF_MB_add_styler_actions for further details).
  
GRIP Program File
The name of a GRIP program.
  
User Tools File
The name of a User Tools Definition file.
  
OS Command
An operating system command, including the running of a program or script file, enclosed in double quotes.
  
UG/Open API
The name of a complete UG/Open API program.
  
这是从帮助中找出来的,其中没有提到macro,我也不能明确知道是否支持macro。不过我一个同事讲,他是用过的。看来我是无法确定如何做了。
作者: sunxm    时间: 2003-3-10 15:58
先追加头文件:#include <uf_draw.h>  
  
UF_DRAW_set_display_state(const int view_type );
  
view_type =1 Modeling;
view_type =2 drafting.
   
我用UG15查的,没找到。UG18的HELP找到的,试了一下好使,你再试一下,能行了,告我一声。如果不行了,我还有其它办法。
作者: spline    时间: 2003-3-11 09:26
其实这两个函数是等价的,我原来查uc6476(int ip1)的时候,就发现它要被替换为UF_DRAW_set_display_state。
  
我是在nx下试的,该函数只有在UG_APP_DRAFTING这个模块才管用,显示了模型,不过没有进入建模的状态。在其他模块就不起作用了(不过没有报错)。
  
您还有什么高招? 谢谢
作者: sunxm    时间: 2003-3-11 14:06
对不起,没看好就发了。我在UG18下试的,GATEWAY状态下。
先前想的是从制图状态转到GATEWAY状态,让用户自己去选MODELING状态。找了好半天也没发现从制图状态转到GATEWAY状态的API。UG从以前的版本到NX都没给出激活MODELING状态,单给出激活制图状态的API,也许是有原因的,其实API的操作在GATEWAY状态基本都能完成。劝你不要太化时间钻在这问题上,请再重新分析一下用户的要求。
不妨可以说出你想完成的操作,让大家帮你分析一下有没有那个必要性,说不定会有更好的对策呢。
作者: spline    时间: 2003-3-13 12:05
我的目的是开发一个模块(和UG_APP_MODELING平行的),现在这个模块已经差不多了。不过需要添加一个退出该模块的功能。就像UIStyler一样,有一个File -> Exit styler 的menu item;Sketch模块中的Task  -> Finish Sketch。
  
我这个模块的菜单文件已经写好了。但是ACTIONS这一项就不知道如何添了。
  
在上面的帖子中我已经给出了其后可以跟的程序类型。我问你的就是UG/Open API和User-Defined Callback 类型的。
  
darkhorse说可以用宏的方法。这个模块转换的宏我已经得到了,但是我还不知道如何用.men调用macro了。
  
GRIP我不是很熟悉,我不知道他是否有这方面的功能。
  
OS command是不用考虑了。
  
现在就只有打Standard和User Tools File主意了,User Tools File只支持Dialog 和 Tool Bar的类型,无法挂到菜单上。这个Standard的主意也不好打。
  
现在就是进退两难了。
  
不过我找到了一个替换的办法,就是做一个Tool Bar,在上面添加UG_APP_MODELING这个Button,就退出了我的这个模块了。这种方法对于.men文件是不行的。
  
我在想,是不是我的思路太窄了。也许有其他很简单的方法可以解决这个问题的。  
  
不知道我说清楚了没有?
作者: sunxm    时间: 2003-3-14 10:05
问题多多呀!先急人所难吧。
你现在开发了一模块,它和UG_APP_MODELING平行地运行(不懂是什么意思),可能执行了一些操作之后(我的猜测),UG必须是MODELING状态的条件下,它会自动结束。现在它无法结束,原因是MODELING状态无法被激活。你有好几种办法解决这个问题,包括不管别人喜欢不喜欢就加了一个BUTTON,试图去自动激活MODELING状态,但都没成功。以上我说得还对吧。
  单说这个问题:UG启动后进入GATEWAY状态,不管使用那一模块都需要3D SOLID(没3D SOLID无法出图纸,无法进行CAE分析,无法制造),如果EDS把激活MODELING状态的API给出的话,EDS是不能保证最后的DATA的正确性,而且因为用户自己的模块的误操作会带来UG的不稳定。除了OPEN和NEW以外在任何操作下按CTRL+M键都可进入MODELING状态,这样的系统级功能不是简简单单用一个API就可描述的。
建议为了提高你的模块的可靠性,给出用户一个提示让用户自己去激活。
另外你的模块整体设计有问题,有时间在细说吧。
作者: spline    时间: 2003-3-19 09:21
!*=======================================================================
!By Jiang BL 2003/02/26
!
!=========================================================================
!File Description
!
!   
!
!=========================================================================
VERSION 120
  
EDIT UG_GATEWAY_MAIN_MENUBAR
  
AFTER UG_APP_DRAFTING   
  
  APPLICATION_BUTTON UG_APP_JCD
    
  LABEL [$cedil][$Eacute][$Eacute][$aelig][$frac14]ì[$sup2]é...  
  
    BITMAP jcd.bmp
    
  LIBRARIES ug_app_jcd
  
  TOP_DIALOG JCDMainDlg.dlg
  
  MENU_FILES ug_jcd.men  
  
END_OF_AFTER
  
这是我写的一个men文件。我想你看了之后可能会明白一点。
它在Drafting menu item 后生成一个menu item,它的类型是APPLICATION_BUTTON。点击这个menu item后,会将ug_jcd.men 装入,ug_jcd.men隐藏了几乎所有的menu,并注册其中用到的callback function。
UG_APP_JCD和UG_APP_MODELING都是APPLICATION_BUTTON。这就是平行的意思。
添加这个退出的BUTTON是用户的意思,是非加不可的。这个BUTTON是由用户来点击的。这个BUTTON用来退出UG_APP_JCD进入UG_APP_MODELING。我已经给出了提示,不过让用户点击哪个菜单呢?
我现在可以退出我自己的模块(UG_APP_JCD)。就是点击Modeling menu item 或者Ctrl+M。其间没有出现问题。但是我无法把这个退出功能加到自己的menu (ug_jcd.men)中。
你的关于系统的可靠性的论述倒是有些道理。如果我的整体设计有什么问题,请指教。
作者: spline    时间: 2003-3-19 09:48
上面那个.men在Drafting menu item 后生成一个menu item,它的类型是APPLICATION_BUTTON。点击这个menu item后,会将ug_jcd.men 装入(ug_jcd.men隐藏了几乎所有的menu),在LIBRARIES注册了其中用到的callback function。
UG_APP_JCD和UG_APP_MODELING都是APPLICATION_BUTTON。这就是“平行”的意思。(我用词不当,引起了误会)
添加这个退出的BUTTON是用户的意思,是非加不可的。这个BUTTON(退出UG_APP_JCD进入UG_APP_MODELING)是由用户来点击的。但是我怎么写这个BUTTON的ACTIONS呢?
我已经给出了提示,不过现在没菜单可以点呀!(只有点击tool bar或者Ctrl+M)
用户可以退出我自己的模块(UG_APP_JCD),就是点击Modeling menu item 或者Ctrl+M。其间没有出现问题。但是我无法把这个退出功能加到自己的menu (ug_jcd.men)中。
你的关于系统的可靠性的论述倒是有些道理。如果我的整体设计有什么问题,请指教。我是参照ug给出的例子写的。其中有些问题可能例子没有写清楚,我也没有想到,就请高手出手相助吧。
我看了一下ug的那些模块,除了Skectch和UIStyler模块都没有“退出”button的。这倒是很符合你的想法。只是不知道Skectch和UIStyler模块是如何实现这个退出功能的。
这几天单位添了新设备,比较忙,不能及时回复,请原谅!
作者: zzz    时间: 2003-3-19 21:51
你的这个问题,我研究了一个下午,发现实现类似sketch的退出功能,还是有可能的。就是在进入到你的应用的时候把当前的工具条都隐藏起来,推出是把自己的隐藏,把以前的显示出来。UF UI中有这样的函数,但我没有摸过,你自己是一下吧,用完后也叫我们一下。
作者: spline    时间: 2003-3-21 15:12
很直接,和我的想法一样。
我有个想法,其实模块的切换就是提供不同的menu and toolbar。
不过没有地方印证我的想法。另外我认为我这种想法太弱智了,不敢轻易提出来。
既然斑竹发话了,我就大胆一试了。




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