slysmart 发表于 2019-9-25 12:58:06

lisp添加菜单


acaddoc.lsp (不在cad安装目录下)
(defun s::startup ( / aa )
       (if (null (menugroup "sq214cad"))
        (progn
                   (command "filedia" 0)
          (command "_.menuload" "sq214cad.mnu")
           (menucmd "P16=+sq214cad.pop1")
                   (command "filedia" 1)
    )
       )
)
我在CAD "工具" -- "加载应用程序"-- "内容" 里添加acaddoc.lsp,启动CAD,菜单未添加成功。"sq214cad.mnu"与acaddoc.lsp在同一目录下,TKS





hn10183051 发表于 2019-9-25 13:24:44

cuiload加载MNU

slysmart 发表于 2019-9-25 13:33:02

hn10183051 发表于 2019-9-25 13:24
cuiload加载MNU

menuload也可以加载菜单,应该不是这个原因

hn10183051 发表于 2019-9-25 13:41:17

看看帮助吧。

slysmart 发表于 2019-9-25 14:08:45

我在末尾添加" princ ",发现执行了
只是菜单没有添加成功,不知道为什么

slysmart 发表于 2019-9-25 14:21:14

发现问题了
(command "_.menuload" "sq214cad.mnu")这里需要使用绝对路径
想问一下,lisp怎么使用相对路径

USER2128 发表于 2019-9-26 07:54:20

(command "_.menuload" (findfile "sq214cad.mnu"))

hn10183051 发表于 2019-9-26 08:55:13

(defun wh_Loadmnu (/ pre_filedia CNT)
(if (not (menugroup "sq214cad"))
    (progn
      (setq pre_filedia (getvar "filedia"))
      (setvar "filedia" 0)
      (vl-cmdf "menuload" "sq214cad.mnu")
      (setq CNT 1)
      (while (menucmd (strcat "P" (itoa CNT) ".1=?"))
      (setq CNT (1+ CNT))
      )
      (if (> CNT 1)
      (setq CNT (- CNT 1))
      (setq CNT 1)
      )
      (menucmd (strcat "P" (itoa CNT) "=+sq214cad.pop1"))
      (princ
      "\n菜单及工具条已成功加载,欢迎您再次使用!"
      )
      (setvar "filedia" pre_filedia)
    )
    (prompt "\n菜单已加载!")
)
(princ)
)
(wh_Loadmnu)

slysmart 发表于 2019-9-26 09:05:13

slysmart 发表于 2019-9-25 14:21
发现问题了
(command "_.menuload" "sq214cad.mnu")这里需要使用绝对路径
想问一下,lisp怎么使用相对路 ...

这个好用,谢谢

slysmart 发表于 2019-9-26 14:44:52

slysmart 发表于 2019-9-26 09:05
这个好用,谢谢

findfile()函数的功能是在autoCAD的当前目录
我的文件不在autoCAD的当前目录,如何能让findfile()函数找到指定目录?
页: [1] 2
查看完整版本: lisp添加菜单