找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1006|回复: 14

[求助] [求助]:怎么自定义自己的菜单

[复制链接]
发表于 2007-7-8 21:53:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
比如自己编了许多lisp程序,现在想在CAD菜单栏里添加一个下拉菜单,里面都是自己定义的命令。如何实现呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-7-9 06:58:09 | 显示全部楼层
在ACAD.MNS里下拉菜单的后面,按下列格式增加内容
***POP12
**TOOLS1
ID_MnTools1  [自己的工具]
ID_ 命令名      [汉字命令]^C^C_命令名
………
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-10 22:08:56 | 显示全部楼层
05及以下版本,多揣摩acad.mnu文件;06及以上版本 cui
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-11 09:11:09 | 显示全部楼层
Express应该是最正宗的处理这个问题的例子。
不需要直接去改acad.mnu。
写好局部菜单文件后,在对应的MNL文件里加类似的内容:
(defun wltool-init-placemenu-wl (/ CNT)
  (setq CNT 1)
  (while (< CNT 24)
    (if (menucmd (strcat "P" (itoa CNT) ".1=?"))
      (setq CNT (1+ CNT))
      (progn
        (if (> CNT 2)
          (setq CNT (- CNT 2))
          (setq CNT 2)
        )
        (menucmd (strcat "p" (itoa CNT) "=+wltool.pop1"))
        (setq CNT 25)
      )
    )
  )
)
(wltool-init-placemenu-wl)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-11 10:41:38 | 显示全部楼层
自定义菜单参见:http://www.shiy.net/rjyy/cad/jc/20061218/5624.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-11 22:57:29 | 显示全部楼层
懒虫说的那个方法是什么看不懂啊。
    我想要实现的是加载自己定义的命令,教程里的实例都是定义己知命令啊。比如_pline    _arc 等,比如我自己定义的命义是vv.lsp,快捷命令是vv,那怎么把这个快捷命令定义为下拉菜单呢?
是这样吗?
***POP12
**TOOLS1
ID_MnTools1 [自己的工具]
ID_ vv [放水口]^C^C_vv
………
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-12 08:26:19 | 显示全部楼层
我再仔细说说:
1. AutoCAD允许同时使用多个菜单文件,除了主菜单外还有局部菜单或局部CUI文件。
2.要加一个用户的菜单项用局部菜单就可以实现,而不用去改acad.mnu。
3.局部菜单和菜单文件类似,加载的同时自动加载和它相同位置的mnl文件。
4.加载局部菜单并没有把菜单项插入到主菜单的下拉菜单里,我们可以把插入局部菜单到下拉菜单的内容些到mnl文件里,这样可以保证每次打开CAD都有自定义的局部菜单的内容。

上面的代码就是把局部菜单插入到下拉菜单的函数。从EXPRESS拷出来改的。

如果还清楚,看http://civilworker.com
这个软件的安装过程到菜单的插入都是用源代码提供的(除了通过反应器启动来执行安装的LSP)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-12 08:27:10 | 显示全部楼层
最初由 animal212 发布
[B]懒虫说的那个方法是什么看不懂啊。
    我想要实现的是加载自己定义的命令,教程里的实例都是定义己知命令啊。比如_pline    _arc 等,比如我自己定义的命义是vv.lsp,快捷命令是vv,那怎么把这个快捷命令定义为下拉?.. [/B]


楼上的,看我的.mnu一段:
//     常用lsp命令收集

//


***MENUGROUP=lsp

***POP1
ID_lsp                  [自己专用]


[->统计工具]

多线长度dx[多线长度dx]^C^_dx  (if (not dx)(load "多线长度dx"));dx
拾取求和pickad[拾取求和]^C^_pickad  (if (not pickad)(load "拾取求和pickad"));pickad
周长面积md[周长面积md]^C^_md  (if (not md)(load "周长面积md"));md
面积统计aaa[面积统计aaa]^C^_aaa (if (not aaa)(load "面积统计aaa"));aaa
[->面积标注mjbz]
[总图面积]^C^_ztmj  (if (not ztmj)(load "面积标注mjbz"));ztmj
[<-<-建筑面积]^C^_jzmj  (if (not jzmj)(load "面积标注mjbz"));jzmj

[->圆线工具]

