乐筑天下

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

[编程交流] 通过lisp加载Mnu文件

[复制链接]

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 18:42:59 | 显示全部楼层 |阅读模式
大家好,
我必须从acaddoc创建并加载一个简单的菜单。lsp。
 
这是mnu文件
  1. ***MENUGROUP=Cordoli
  2. ***POP1                                       
  3. P1-1[Cordoli]                               
  4. P1-2[&Load APP]                               
  5. P1-3[&Help]

 
如何添加指令以将lisp加载到此文件中?
  1. (load "cordoli.vlx")

 
然后我必须通过acaddoc加载mnu文件。lsp。如何执行此步骤?
也许是这样?
  1. (vl-load-com)
  2. (setq *mgs* (vla-get-menugroups (vlax-get-acad-object)))
  3. (vla-load *mgs* "cordoli")

正在加载。带有“菜单加载”的mnu文件适用于autocad 2009,但对于my 2015,它不会出现在菜单栏中。
谢谢你的帮助!
 
丹尼斯
回复

使用道具 举报

171

主题

447

帖子

276

银币

中流砥柱

Rank: 25

铜币
860
发表于 2022-7-5 18:52:45 | 显示全部楼层
创造mns文件并使用菜单加载
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 19:01:56 | 显示全部楼层
你能再给我解释一下吗?
 
与此同时,我发现:
  1. (vl-load-com)
  2. (defun c:Example_OnMenuBar()
  3.    ;; This example creates a new menu called TestMenu and inserts a menu item
  4.    ;; into it. The menu is then displayed on the menu bar, and then
  5.    ;; removed from the menu bar.
  6.    (setq acadObj (vlax-get-acad-object))
  7.    (setq currMenuGroup (vla-Item (vla-get-MenuGroups acadObj) 0))
  8.    
  9.    ;; Create the new menu
  10.    (setq newMenu (vla-Add (vla-get-Menus currMenuGroup) "TestMenu"))
  11.    
  12.    ;; Add a menu item to the new menu
  13.    ;; Assign the macro string the VB equivalent of "ESC ESC _open "
  14.    (setq openMacro (strcat (Chr 3) (Chr 3) (Chr 95) "open" (Chr 32)))
  15.    (setq newMenuItem (vla-AddMenuItem newMenu (1+ (vla-get-Count newMenu)) "Open" openMacro))
  16.    
  17.    ;; Display the menu on the menu bar
  18.    (vla-InsertInMenuBar newMenu (1+ (vla-get-Count (vla-get-MenuBar acadObj))))
  19.    (if (= (vla-get-OnMenuBar newMenu) :vlax-true)
  20.        (alert (strcat "The menu called " (vla-get-Name newMenu) " is on the menu bar."))
  21.        (alert (strcat "The menu called " (vla-get-Name newMenu) " is not on the menu bar."))
  22.    )
  23.    
  24.    ;; Remove the menu from the menu bar
  25.    (vla-RemoveMenuFromMenuBar (vla-get-Menus currMenuGroup) "TestMenu")
  26.    (if (= (vla-get-OnMenuBar newMenu) :vlax-true)
  27.        (alert (strcat "The menu called " (vla-get-Name newMenu) " is on the menu bar."))
  28.        (alert (strcat "The menu called " (vla-get-Name newMenu) " is not on the menu bar."))
  29.    )
  30. )
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-5 19:06:00 | 显示全部楼层
您是想加载菜单文件,使其成为唯一加载的菜单,还是将其作为部分加载?
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 19:11:30 | 显示全部楼层
我不知道我是否收到了你的问题,但我想把它和所有其他问题(acad等)放在一起。
 
  1. (defun c:Crea_menu()
  2.    ;; This example creates a new menu called TestMenu and inserts a menu item
  3.    ;; into it. The menu is then displayed on the menu bar, and then
  4.    ;; removed from the menu bar.
  5.    (setq acadObj (vlax-get-acad-object))
  6.    (setq currMenuGroup (vla-Item (vla-get-MenuGroups acadObj) 0))
  7.    
  8.    ;; Create the new menu
  9.    (setq newMenu (vla-Add (vla-get-Menus currMenuGroup) "Cordoli"))
  10.    
  11.    ;; Add a menu item to the new menu
  12.    ;; Assign the macro string the VB equivalent of "ESC ESC _open "
  13.    (setq openMacro (strcat (Chr 3) (Chr 3) (Chr 95) "cordolo" (Chr 32)))
  14.    (setq newMenuItem (vla-AddMenuItem newMenu (1+ (vla-get-Count newMenu)) "Avvia l'applicazione" openMacro))
  15.    
  16.    ;; Display the menu on the menu bar
  17.    (vla-InsertInMenuBar newMenu (1+ (vla-get-Count (vla-get-MenuBar acadObj))))
  18. )

 

                               
登录/注册后可看大图

 
这似乎在acad2009中有效,但在acad2015中无效
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-5 19:16:27 | 显示全部楼层
好的,那么你想把它作为部分菜单加载。
 
如果代码运行并且菜单已经加载,会发生什么?
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 19:24:14 | 显示全部楼层
我不知道,也许我会出错。。需要尝试一下。
 
为什么它没有出现在autocad2015中?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:31:03 | 显示全部楼层
你每次都需要加载吗?为什么不加载一次,然后只使用一个工作区,您可以在工作区中关闭和打开菜单。这里的每个人都在一个以他们的名字命名的工作区工作,所以Deafolt工作区并没有搞砸。
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 19:39:53 | 显示全部楼层
你好,比格尔,这是我第二次写这篇文章,因为我的电脑崩溃了
 
嗯,当我安装其他插件时,我的工作场所会有一个菜单栏/功能区。我想和我的一样。
我的和其他插件之间有一个区别:如果我改变工作场所(或刷新它),我的菜单栏就会消失!
 
在这一刻,我用阿卡多克做了所有的事情。lsp,但我相信有更好的方法。我在找那条路。
 
我还制作了一个cordoli。cuix用于在autocad2015中显示色带,我称之为alway by acaddoc。使用此命令的lsp:(命令“\u menuload”“C:\\COBIAX\\cordoli.cuix”)
 
如何制作一个“专业”的附加组件来解决这些问题?
 
谢谢,丹尼斯
 
科尔多利。cuix。拉链
 
此外,我还遇到了这个问题:
命令行无法加载
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:45:50 | 显示全部楼层
您需要在加载mnu等后保存工作区,否则它将在下一个会话中消失。我们为每个用户提供了单独的工作区,因此强制保存他们的名字,我们没有自动更新,因为任何错误都会被保存,使修复更加困难。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:36 , Processed in 0.404171 second(s), 75 queries .

© 2020-2025 乐筑天下

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