明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 31570|回复: 53

[基础教程] 深度定义AutoCAD菜单,使用Alt 及系统保留的键盘快捷键,增强右键关联菜单!

    [复制链接]
发表于 2012-4-29 12:03 | 显示全部楼层 |阅读模式
本帖最后由 alan_cmh 于 2019-9-25 10:08 编辑

深度定义AutoCAD菜单,使用Alt 及系统保留的键盘快捷键,增强右键关联菜单!

深海潜水多年,今天上来冒个泡,祝大家五一快乐!假期闲来无事,给大家说点自定义菜单的事儿,绝对原创,绝对实用!

Auotcad有一些默认的键盘加速快捷键,如F3键,Ctrl + 数字键1,2,3,Ctrl +字母键A ,S,P 等。但默认的快捷键很少,免不了要自己动手增加一些来提高工作效率。普通的定义快捷键,这里就不多说了。但AutoCAD本身对快捷键有些限制,辅助键只可以使用Ctrl ,Ctrl+Alt,Ctrl+Shift,Ctrl+Shift+Alt来配合某些字母键、数字键、功能键或虚拟键(如 F5 ,Insert ,NumPad7)等。
受支持的虚拟键有:
Escape 、Insert 、Delete 、Home、End 、Page Up 、Page Down 、左箭头、右箭头、上箭头和下箭头。

Escape 只能单独使用或与修饰符组合键 Ctrl+Shift+Alt 配合使用。不过windows7已经把Esc键占了,咱就不动它了。

个人经验,实际使用中,左手键盘右手鼠标比较有效率,对于左手操作,Ctrl ,Ctrl+Alt 配合其它键比较好按,Ctrl+Shift 一般,Ctrl+Shift+Alt 则按键太多令人抓狂,左手5根指头用4根,怎么按都别扭,估计很少人设置这个做快捷键,实在是不太方便使用,尤其是在右手不离开鼠标的前提下。之前用过一段时间AutoHook这个软件,可以允许在AutoCAD用一些奇怪的键盘组合(Alt,Shift等)来输出命令,尤其Alt 加左手几个字母和数字十分好用,但网上找到的可用版本,只支持到AutoCAD2007;论坛里之前也有人发一个ARX版本的类似插件,但现在过期不可用了。其实可以用一个绕弯子的办法,来突破限制,使用Alt 组合键及覆盖系统的一些保留快捷键。

找一个AutoCAD 2004或者05的菜单文件,名称是acad.mnu,用记事本打开,找到"***Accelerator"字段,可以看到以下内容:
***ACCELERATORS
ID_Hyperlink [CONTROL+"K"]
[CONTROL+"L"]^O
[CONTROL+"R"]^V
ID_SelAll [CONTROL+"A"]
ID_Copyclip [TOOLBAR+CONTROL+"C"]
ID_New [CONTROL+"N"]
ID_Open [TOOLBAR+CONTROL+"O"]
ID_Print [TOOLBAR+CONTROL+"P"]
ID_Save [TOOLBAR+CONTROL+"S"]
ID_Saveas [CONTROL+SHIFT+"S"]
ID_APP_EXIT[INTERNAL+CONTROL+"Q"]
ID_Pasteclip[TOOLBAR+CONTROL+"V"]
ID_Copybase [CONTROL+SHIFT+"C"]
ID_Pastebloc [CONTROL+SHIFT+"V"]
ID_Cutclip [TOOLBAR+CONTROL+"X"]
ID_Redo [CONTROL+"Y"]
ID_U [CONTROL+"Z"]
ID_Ai_propch[TOOLBAR+CONTROL+"1"]
ID_CleanScreen [CONTROL+"0"]
ID_Content [TOOLBAR+CONTROL+"2"]
ID_SSMPalette [CONTROL+"4"]
ID_INFOPAL [CONTROL+"5"]
ID_MarkupMgr [CONTROL+"7"]
ID_TPalette [CONTROL+"3"]
ID_dbConnect [CONTROL+"6"]
ID_VBARun [ALT+"F8"]
ID_VBAIDE [ALT+"F11"]
[CONTROL+"H"]+'_setvar;pickstyle;$M=$(if,$(eq,$(getvar,pickstyle),0),1,$(if,$(eq,$(getvar,pickstyle),1),0,+
$(if,$(eq,$(getvar,pickstyle),2),3,2)))

