快捷键系统一源码
本帖最后由 尘缘一生 于 2021-11-11 19:55 编辑快捷键本坛不少,多少存在不合理的地方,用了点功夫,改写。
进一步:将开发:支持用户定义CAD,其余插件快捷键,保证不冲突的思路在考虑,有好思路了,会更新本帖--》
快捷键做完,自然界面想做成面板,链接如下:
http://bbs.mjtd.com/thread-184354-1-1.html
本帖最后由 尘缘一生 于 2021-11-11 21:24 编辑
世井 发表于 2021-11-10 10:22
no function definition: DCL2LISP
不光这个,里面还好几处,这不是关键问题,这就是写DCL的吗,可以换作其他。
请注意,我发的几个函数的作用。外行看热闹,内行才看门道。
[*];; DCL写进LISP函数---------(一级)------------
[*](defun dcl2lisp (lst_str / str f)
[*](setq &file (getfilen ".dcl") f (open &file "w"))
[*](foreach str lst_str
[*] (princ "\n" f)
[*] (princ str f)
[*])
[*](close f)
[*]&file ;;返回
[*])
[*];;卸载DCL,删除临时DCL文件-----(一级)---------
[*](defun slunloaddcl (id /)
[*](unload_dialog id)
[*](vl-file-delete &file)
[*](gc)
[*])
[*]
[*];;取得临时文件名----------(一级)----------
[*];;exn 扩展名 ".dcl" ".dwg" nil 返回 路径
[*](defun getfilen (exn / &ss sys)
[*](setq sys (Is64Bit))
[*](if (wcmatch sys "x64*")
[*] (setq &ss "C:\\Program Files")
[*] (setq &ss "C:\\Program Files (X86)")
[*])
[*](if (= &ss nil)
[*] (setq &ss "c:\\windows")
[*])
[*](if (/= exn nil)
[*] (while (/= (findfile (setq &file (strcat &ss "\\$" (slsjqs) exn))) nil)
[*] (vl-file-delete &file)
[*] )
[*] (setq &file &ss)
[*])
[*]&file
[*])
[*];;判断系统WINDOWS 是否为64位-------(一级)-------------
[*](defun Is64Bit (/ WMI SVR SYS)
[*](setq WMI (vlax-create-object "WbemScripting.SWbemLocator"))
[*](setq SVR (VLAX-INVOKE WMI 'ConnectServer))
[*](vlax-for n (vlax-invoke SVR 'InstancesOf "Win32_ComputerSystem")
[*] (setq SYS (vlax-get n 'SystemType))
[*])
[*](vlax-release-object SVR)
[*](vlax-release-object WMI)
[*]sys;;返回系统位数字符串"x64-based PC"
[*])
[*]
[*];随机数产生器------------(一级)------------------
[*];;注意:此随机数,不受CAD版本限制,并浩辰,中望OK
[*](defun slrnd (n1 n2 / ra rb nn imin imax imin n3 rn)
[*](setq ra 66791 rb 17 nn 30) ;随机数函数用的质数
[*](setq imin (expt 2 31) imax (1- imin)) ;整数的最小数与最大数
[*](if (> n1 n2) (setq n3 n1 n1 n2 n2 n3)) ;若 n1 > n2 则互换
[*](setq rn (atoi (substr (rtos (getvar "cdate") 2 7) 14))) ;取种子数
[*](repeat nn
[*] (setq rn (+ (* rn ra) rb)) ;取随机数
[*] (if (minusp rn) (setq rn (- rn imin))) ;如果是负值则减去最小负数得到正数
[*])
[*](setq rn (rem rn imax)) ;取余数
[*](setq rn (/ rn imax 1.0)) ;转成小数
[*](setq rn (+ (fix (* rn (1+ (- n2 n1)))) n1)) ;产生指定范围内的随机数
[*]rn
[*])
[*];; 随机取表中数-------------(一级函数)----------------
[*];;返回表中字符串
[*](defun slsjqs (/ slsjs numsj)
[*](setq numsj (slrnd 0 44))
[*](setq slsjs (list "40" "71" "72" "70" "84" "73" "1" "30" "31" "60" "61" "3" "4" "190" "200" "210" "211" "220" "240" "6" "7" "150" "140" "241";;24个
[*] "20" "151" "160" "170" "112" "212" "221" "121" "122" "131" "133" "81" "11" "101" "111" "231" "91" "92" "94" "201" "230"));;21个
[*](setq numstr (nth numsj slsjs))
[*]numstr
[*])
本帖最后由 尘缘一生 于 2021-11-11 21:31 编辑
cghdy 发表于 2021-11-10 09:31
快捷键肯定比鼠标点来的快。你这快捷键工具是专给你的工具箱用的吗。里面换成你自己的开发与命令即可了。
我工具箱实际不愿意用的,最好的集成,就是TOOBAR, 这可不是好手段,只是无奈。
快捷键,不快,快捷键最少的是不是一个按键,那么按了哪?弹出界面,再点击,2个了吧?多了一个,这怎么能是最快的?当然,如果没有下级,哪能做到一键,能做到一键,就是根本。
请大家注意:燕秀工具的集成。
三领就是受启发,主要采用TOOLBAR ,永远是一点击即可。当然,小的工具,面板什么的,就无所谓了,自己方便即可。
本帖最后由 尘缘一生 于 2021-11-11 21:20 编辑
panliang9 发表于 2021-11-10 11:27
我有一个EXCEL文件,第一列,快捷键,第二列,命令解释,第三列,对应的程序。还勉强能对付。
对于EXCEL快捷键,最好别用奥,
因为:受制于WORD软件。
凡是涉及的,都不要采用那种源码,会造成你的插件,安装了,会失效,
因为,你怎么知道别人电脑安装没安装WORD?就是安装了,那个版本?
即便OK了,哪以后哪?各种软件升级了哪?
LISP的最好,别管古老不古老,CAD就是再发展,你觉得会丢弃LISP吗?现在CAD最新2022了吧,就是CAD2040了,会不会丢弃LISP? 没有必要,用一个使用前命令和更改后命令就搞定了。 本帖最后由 尘缘一生 于 2021-11-9 23:38 编辑
Myday 发表于 2021-11-9 15:23
没有必要,用一个使用前命令和更改后命令就搞定了。
嗯,目的是,加第三个解释,可以看的明白咋回事,快键键文件后面,无效,就是注解,以便可以文本自编。
关于快捷键,有人喜欢这个,总要,和画图方式有关,有些人画图,总是快捷键,左右开弓。我从来就不记忆啥命令,
但有些人确实记住很多快捷键,没这个,他就不适应,没有鼠标年代过来的人,鼠标有了,不用快捷键,他还不行的。
这是程序会自动生成的2个文件样例
一楼附件已更新
快捷键肯定比鼠标点来的快。你这快捷键工具是专给你的工具箱用的吗。 no function definition: DCL2LISP 我有一个EXCEL文件,第一列,快捷键,第二列,命令解释,第三列,对应的程序。还勉强能对付。 谢谢楼主分享好程序,现在,手势软件+鼠标按键自定义+编程鼠标,快捷键都很少用了 第一个文件,下载了,用论坛的修复软件修复后也打不开,第二个可以
页:
[1]
2