subtlation发表于2004-3-15 10:53:00求助秋枫大侠我按上面的方法做了一次。有一点问题。前面的都很好。用cad打开时发现菜单文件已经加载,但是在屏幕的菜单栏上并没有显示出来。附件中是我的... 你可能没有详细查看我给出的示例文件的内容 ctt.mnl:- ;; load applications and place menu
- ;; by qiufeng(load "cttsetup.lsp")
- (princ)
复制代码 其实主要加载菜单的代码都在这个cttsetup.lsp中,是用autolisp实现加载菜单的。你可以仔细看一下这个cttsetup.lsp,然后针对你的菜单文件进行修改。这个Autolisp程序对你来说应该是小CASE啦。你也可以把这段LISP的内容直接写在mnl中。cttsetup.lsp的内容:(我再加点说明吧,反正你要针对你自己的文件修改一下)- ;;;以下代码为秋枫添加,for setup;; 加载主程序----如有必要的话,针对不同的AutoCAD版本加载不同的文件。
- (if (< (atof (getvar "acadver")) 15.0)
- (arxload "ctt.arx")
- (load "ctt.vlx")
- );; The following code "placemenu" from LUCAS(龙龙仔);; 这些代码主要来自于本论坛的龙龙仔啦~~你先谢谢他。hehe
- (defun ctt_placemenu (/ n)
- (if (menugroup "CTT") ; 如果存在菜单组CTT
- (progn
- (setq n 1)
- (while (< n 24)
- (if (menucmd (strcat "P" (itoa n) ".1=?"))
- (setq n (+ n 1)) ; 不停地往后找,找到最后一条菜单(主要就是看看有几条啦)
- (progn ; 找到了
- (if (> n 3)
- (setq n (- n 2)) ; 插在倒数第三条的位置上。(Help与Window之前啦)
- (setq n 3)
- ) ;if
- (menucmd (strcat "p" (itoa n) "=+CTT.pop1")) ; 你如果有多个菜单组都在这里加载。当然要相应修改一下上下的数字
- (setq n 25)
- ) ;progn
- ) ;if
- ) ;while
- ) ;progn
- ) ;if
- (princ)
- );; 加载下拉菜单
- (ctt_placemenu)
另给一个晓东工具箱菜单插入的代码,这个是插两条菜单的例子,不多说了,你看得懂:- (defun C:AboutXDSoftMenu ()
- (xdrx_msgbox
- "\n欢迎使用面向应用的XDRX_API
- \n\nXDSoft安装程序由秋枫和Quelea制作 ;-)
- \nEachy网友完成菜单和部分程序制作
- \n更新请访问晓东CAD空间:http://www.xdcad.net"
- "*晓东工具箱 Public Beta 0.27* 1/1/2003" 0 0 1)
- (princ)
- )
- ;; The following code "placemenu" written by LUCAS
- (defun placemenu (/ n)
- (if (menugroup "XDSOFT")
- (progn
- (setq n 1)
- (while (< n 24)
- (if (menucmd (strcat "P" (itoa n) ".1=?"))
- (setq n (+ n 1))
- (progn
- (if (> n 3)
- (setq n (- n 2))
- (setq n 3)
- ) ;if
- (menucmd (strcat "p" (itoa n) "=+XDSOFT.pop2"))
- (menucmd (strcat "p" (itoa n) "=+XDSOFT.pop1"))
- (setq n 25)
- ) ;progn
- ) ;if
- ) ;while
- ) ;progn
- ) ;if
- (princ)
- ) ;defun placemenu
- (setvar "cmdecho" 0)
- (placemenu)
|