EDA365电子工程师网

标题: 在16.2版本下报这个错误:Unknown trigger type: menu,要怎么解决? [打印本页]

作者: 這侽孓譙悴丶    时间: 2016-12-25 14:49
标题: 在16.2版本下报这个错误:Unknown trigger type: menu,要怎么解决?
本帖最后由 這侽孓譙悴丶 于 2016-12-26 10:05 编辑

在16.2版本下报这个错误:Unknown trigger type: menu,要怎么解决?@deargds
作者: deargds    时间: 2016-12-26 10:47
axlTriggerSet函数在16.3下才支持'menu绑定
作者: 這侽孓譙悴丶    时间: 2016-12-26 11:08
本帖最后由 這侽孓譙悴丶 于 2016-12-27 09:10 编辑
deargds 发表于 2016-12-26 10:47
axlTriggerSet函数在16.3下才支持'menu绑定

版主,那有没有补救的方法,你看看能不能帮我这个代码怎么修改可以支持16.2的

if( axlVersion('version) > 16.0 then
        axlTriggerSet('menu 'skill_16menuTrig)
else if( axlVersion('version) > 15.0 then
        axlTriggerSet('open 'skill_15menuTrig)
)
)
/*
defun(skill_menuTrig ()
        let( (q)
        q = axlUIMenuRegister( -1 skill_menuList )
        )
)


skill_menuTrig()
*/


作者: deargds    时间: 2016-12-26 11:27
這侽孓譙悴丶 发表于 2016-12-26 11:08
版主,那有没有补救的方法,你看看能不能帮我这个代码怎么修改可以支持16.2的
skill_menuList = '(
    ...

if( axlVersion('version) > 16.0 then
改成
if( axlVersion('version) > 16.2 then


作者: 這侽孓譙悴丶    时间: 2016-12-26 11:45
本帖最后由 這侽孓譙悴丶 于 2016-12-26 12:14 编辑
deargds 发表于 2016-12-26 11:27
if( axlVersion('version) > 16.0 then
改成
if( axlVersion('version) > 16.2 then

好的,非常感谢!回去我试试

作者: 這侽孓譙悴丶    时间: 2016-12-26 19:46
deargds 发表于 2016-12-26 11:27
if( axlVersion('version) > 16.0 then
改成
if( axlVersion('version) > 16.2 then

版主,我刚试了一下了,按照你说的16.0改成16.2后在16.2版本下是不会报那个警告了,但是菜单依然出不来,还有其它办法尝试吗,麻烦了···
作者: deargds    时间: 2016-12-27 08:36
  1. if( axlVersion('version) > 16.2 then
  2.     axlTriggerSet('menu 'skill_16menuTrig)
  3. else
  4.     axlTriggerSet('open 'skill_15menuTrig)
  5. )
复制代码


16.2以下版本是绑定到OPEN动作上,当你打开一个文件时会触发菜单加载
作者: 這侽孓譙悴丶    时间: 2016-12-27 09:13
deargds 发表于 2016-12-27 08:36
16.2以下版本是绑定到OPEN动作上,当你打开一个文件时会触发菜单加载

好的,明白你的意思了,晚上回去我再试一试,有问题再给你回帖,幸苦了,谢谢哈!

作者: 這侽孓譙悴丶    时间: 2016-12-27 19:24
deargds 发表于 2016-12-27 08:36
16.2以下版本是绑定到OPEN动作上,当你打开一个文件时会触发菜单加载

版主,改成你说的这个后,菜单还是出不了,但也没报任何错误,只是菜单出不了

if( axlVersion('version) > 16.2 then
    axlTriggerSet('menu 'skill_16menuTrig)
else
    axlTriggerSet('open 'skill_15menuTrig)
)


不是说axlTriggerSet函数在16.2不支持么?这会还有什么办法吗?

作者: deargds    时间: 2016-12-28 08:32
這侽孓譙悴丶 发表于 2016-12-27 19:24
版主,改成你说的这个后,菜单还是出不了,但也没报任何错误,只是菜单出不了

if( axlVersion('versio ...

问题可能出在skill_15menuTrig这个函数上,你可以手工运行这个函数试试,如果不能加载就是这个有问题,另外你的原始代码看不到了。。。。。。

作者: 這侽孓譙悴丶    时间: 2016-12-28 09:24
本帖最后由 這侽孓譙悴丶 于 2016-12-29 09:15 编辑
deargds 发表于 2016-12-28 08:32
问题可能出在skill_15menuTrig这个函数上,你可以手工运行这个函数试试,如果不能加载就是这个有问题,另 ...

好吧,咋又不见了,重新贴。要不你直接整个代码试试,看看怎么改快点


skill_menuList = '(
    (popup "0")
        ("1" "1")        
        ("2" "2")
        ("3" "3")
        ("4" "4")
        end
     )
if( axlVersion('version) > 16.3 || axlVersion('version) < 16.0 then
delete_menu = '("1" "1")
skill_menuList=remove(delete_menu skill_menuList)
delete_menu = '("2" "2")
skill_menuList=remove(delete_menu skill_menuList)
)


if( axlVersion('version) < 16.0 then
delete_menu = '("3" "3")
skill_menuList=remove(delete_menu skill_menuList)
)


procedure( skill_16menuTrig(t_16menufile)
    let( (skill_16menuId)
;    printf("MENU FILE= %s\n" t_menufile)
    skill_menuId = axlUIMenuFind(nil -1)
    add_menu = axlUIMenuInsert(skill_menuId skill_menuList)
))


procedure( skill_15menuTrig(t_15menufile)
    let( (skill_15menuId)
        
                while(gets( line old_file) != nil
                        if(line=="    POPUP \"0\"\n" skilltools=1)
                        if( car(parseString(line))=="BEGIN" then
                                end_fg=end_fg+1
                                fprintf(new_file line)
                        else
                                if( car(parseString(line))!="END" then
                                        fprintf(new_file line)
                                else
                                        end_fg=end_fg-1
                                        if(end_fg==0 then
                                                foreach(s_menu skill_menuList
                                                        if(listp(s_menu) then
                                                                s1_menu=get_string( car(s_menu))
                                                                if(s1_menu =="popup" then
                                                fprintf(new_file line)
                                        )
                                )
                )
        fprintf(new_file "END\n")
                close(old_file)
                close(new_file)
                if(skilltools==0 axlUIMenuLoad(new_menu_file))
        if(isFile(old_menu_file) deleteFile(old_menu_file))
        if(isFile(new_menu_file) deleteFile(new_menu_file))




))


if( axlVersion('version) > 16.0 then
        axlTriggerSet('menu 'skill_16menuTrig)
else if( axlVersion('version) > 15.0 then
        axlTriggerSet('open 'skill_15menuTrig)
)
)
/*
defun(skill_menuTrig ()
        let( (q)
        q = axlUIMenuRegister( -1 skill_menuList )
        )
)


skill_menuTrig()
*/


作者: deargds    时间: 2016-12-28 11:47
這侽孓譙悴丶 发表于 2016-12-28 09:58
我昨晚是在家里的笔记本上试的,菜单出不来,今天就把16.2软件带过来公司电脑安装了,刚试了一下,公司电 ...

问题出在skill_15menuTrig函数,你检查下输出的new_menu.txt文件格式是否正确,是否可以使用axlUIMenuLoad加载。

  1.         fprintf(new_file "END\n");测试删除此行后可以加载
  2.                 close(old_file)
  3.                 close(new_file)
  4.                 if(skilltools==0 axlUIMenuLoad(new_menu_file))
复制代码




作者: 這侽孓譙悴丶    时间: 2016-12-28 13:20
deargds 发表于 2016-12-28 11:47
问题出在skill_15menuTrig函数,你检查下输出的new_menu.txt文件格式是否正确,是否可以使用axlUIMenuLoa ...

        fprintf(new_file "END\n");测试删除此行后可以加载
                close(old_file)
                close(new_file)
                if(skilltools==0 axlUIMenuLoad(new_menu_file))

把这短代码里面的fprintf(new_file "END\n")这一行删除的话所有版本的菜单就加载不上了,要不你把你测试OK的完整的代码帖出来我试试你改的会不会。


作者: deargds    时间: 2016-12-28 15:54
這侽孓譙悴丶 发表于 2016-12-28 13:20
fprintf(new_file "END\n");测试删除此行后可以加载
                close(old_file)
       ...

  1. skill_menuList = '(
  2.     (popup "0")
  3.         ("1" "1")      
  4.         ("2" "2")
  5.         ("3" "3")
  6.         ("4" "4")
  7.         end
  8.      )
  9. if( axlVersion('version) > 16.3 || axlVersion('version) < 16.0 then
  10. delete_menu = '("1" "1")
  11. skill_menuList=remove(delete_menu skill_menuList)
  12. delete_menu = '("2" "2")
  13. skill_menuList=remove(delete_menu skill_menuList)
  14. )


  15. if( axlVersion('version) < 16.0 then
  16. delete_menu = '("3" "3")
  17. skill_menuList=remove(delete_menu skill_menuList)
  18. )


  19. procedure( skill_16menuTrig(t_16menufile)
  20.     let( (skill_16menuId)
  21. ;    printf("MENU FILE= %s\n" t_menufile)
  22.     skill_menuId = axlUIMenuFind(nil -1)
  23.     add_menu = axlUIMenuInsert(skill_menuId skill_menuList)
  24. ))


  25. procedure( skill_15menuTrig(t_15menufile)
  26.     let( (skill_15menuId)
  27.       
  28.         old_menu_file=strcat(axlGetVariable("temp") "\\old_menu.txt")
  29.         new_menu_file=strcat(axlGetVariable("temp") "\\new_menu.txt")
  30. ;        old_menu_file="./old_menu.txt"
  31. ;        new_menu_file="./new_menu.txt"
  32.         axlUIMenuDump(old_menu_file)
  33.         end_fg=0
  34.         skilltools=0
  35.         old_file=infile(old_menu_file)
  36.         new_file=outfile(new_menu_file)
  37.         if(old_file == nil then
  38.                 axlMsgPut("Menu file error!")               
  39.                 return()
  40.                 )
  41.                 while(gets( line old_file) != nil
  42.                         if(line=="    POPUP \"0\"\n" skilltools=1)
  43.                         if( car(parseString(line))=="BEGIN" then
  44.                                 end_fg=end_fg+1
  45.                                 fprintf(new_file line)
  46.                         else
  47.                                 if( car(parseString(line))!="END" then
  48.                                         fprintf(new_file line)
  49.                                 else
  50.                                         end_fg=end_fg-1
  51.                                         if(end_fg==0 then
  52.                                                 foreach(s_menu skill_menuList
  53.                                                         if(listp(s_menu) then
  54.                                                                 s1_menu=get_string( car(s_menu))
  55.                                                                 if(s1_menu =="popup" then


  56.                                                                         fprintf(new_file "POPUP \"%s\"\n" get_string(cadr(s_menu)))
  57.                                                                         fprintf(new_file "BEGIN\n")               
  58.                                                                         )
  59.                                                                 if(s1_menu=="separator" then
  60.                                                                         fprintf(new_file "MENUITEM SEPARATOR\n")
  61.                                                                 )
  62.                                                                 if(s1_menu =="end" then
  63.                                                                         fprintf(new_file "END\n")
  64.                                                                 )
  65.                                                                 if(stringp(car(s_menu)) then
  66.                                                                         fprintf(new_file "MENUITEM \"%s\",                \"%s\"\n" get_string(car(s_menu)) get_string(cadr(s_menu)))
  67.                                                                 )
  68.                                                         else
  69.                                                                 if(get_string(s_menu) =="end" fprintf(new_file "END\n"))      
  70.                                                          )
  71.                                                  )                                                
  72.                                                 )
  73.                                                 fprintf(new_file line)
  74.                                         )
  75.                                 )
  76.                 )
  77.         ;fprintf(new_file "END\n")
  78.                 close(old_file)
  79.                 close(new_file)
  80.                 if(skilltools==0 axlUIMenuLoad(new_menu_file))
  81.         if(isFile(old_menu_file) deleteFile(old_menu_file))
  82.         if(isFile(new_menu_file) deleteFile(new_menu_file))




  83. ))


  84. if( axlVersion('version) > 16.2 then
  85.         axlTriggerSet('menu 'skill_16menuTrig)
  86. else
  87.         axlTriggerSet('open 'skill_15menuTrig)
  88. )

  89. /*
  90. defun(skill_menuTrig ()
  91.         let( (q)
  92.         q = axlUIMenuRegister( -1 skill_menuList )
  93.         )
  94. )


  95. skill_menuTrig()
  96. */
复制代码




作者: 這侽孓譙悴丶    时间: 2016-12-28 19:44
deargds 发表于 2016-12-28 15:54

用你这个在公司的电脑确实可以了,但回家笔记本试了一下又还是出不了,不知道什么原因,16.2软件是一模一样的,也是你那个程序,家里的笔记本就老是菜单出不来。





欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2