其中带ID前缀的,如ID_Hyperlink是指的系统默认命令,方括号中间是启动此命令的快捷键,其实我们可以自己定义一个快捷键,不须理会ID段,现在我们来定义使用Ctrl+Alt+B启动“打断于点”命令,如:
[Control+Alt+"B"]^C^C_break;\_f;\@;

OK,现在把Control+Alt换成Alt添加到acad.mnu菜单里,再多输入下面示例的几个命令快捷键,另存起来。请注意的是方括号后面的命令名称不要一样,因为后面系统会为同样的命令分配相同的ID,这个ID是系统为新命令自动建立的,比如,你想增加些Alt键快捷键,必须用不同的命令来占用ID位,方便以后修改,命令名称随便写都行,如下方的AltF1,AltF2,AltF3。至于方括号后所用到的特殊字符,请自行查阅帮助文件。方括号后面的命令,可以是简单的系统命令,可以是宏命令,可以控制工具栏或者切换界面元素,还可以是lisp程序命令(如下面的CenterLine),下面给出一些示例:

[Alt+"B"]^C^C_break;\_f;\@;
[Alt+"C"]_Copy;
[Alt+"V"]^C^C_Xline;V;
[Alt+"1"]'_Osmode;6271;
[Alt+"2"]_Chprop;\;C;2;;
[Alt+"3"]^C^C_CenterLine;
[Alt+"Pageup"]'_setvar;menubar;$M=$(if,$(eq,$(getvar,menubar),1),0,1)
[Alt+"NumPad1"]_-toolbar;user1;show;
[Alt+"F1"]AltF1
[Alt+"F2"]AltF2
[Alt+"F3"]AltF3

保存下刚才编辑过的acad.mnu文件,回到AutoCAD,在命令行输入CUI,打开“传输”选项卡,点击右侧那个打开文件按钮,找到我们刚才保存的acad.mnu文件



在右侧找到我们自己定义的那些快捷键,把它拖到左侧对应位置,



现在这几个Alt 快捷键就被传输到当前自己使用的菜单中了,回到自定义选项卡查看下,请注意,右侧的快捷键,不要尝试去修改它,AutoCAD不允许你定义Alt+B 这类快捷键,会自动删除掉,但是你不动它,也会被保存下来。至于其它栏,可以根据自己的需要去修改。下面有个元素ID是AutoCAD自动分配的,上面编辑acad.mnu菜单那一步,你如果偷懒快捷键定义不同,而命令相同的话,实际上分配到的ID是一样的,这时候再去修改这个命令,你会把所有相同
ID的项目,全部修改成一样,从而无法实现不同的快捷键调用不同命令。




点击确定,保存当前修改,回到AutoCAD工作界面,试试刚才定义的快捷键吧,是不是搞定了!用这种移植传输的方法,可以为所欲为的覆盖修改部分AtuoCAD保留的快捷键,不是全部,有些键位仍然无效的,总体来说,够用了。本例在AutoCAD2012下操作, 理论上适用于2006到2013各个新版菜单系统 这里向大家道歉,关于Alt键的调用,经本人64位win7测试,修改过2010-2013。2010测试不通过,2011,2012,2013,2014,2015,2016,2017,2018,测试通过,其它版本请各位测试后回贴通知,估计低版本通过可能性不大。本贴介绍的其它菜单修改与增强不受AutoCAD版本限制。但是,适可而止吧,多了估计你也记不住,咱的目的就是用上左手那几个Alt 快捷键,在使用键盘快捷键的时候,少伸2个指头!#%%*!@*T&^@$

09以后AutoCad界面发生了很大变化,加入了Ribbon界面,相对来说,Ribbon界面可以在相同的面积里显示比以前更多的命令,对新手是个好事,可以了解更多命令。但是这个界面对现在的宽屏显示器,尤其是笔记本是个恶梦,本来上下空间紧张,Ribbon还要占去好大块面积。还有些命令被分配在不同的标签下,要找到还要点击多次鼠标。Ribbon界面,Alt+数字键这几个,还是不要设置了,因为这几个是Ribbon界面的默认快捷键,会有冲突。另外,如果菜单开着的话,也会跟一些菜单快捷键冲突的,如下图,Alt+F,1,2,3,E,V,I,O,T,D,N,M,O,W,H,都被分别占用了,开着菜单,字母被占用,关了菜单,数字被占用,所以还是用刚才定义的 "Alt + Page up" 快捷键来隐藏掉菜单吧,对于熟悉命令行的老手来说,恐怕大多数都是隐藏甚至关了Ribbon界面和菜单,只打开一些必用的工具栏,使用键盘鼠标来干活的。所以没有Ribbon和菜单应该不是什么问题。一些Alt键,要关了菜单才好用。



