明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: tengte

[求助](已解决)可以将F1-F12功能键与LISP函数关联吗?或者直接改变功能键的默认功

  [复制链接]
 楼主| 发表于 2009-7-1 00:07 | 显示全部楼层
谢谢mccad!还想问一个问题:可以在CUI文件中直接加入相关的功能吗?
发表于 2009-7-1 05:23 | 显示全部楼层

下载学习!谢谢分享……

发表于 2009-7-1 06:32 | 显示全部楼层

可以在CUI中写入相关功能,但CUI复杂得多,暂时并不推荐那样做,费时啊。

发表于 2009-7-1 08:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-7-6 11:08 | 显示全部楼层
:), Lisp大概还是无法直接修改F1-F12的功能键的,当然,明总的菜单方法是个好方法。
假如是用LISP编供大家用的程序的时候,是个很好的方法的。
假如是自用的话,以下是一些以前写过的替代方法。不过主要介绍的是用AUTOHOTKEY的方法,见笑了,用的不是LISP的方法,可能有点走题。
---------------------------------------------------------
使用AUTOCAD的朋友都有这样的体会,图要画得快,得左手键盘右手鼠标的,这就使得要将命令尽可能地布置在左手键盘区。
重定义命令有几种方法
ACAD.PGP(优点,批量;缺点,不小心会改变别人的绘图习惯)
自定义LISP(优点,拷贝到U盘,绿色加载。缺点,无法定义功能键)
自定义ARX(优点,功能强大。缺点,与CAD版本相关,有一定编写难度)
autohook(优点,可定义F1等功能键,非常好用。缺点,与CAD版本相关,收费软件)
Hotkeys(由Chuck Gabriel编写,有VISUAL C++版和C#版,优点,可自由定义各功能键。但似乎还是和CAD版本有一定的相关性[没有仔细测试没有发言权],假如想获取C#版代码的话,可到http://www.theswamp.org/index.php?topic=10570.0处 )
其实,利用AUTOHOTKEY[http://www.autohotkey.com]的热键功能,可以实现AUTOHOOK的功能,还可以做的更好。
比如将以下代码存为a.ahk,下载一个autohotkey,安装之,运行a.ahk,即可
复制内容到剪贴板代码:
  1. #IfWinActive AutoCAD
  2. F1::send,'z{space}d{space}    ;;动态缩放
  3. `::send,'_matchprop{space}    ;;按`键(ESC下面那个键)进行特性匹配 matchproperty
  4. F4::send,'osmode{space}673{space}    ;;按F4实现END INT PER NEA四种捕捉的设置,请参看OSMODE变量,自己选择几种捕捉的数值进行加法操作)
  5. tab::send,^l     ;;(按TAB实现正交操作的切换,如同F8)
  6. !1::send,'3do    ;;(按ALT+1实现命令3dorbit,3维视图切换)
  7. MButton::Send, 'pan{enter}     ;;屏蔽鼠标中键双击的图形最大化操作,有些朋友喜欢,有些不喜欢)
复制代码
看着这段代码,您也可以直接编辑得更好的,是吧:)
---------------------------------------------------------
假如对AUTOHOTKEY 不算很熟悉的朋友,可以大概看看我写过的一点点入门教程
------------------
http://soft.deepin.org/read-htm-tid-721646.html
【教程】Autohotkey 的几个入门级应用
http://soft.deepin.org/read-htm-tid-987283.html
在Word 2003中的一元二次方程求解器
(这个是对世纪旗云结构分析软件计算书的一个简单入门探讨吧:)

发表于 2009-7-6 11:45 | 显示全部楼层
如果真的需要在程序中完成,则可以通过程序修改菜单,再加载,应该更是简单的。
发表于 2009-7-6 12:02 | 显示全部楼层

To mccad兄

应该是可行的,等下我也来学习试验一下。

发表于 2009-7-6 19:37 | 显示全部楼层

在Mccad兄的提示下,经过研究,在

http://www.mjtd.com/BBS/dispbbs.asp?boardid=3&replyid=82428&id=18715&page=1&skin=0&landlord=0&Star=2

的mccad兄和lazybone兄二位高手代码的基础上,改造得到了如下函数功能

动态生成菜单,将F1定义为类似F8的正交切换键等功能

;;用法:ldmu是加载菜单,uldmu是卸载菜单,加载本程序后,即可使用如下功能键
;;快捷键的定义
;;F1:定义为正交切换(如同F8功能,可惜不懂如何用F1模拟^L键,只好用LISP代替)
;;F2-F5按照MCCAD兄的定义,没有修改
;;ctrl+w:3dorbit命令
;;ctrl+e:画椭圆的命令(这两个命令只是测试ctrl键的应用)

功能键部分定义尚粗糙,有待进一步改善

如:如何定义"TAB"键和"`"键,是否能够定义如"CTRL+1"之类的快捷键,都没有测试成功,也请高手指点

 

本帖子中包含更多资源

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

x
发表于 2009-7-6 21:14 | 显示全部楼层

并不是怎么键都可以设置快捷健。

再改进一下,搞个界面出来,就完全可以代替其它外挂软件了。

发表于 2018-12-29 02:59 | 显示全部楼层
Nice idea ^^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 18:47 , Processed in 0.234038 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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