明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: guangdonglbq

[源码] cad输入法自动切换程序[热键版修改]

    [复制链接]
发表于 2021-8-10 07:19:14 | 显示全部楼层
请问一下,我在  (setq listEditCommands (list "mtedit" "ddedit" "textedit" "text" "mtext" "leader" "mleader" "tobjedit" "saveas" "tsaveas" "eattedit"))这里添加别的命令,但是新添加的命令不会自动切换,请问是哪里的问题?
发表于 2021-11-13 17:25:32 | 显示全部楼层
这个程序很好用
 楼主| 发表于 2021-11-16 06:49:14 | 显示全部楼层
lxdz443 发表于 2021-8-10 07:19
请问一下,我在  (setq listEditCommands (list "mtedit" "ddedit" "textedit" "text" "mtext" "leader" "m ...

什么都没有,无法判断。发你的代码上来。
发表于 2021-11-16 18:47:54 | 显示全部楼层
;;cad输入法自动切换程序,打开dwg文件时,运行一次即可
;;请在操作系统中设置输入法热键:ctrl+shift+0为英文,ctrl+shift+1为中文
;;修改日期:2021年06月06日
(vl-load-reactors)
(setq Scriptshell (vlax-create-object "WScript.Shell"))

(defun StartEnglishInputMethod(reactor_object listCommand )
        (StartInputMethod (car listCommand) "+^0" )
)

(defun StartChineseInputMethod(reactor_object listCommand )
        (StartInputMethod (car listCommand)  "+^1")
)

(defun StartInputMethod(strCommand strInputMethodKey / listEditCommands)
        (setq strCommand (strcase strCommand T) )
        (setq strCommand (vl-string-subst "" "-" strCommand))
        (setq strCommand (vl-string-subst "" "_" strCommand))
        (setq listEditCommands (list "mtedit" "ddedit" "textedit" "text" "mtext" "leader" "mleader" "tobjedit" "saveas" "tsaveas" "eattedit"))
  (if (member strCommand listEditCommands)
                (vlax-invoke Scriptshell "SendKeys" strInputMethodKey)
  )  
)
;鼠标双击
(defun onMouseDoubleClick (a b / en end entype )
  (if (setq en (nentselp (trans (car b) 0 1)))
    (progn
      (setq end (entget (car en)))
      (setq entype (cdr (assoc 0 end)))
      (if (wcmatch entype "*TEXT")
       (vlax-invoke Scriptshell "SendKeys"  "+^1")
      )
    )
  )
  (princ)
)

(defun startIMEScript(a b)
(vlr-command-reactor nil
        '((:vlr-commandWillStart . StartChineseInputMethod) ;;启动CAD命令时
                 (:vlr-commandEnded . StartEnglishInputMethod) ;;完成CAD命令时
                 (:vlr-commandCancelled . StartEnglishInputMethod) ;;取消CAD命令时
                 (:vlr-commandFailed . StartEnglishInputMethod) ;;无法完成CAD命令时
         )                 
)
)

(defun EndIMEScript(a b )
        (vlr-remove-all :vlr-command-reactor)
)

(startIMEScript nil nil)

(vlr-mouse-reactor nil '((:vlr-beginDoubleClick . onMouseDoubleClick)))       ;鼠标反应器-双击事件
(vlr-lisp-reactor nil
        '((:vlr-lispWillStart . EndIMEScript) ;;启动lisp时
                 (:vlr-lispEnded . startIMEScript) ;;完成lisp时
                 (:vlr-lispCancelled . startIMEScript) ;;取消lisp时
         )                 
)

(vlax-invoke Scriptshell "SendKeys" "+^0") ;加载时,启用英文输入法
(princ)
 楼主| 发表于 2021-11-17 15:13:48 | 显示全部楼层
lxdz443 发表于 2021-11-16 18:47
;;cad输入法自动切换程序,打开dwg文件时,运行一次即可
;;请在操作系统中设置输入法热键:ctrl+shift+0为 ...

看不起来你改了什么
发表于 2021-11-17 15:17:05 | 显示全部楼层
好东西,谢谢分享
发表于 2021-11-22 13:55:11 | 显示全部楼层
程序写的很好,要是在属性块中编辑文字时能自动切换到中文就更好了
发表于 2021-11-23 10:19:51 | 显示全部楼层
;请在操作系统中设置输入法热键:ctrl+shift+1为英文,ctrl+shift+2为中文

居然找不到设置的地方

回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-5 16:58:27 | 显示全部楼层
我也是找不到切换为英文的快捷键设置在哪里。。。。“ctrl+shift+1为英文”
 楼主| 发表于 2022-5-7 10:21:04 | 显示全部楼层
大尾巴狼 发表于 2021-11-23 10:19
;请在操作系统中设置输入法热键:ctrl+shift+1为英文,ctrl+shift+2为中文

居然找不到设置的地方


搜索
复制

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-25 18:49 , Processed in 0.198245 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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