有些人可能要说了,太麻烦了,我可以自定义acad.pgp文件,但是PGP文件里定义的简写命令,只能执行命令的第一步,而且还需要额外的空格键来确认命令的执行,而键盘加速键的好处在于是可以即时执行一系列命令动作的,包括响应外部的lisp程序,有些命令,做成lisp程序有点大材小用,放在关联对象菜单里却正好。AutoCAD的菜单是分好几个菜单组合在一起的,关联对象菜单部分是变化的,只对特定的图元起作用,如标注对象菜单只在选择标注的时候才出现,填充对象菜单只在选择填充的时候出现。下面的这个命令 ,我们可以把它定义在标注关联菜单中,快速将标注文本置中,如果用命令行方式来操作,恐怕很不方便.
_dimoverride;dimtix;1;;\;;

在命令列表里,点击新建命令按键,在右方特性区域名称栏里输入"&1. DTC ",在宏里输入"_dimoverride;dimtix;1;;\;;" 然后将定义好的这个命令拖到上方的标注对象菜单里,点确定.



回到AutoCAD工作界面,选择一个文本不在标注线中间的尺寸,点击鼠标右键,可以看到刚才新建的标注关联菜单命令DTC,如下图,点一下“1.DTC”或者敲下
左手键盘上的1,执行后,就会和下面的标注一样了标注文本被居中放置了。(&是个加速键符号,在菜单里,它后面跟的字符如果是1,那么菜单调用出来后,按1可以迅速调用DTC,你甚至都不需要移动鼠标去选择DTC)



菜单的深度定制,我这里只做个引子,大家可自由发挥,合理配好&后面的快捷按键,会非常方便
可以考虑修改增强的菜单有:

编辑菜单:用_Chprop更改对象线型,颜色,图层等;
标注对象菜单:加几个不同的标注显示或换算比例,更新,翻转箭头,添加解除关联,用dimoverride更改其它标注变量;
填充对象菜单直接在右键里,用-Hatchedit更改比例,角度,样式,AutoCAD自带填充样式的个人而言也就常用几种而已;
添加实体编辑对象菜单;
Shift + 右键改成正交切换,这样不用看键盘都能切换正交;
捕捉菜单里放几个Osmode,加上极轴切换或者其它状态栏切换选项;

一些菜单里用得到的系统默认的宏,其它的自查帮助文件吧:
^O  切换正交
^U 切换极轴
^D 切换动态USCS
^E 下一个等轴平面

如果实在懒得去找空默认菜单去编辑占位ID,我这里做好了一个现成的空的菜单,只包含快捷键部分,除了系统默认的,其它都有不存在的空命令占着,自己传输拖到菜单里,对于2006以前的版本,用记事本打开附件对比下自己的菜单文件,直接替换自己想改的部分就行了.




http://bbs.mjtd.com/thread-93473-1-1.html
上面的贴子里,有人问如何详细设置鼠标按钮,我把当时的回答也贴到这里来,可以参照下修改AutoCAD2006以前的菜单文件:

菜单文件里,鼠标右键配合功能键定义是分别设置的,Buttons2部分是定义Shift+右键,Buttons3是Ctrl+右键,Buttons4是Ctrl+Shift+右键  ,可以根据需要分别配置,每一行代码一个鼠标按钮,第一行是鼠标第二键:右键,第二行是鼠标第三键, 第三行是鼠标第四键,因手头没有多键鼠标,没有尝试太多,但对我只设置右键相关就足够用了。按你的需要,修改的时候,只改Button2部分为^O就可以切换正交了。另外,看下你的Button3设置里,有没有"$P0=SNAP $p0=*",这个是捕捉菜单代码,如果没有就把它加进去。

以下这个是我常用的鼠标按钮设置,修改了3个部分,Shift+右键是切换正交,Ctrl+右键是捕捉菜单,Ctrl+Shift+右键是切换极轴和对象捕捉追踪,可以参照下 :

