langjs 发表于 2014-6-15 01:42:18

lisp 创建自定义菜单

本帖最后由 langjs 于 2014-6-15 01:57 编辑

以前发过一个lisp创建自定义工具栏 ,http://bbs.mjtd.com/thread-92860-1-1.html
现在补一个创建自定义 菜单程序。
加载这个程序就自动创建了一个新的菜单在CAD上了

刚才看到G版发了一个VisualLisp自动添加菜单项源码,等有空再研究研究。

先来张图:


;; ==============================================================
;;; 说明:用lisp创建菜单
;;; 作者:langjs   qq:59509100                 日期:2014年6月
;;; ==============================================================
(defun create_klscl (/ f i)
(if (not (menugroup "KLSCL"))               ; 如果cad没有加载klscl菜单则,得干啥呢....
    (progn
      (alert "\n程序自动创建\"KLSCL\"菜单,请稍后")
      (setq f (open "KLSCL.mnu" "W")); 建立klscl.mnu菜单文件,得写点东西在里边
      (write-line "***MENUGROUP=KLSCL" f) ; 菜单名称就叫klscl吧
      (write-line "" f)                     ; 不用管它,这行就这个
      (write-line "***POP1" f)               ; 这行还不用管
      (write-line "" f)                     ; 接着不管。。。
      (write-line "               " f) ; 显示的菜单头,没头可不行
      (write-line "               [--]" f) ; 一个分界符,纯粹为了好看
      (write-line "               [脱硫废水系统TLFS]^C^CTLFS" f) ; 点击这个执行^c^c后边的tlfs主程序
      (write-line "               [--]" f) ; 再来一个分界符,帅多了
      (write-line "               [查询参数      CXCS]^C^CCXCS" f) ; 点击这个执行cxcs主程序
      (write-line "             [->设置图块          ]" f) ; 向右弹出。。。
      (write-line "               [可分解    KKFJ]^C^CKKFJ" f) ; 真弹了一个东东来
      (write-line "             [<-不可分解KBFJ]^C^CKBFJ" f) ; 弹完得回去了
      (close f)                               ; 写完菜单关了吧
      (command "menuload" "KLSCL.mnu") ; 加载看看行不行
      (if (menugroup "KLSCL")               ; 真加载了!
      (progn                               ; 计算现有菜单数量,得把菜单安排个合适位置
          (setq i 1)
          (while (< i 24)
            (if (menucmd (strcat "p" (itoa i) ".1=?"))
            (setq i (1+ i))
            (progn
                (menucmd (strcat "p" (itoa i) "=+KLSCL.pop1")) ; 显示出klscl来鸟!那个i也可以是 (- i 2)
                (setq i 25)
      ))))))
)
(princ)
)
(create_klscl);;; 调用上边的子程序,加载lisp程序就加载了


;;; 我的其它程序,与创建菜单程序没啥大关系
(defun c:tlfs ()(alert "\n私人程序,真不提供。"))
(defun c:cxcs ()(alert "\n私人程序,真不提供。"))
(defun c:kkfj ()(alert "\n私人程序,真不提供。"))
(defun c:kbfj ()(alert "\n私人程序,真不提供。"))


sharetow 发表于 2019-6-14 15:25:24

强大,非常好用,适合初学lisp

15264769719 发表于 2023-4-1 15:03:50

还没学会,我只会加载

hn10183051 发表于 2019-8-16 11:08:08

360527010 发表于 2015-4-28 22:31
请问下,这个加载程序是否有数量限制的?为什么我加到第25个lisp插件的时候就无法加载了?

解决了吗?我也遇到同样的问题

yangchao2005090 发表于 2017-12-13 11:53:22

楼主,请问这一步(defun c:tlfs ()(alert "\n私人程序,真不提供。"))   具体怎么操作啊,比如20+个lsp程序,需要放到一个文件夹下吗?还是?

叮咚 发表于 2014-6-15 20:11:14

真心不错

xhq1954425 发表于 2014-6-15 05:31:00

本帖最后由 xhq1954425 于 2014-6-15 06:30 编辑

厉害!如果同时加载几个下拉菜单怎样改写……?

360527010 发表于 2014-6-15 10:37:39

求指点,不懂如何使用

自贡黄明儒 发表于 2014-6-15 10:39:18

赞一个,不错

edata 发表于 2014-6-15 11:40:05

很好的菜单制作实例。。。
(write-line "               [&KL水处理系统]" f) ; 显示的菜单头,没头可不行
&加热键

emk 发表于 2014-6-15 12:08:28

狼大师帖子要看的

langjs 发表于 2014-6-15 16:01:53

360527010 发表于 2014-6-15 10:37 static/image/common/back.gif
求指点,不懂如何使用

考下来存为XX.lsp文件。在CAD里边直接加在这个lisp程序

phoevana 发表于 2014-6-15 17:08:42

大师们同时出手,我等有福了,支持学习

lite 发表于 2014-6-15 20:24:19

不错,只是加载菜单的速度较慢
页: [1] 2 3 4 5 6 7
查看完整版本: lisp 创建自定义菜单