线加载lol[线加载lol]^c^_lol (if (not lol)(load "线加载lol"));lol
[徒手画sketch]^c^_sketch
线虚实DAH[线虚实DAH]^c^_DAH (if (not DAH)(load "线虚实DAH"));DAH
改线宽gxk[改线宽gxk]^c^_gxk (if (not gxk)(load "改线宽gxk"));gxk
线粗cw[线粗cw]^c^_cw (if (not cw)(load "线粗cw"));cw
线宽批改edl[线宽批改edl]^c^_edl (if (not edl)(load "线宽批改edl"));edl
修改线宽xw[修改线宽xw]^c^_xw (if (not xw)(load "修改线宽xw"));xw
曲线加粗slw[曲线加粗slw]^c^_slw (if (not slw)(load "曲线加粗slw"));slw
波浪线blx[波浪线blx]^c^_blx (if (not blx)(load "波浪线blx"));blx
椭圆转pl线tmp[椭圆转pl线tmp]^c^_tmp (if (not tmp)(load "椭圆转pl线tmp"));tmp
放射线[放射线]^C^_centersideline (if (not centersideline)(load "放射线centersideline"));centersideline                               
线切割lcut[线切割lcut]^c^_lcut (if (not lcut)(load "线切割lcut"));lcut
两点曲线[两点曲线sspl]^c^_sspl (if (not sspl)(load "两点曲线sspl"));sspl
两线间面线[两线间面线lll]^c^_lll (if (not lll)(load "两线间面线lll"));lll
单点打断BRAT[单点打断BRAT]^c^_BRAT (if (not BRAT)(load "单点打断BRAT"));BRAT
批量交点打断jd[批量交点打断jd]^c^_jd (if (not jd)(load "批量交点打断jd"));jd
交点断开bb[交点断开bb]^c^_bb (if (not bb)(load "交点断开bb"));bb
角平分pfx[角平分pfx]^c^_pfx (if (not pfx)(load "角平分pfx"));pfx
面转pl线r2p[面转pl线r2p]^c^_r2p (if (not r2p)(load "面转pl线r2p"));r2p
双向偏移2o[双向偏移2o]^c^_2o (if (not 2o)(load "双向偏移2o"));2o
线段等分dvp[线段等分dvp]^c^_dvp (if (not dvp)(load "线段等分dvp"));dvp
圆弧变圆a2c[圆弧变圆a2c]^c^_a2c (if (not a2c)(load "圆弧变圆a2c"));a2c
线换向lr[线换向lr]^c^_lr (if (not lr)(load "线换向lr"));lr
引线标注[引线标注]^c^_ll (if (not ll)(load "引线标注"));ll
曲引标注[<-曲引标注]^c^_al (if (not al)(load "引线标注"));al

用menuload局部加载lsp,
就会出现《自己专用》这个菜单
你复制我这段去依葫芦画瓢,
改一下就是你自己的了.
要注意每段结尾开头
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-12 11:33:23 | 显示全部楼层
ID_ vv [放水口]^C^C_vv改成
ID_ vv    [放水口]^C^C_vv即可,ID_ vv后面要有空格,多少不限,
………
另建议在ACAD.MNS文件里改,这样即使错了或者想改回原来状态,只要把ACAD.MNS文件删除,系统便会自动由acad.mnu文件生成ACAD.MNS文件,这个重新生成的ACAD.MNS文件和你没修改之前的ACAD.MNS文件内容是一样的。
以上别的楼主的方法我不会,可能各有各的高招,我用上述方法挺好用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-12 18:22:03 | 显示全部楼层
非常谢谢大家热心诚恳帮助!
我还有一问就是,要执行下拉菜单里自定义的命令是不是要先将程序加载,那加入太多的lisp程序日常启动项对CAD运行效率会不会有影响?我都不敢添加太多的启动项,
只编了个"加载程序.lsp"如下:
(load aa.lsp)
(load bb.lsp)
(load cc.lsp)
.......
然后将“加载程序.lsp”设为日常起动项,不知道这样可不可以?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-12 19:00:22 | 显示全部楼层
最初由 animal212 发布
[B]非常谢谢大家热心诚恳帮助!
我还有一问就是,要执行下拉菜单里自定义的命令是不是要先将程序加载,那加入太多的lisp程序日常启动项对CAD运行效率会不会有影响?我都不敢添加太多的启动项,
只编了个"加载程序.lsp... [/B]


要执行下拉菜单里自定义的命令必须将程序加载。
加入lisp程序在启动项,一般不会对CAD运行效率有影响,除非你的程序非常大且复杂。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-12 19:04:19 | 显示全部楼层
[php]
(load "aa.lsp")
(load "bb.lsp")
(load "cc.lsp")
[/php]
选择这种方式的话,就必须将“aa.lsp”  “bb.lsp” 。。。等文件放入ACAD的支持路径之中。

<br>
另外,建议改用autoload函数,以实现按需加载。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-13 09:44:52 | 显示全部楼层
谢谢zml84,现在大概知道怎么做了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-13 11:29:57 | 显示全部楼层
看来楼主是不做下拉菜单,
仅仅是自动加载就行了!
太多的lsp,
你怎么用啊?
有了下拉菜单,
哪有这么麻烦!
我在8楼的mnu文件,
连缩写提示也有,÷
也就是启动cad后第一次点菜单(不用在一大堆lsp中找,也无需记住命令),
第二次随便用快捷命令!
够方便了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-13 20:30:34 | 显示全部楼层
lhj743  的方法是不错,我试过了,但程序执行的过程中,比如按下拉菜单中的“放水口”,虽然程序可以执行,但是会打印“(if (not _vv)(load "放水口.lsp"));_vv”这一串字符,挺讨厌的,有没有办法让它不打印呢?

zml84,autoload只能加载lsp程序,fas程序不能加载,有没有其他办法可以实现按需加载fas程序呢。“ID_ vv [放水口]^C^C_vv (if (not _vv) (load "放水口.fas"));_vv ”这一段是不是所谓的按需加载呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 08:26 , Processed in 0.421611 second(s), 66 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表