乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 72|回复: 19

[编程交流] 如何加载/卸载菜单'

[复制链接]

59

主题

327

帖子

268

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
295
发表于 2022-7-6 14:36:41 | 显示全部楼层 |阅读模式
关于菜单。。。
我想创建/拥有一个名为“选项”的菜单,比如说在快捷菜单旁边。其中一个功能必须是加载或卸载第二个菜单,可以说其中一个菜单被称为“test”。
两个菜单(test.mnu和options.mnu)都保存在右侧的支持文件搜索路径文件夹中。所以我开始正确的道路…
这是菜单“选项”(在acad启动时加载)的外观:
***menugroup=选项
***POP1
[->加载或卸载其他菜单]
[测试]^C^Cmenuload;测验
[测试“关闭”]^C^Cmenuunload;测验
[~
当执行“测试关闭”命令时,它工作正常,菜单显示,当在命令栏上输入命令“菜单加载”时,对话框不显示称为“测试”的菜单。
当执行“Test On”命令时,它不能正常工作:菜单不显示。但是:在命令栏上输入命令“menuload”时,对话框显示已加载菜单“test”。我无法输入第二个命令或按Button键来加载菜单。手动卸载加载的菜单,然后在对话框中手动加载时,菜单确实会显示。
哪里出了问题??
谢谢你帮我。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 14:42:27 | 显示全部楼层
加载菜单和下拉显示是两种不同的操作。
 
我们有一个lisp例程来实现这一点,它的工作原理是这样的。
1、查看菜单是否加载。
2、如果没有,则加载。
3.找出下拉列表是否可见(请记住,如果1的答案是“是”,则下拉列表可能已经可见)
4.如果没有,则使其可见。
 
查看vla-*菜单*功能
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
295
发表于 2022-7-6 14:45:02 | 显示全部楼层
 
感谢您的回复。
是的,你是对的,两个不同的东西,但没有看到他们这样。。。
 
“查看vla-*菜单*功能”是什么意思?
 
你没有这段代码和我分享吗?
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 14:47:17 | 显示全部楼层
 
与过滤器vla-*菜单匹配的Lisp函数*
这些是你需要做的你想做的。。。
 
 
 
对不起,代码不是我的,我不想分享。
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
295
发表于 2022-7-6 14:52:13 | 显示全部楼层
有人能给我解释一下“rkmcswain”是什么意思吗?或者,如果可以的话,你愿意吗?
 
这:看vla-*菜单*功能是什么,是不明白的。好的,我是达奇。。。
 
非常感谢。
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 14:52:56 | 显示全部楼层
我以前使用过menu,也注意到了你的问题,所以我最终编写了一个加载菜单的例程,并确保它在菜单栏中可见,就像rkmcswain建议的那样。
 
您可以尝试使用loadit lisp并将其与宏链接:
http://www.cadtutor.net/forum/showthread.php?t=26379
 
我可以推荐的另一件事是将其设置为开/关的切换,而不是将其放在下拉菜单中的两行上。
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
295
发表于 2022-7-6 14:56:37 | 显示全部楼层
我得到错误代码。。。这就是我所做的:
 
  1. (defun c:loadit (/ cui_database mnbar flag)
  2. (vl-load-com)
  3. (setq cui_database
  4. (list
  5.    "options"   ;<<< MENUGROUP
  6.    "options.mnu" ;<<<PATH & CUI FILENAME
  7.    "options"   ;<<< MENUNAME  
  8. ) ;_ end_list
  9. ) ;_ end_setq
  10. (vlax-for n
  11.       (setq all_menus
  12.       (vla-get-MenuGroups
  13.         (vlax-get-Acad-Object)
  14.       ) ;_ end_vla-get-MenuGroups
  15.       ) ;_ end_setq
  16.    (if (= (vla-get-name n) (car cui_database))
  17.      (setq flag T)
  18.    ) ;_ end_if
  19. ) ;_ end_vlax-for
  20. (if (null flag)
  21.    (progn
  22.      (vla-load
  23. all_menus
  24. (cadr cui_database)
  25.      ) ;_ end_vla-load
  26.      (setq MnBar
  27.      (vla-get-MenuBar
  28.        (vlax-get-Acad-Object)
  29.      ) ;_ end_vla-get-MenuBar
  30.      ) ;_ end_setq
  31.      (vla-InsertInMenuBar
  32. (vla-Item
  33.   (vla-get-Menus
  34.     (vla-Item
  35.       (vla-get-MenuGroups
  36. (vlax-get-Acad-Object)
  37.       ) ;_ end_vla-get-MenuGroups
  38.       (car cui_database)
  39.     ) ;_ end_vla-Item
  40.   ) ;_ end_vla-get-Menus
  41.   (caddr cui_database)
  42. ) ;_ end_vla-Item
  43. (1- (vla-get-Count MnBar))
  44.      ) ;_ end_vla-InsertInMenuBar
  45.    ) ;_ end_progn
  46.    (princ "\n>>..MENU IS ALREADY LOADED..<<")
  47. ) ;_ end_if
  48. (princ)
  49. ) ;_ end_defun

 
我该如何运行它?我知道如何让lisp运行,这不是lisp?
当我的菜单名为“选项”时,它是否如上面更改的那样正确?
Pff。。。我会赢的!!
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 15:01:57 | 显示全部楼层
这是LISP,但它们是子函数,因此需要从带有参数的主函数调用
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
295
发表于 2022-7-6 15:04:36 | 显示全部楼层
我认为Lisp程序已经被篡改,其中一些部分错误/缺失:
 
  1. (defun c:loadit (/ cui_database mnbar flag)
  2. (vl-load-com)
  3. (setq cui_database
  4. (list
  5. "options" ;<<< MENUGROUP
  6. "options.mnu" ;<<<PATH & CUI FILENAME
  7. "options" ;<<< MENUNAME
  8. ) ;_ end_list
  9. ) ;_ end_setq
  10. (vlax-for n
  11. (setq all_menus
  12. (vla-get-MenuGroups
  13. (vlax-get-Acad-Object)
  14. ) ;_ end_vla-get-MenuGroups
  15. ) ;_ end_setq
  16. (if (= (vla-get-name n) (car cui_database))
  17. (setq flag T)
  18. ) ;_ end_if
  19. ) ;_ end_vlax-for
  20. (if (null flag)
  21. (progn
  22. (vla-load
  23. all_menus
  24. (cadr cui_database)
  25. ) ;_ end_vla-load
  26. (setq MnBar
  27. (vla-get-MenuBar
  28. (vlax-get-Acad-Object)
  29. ) ;_ end_vla-get-MenuBar
  30. ) ;_ end_setq
  31. (vla-InsertInMenuBar
  32. (vla-Item
  33. (vla-get-Menus
  34. (vla-Item
  35. (vla-get-MenuGroups
  36. (vlax-get-Acad-Object)
  37. ) ;_ end_vla-get-MenuGroups
  38. (car cui_database)
  39. ) ;_ end_vla-Item
  40. ) ;_ end_vla-get-Menus
  41. (caddr cui_database)
  42. ) ;_ end_vla-Item
  43. (1- (vla-get-Count MnBar))
  44. ) ;_ end_vla-InsertInMenuBar
  45. ) ;_ end_progn
  46. (princ "\n>>..MENU IS ALREADY LOADED..<<")
  47. ) ;_ end_if
  48. (princ)
  49. ) ;_ end_defun

 
 
这是我第一眼看到的,但还没来得及看清楚。
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 15:06:57 | 显示全部楼层
嗨,李,谢谢你的帮助。
是的,lisp现在运行,但问题仍然没有解决。
啊。。。
 
命令行:菜单加载[输入]
命令行:浏览[输入]
浏览到所需的。mnu文件[打开]
然后按“加载”按钮加载浏览的文件。
通过这种方式,它是可见的,而不是通过lisproutine,尽管它已加载。
 
打败了我。
 
我应该考虑“顺其自然”吗?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 00:09 , Processed in 0.377168 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表