***BUTTONS1
// Simple + button
// if a grip is hot bring up the Grips Cursor Menu (POP 500), else send a carriage return
// If the SHORTCUTMENU sysvar is not 0 the first item (for button 1) is NOT USED.
$M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,5),GRIP_),$P0=ACAD.GRIPS $P0=*);
$P0=SNAP $p0=*
^C^C
^B
^O
^G
^D
^E
^T

***BUTTONS2
// Shift + button
^O

***BUTTONS3
// Control + button
$P0=SNAP $p0=*

***BUTTONS4
// Control + shift + button
'_setvar;autosnap;$M=$(if,$(eq,$(getvar,autosnap),63),0,63)

本帖子中包含更多资源

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

x

评分

参与人数 6明经币 +6 金钱 +51 收起 理由
菜鸟初来乍到 + 1
zhangcan0515 + 1
白丝折纸 + 2 很给力!
e2002 + 30 绝对好文!发掘了 AutoCAD 的隐秘功能,并与.
自贡黄明儒 + 1 神马都是浮云
【KAIXIN】 + 1 + 21 热心助人,好资料分享奖!

查看全部评分

本帖被以下淘专辑推荐:

  • · 学习|主题: 95, 订阅: 7
  • · 工具|主题: 71, 订阅: 4
  • · 学习|主题: 24, 订阅: 0
发表于 2021-1-4 22:52 | 显示全部楼层
本帖最后由 aichong 于 2021-1-4 23:04 编辑
e2002 发表于 2014-6-11 23:11
官方自定义文档中一直都表明不能使用单独 Alt+"字母" 作为快捷键定义。
长期以来我一直也信以为真,似乎很 ...

其实,高版本CADcui界面里面默认有ALT+F8ALT+F11的快捷键定义,应该也是采用楼主的方法定义的。
但是你直接在cui里面改的话,CAD提示是不能修改的,比如将ALT+F8改为ALT+F9

假如你将ALT+F8改为Shift+F8,则可以修改,但你再次将Shift+F8改为ALT+F8的话,CAD也是不允许改回来的了,出现上面的提示信息。
因此,修改的时候最好备份一下相应的cuix文件,比如2020版的文件位于C:\Users\Administrator\AppData\Roaming\Autodesk\AutoCAD2020\R23.1\chs\Support\acad.CUIX

================
2005版本的acad.mnu的部分快捷键定义:

***ACCELERATORS
ID_VBARun   [ALT+"F8"]
ID_VBAIDE   [ALT+"F11"]

发表于 2019-6-3 05:10 | 显示全部楼层
                                     LISP?
发表于 2012-4-29 20:05 来自手机 | 显示全部楼层
支持,精彩,学习了,可以替换esc和f1么?
 楼主| 发表于 2012-4-29 22:11 来自手机 | 显示全部楼层
Esc加其它Ctrl,Alt等,在win7里是被系统接管了,改不到的。
F1没有问题。
发表于 2012-4-30 00:18 | 显示全部楼层
强烈顶起,占个位,学习了
发表于 2012-4-30 05:20 | 显示全部楼层
楼主辛苦了
发表于 2012-5-8 13:05 | 显示全部楼层
Shift + 右键改成正交切换怎么改? 鼠标右键不知道怎么写!?
 楼主| 发表于 2012-5-8 19:10 | 显示全部楼层
本帖最后由 alan_cmh 于 2012-5-9 08:36 编辑

新建一个命令,在宏里面输入"^o ",然后把这个命令拖到Shift+单击>按钮2的位置,注意,默认的Shift+右键是对象捕捉菜单,菜单命令ID是MMU_002,不要直接改这里的宏,会把所有的其它相同ID的 菜单都改掉的,这样你就看不到捕捉菜单了。

本帖子中包含更多资源

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

x
发表于 2012-5-9 11:21 | 显示全部楼层
本帖最后由 wowan1314 于 2012-5-10 10:56 编辑

谢谢,很详细,很有用,对追求快捷键的人帮忙很大。我左手两键组合好用的都用完了。

以后再加命令就加到ALT+字母上了。  ALT要比shift好用的多啊。 鼠标右键也支持ALT就好了(而且SHIFT是中英文切换呢)。

话说ALT+字母在CAD2004中无法自定义啊! ??
发表于 2012-5-9 17:47 | 显示全部楼层
技术贴呀.支持!
发表于 2012-5-10 10:34 | 显示全部楼层
可惜绝大多数人都不知道这些...
当年DOS/R12时代自定义菜单的重要可是不亚于编写LISP解决问题.



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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 01:00 , Processed in 0.696953 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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