【已解决】反应器回调中如何调用"粘贴"命令
本帖最后由 13816600495 于 2024-5-17 16:44 编辑由于反应器回调中不能使用command-s,导致无法使用(command-s "_pasteclip")运行粘贴命令,请问有其他办法运行粘贴命令吗?
感谢highflybird的回复,解决方法在7#!
本帖最后由 highflybird 于 2024-5-17 16:28 编辑
13816600495 发表于 2024-5-17 16:13
(setq shell (vlax-create-object "WScript.Shell"))
(vlax-invoke-method shell 'SendKeys "^v") ; 发 ...
SendCommand 方式呢?
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq pt '(0 0))
(vla-sendcommand doc "_pasteclip !pt ")
或者(vla-sendcommand doc "_pasteorig ")
;;读写系统剪贴板 *
;;; *
;;;=================================================================*
;;;功能:读取系统剪贴板中字符串
(defun GET-CLIP-STRING (/ HTML RESULT)
(and (setq HTML (vlax-create-object "htmlfile"))
(setq RESULT (vlax-invoke
(vlax-get (vlax-get HTML 'PARENTWINDOW)
'CLIPBOARDDATA
)
'GETDATA
"Text"
)
)
(vlax-release-object HTML)
)
RESULT
)
;;;=================================================================*
;;;功能:向系统剪贴板写入文字 *
(defun SET-CLIP-STRING (STR / HTML RESULT)
(and (= (type STR) 'STR)
(setq HTML (vlax-create-object "htmlfile"))
(setq RESULT (vlax-invoke
(vlax-get (vlax-get HTML 'PARENTWINDOW)
'CLIPBOARDDATA
)
'SETDATA
"Text"
STR
)
)
(vlax-release-object HTML)
)
) 通过win32api自己读取剪贴板,可是不知道lisp怎么读,嘻嘻 采用发送字符到命令执行的方式,可以试试
菜卷鱼 发表于 2024-5-17 15:28
;;读写系统剪贴板 *
;;; ...
也许是我不太会用,您这个只能复制粘贴文字内容(字符串),并不能复制图元对象。 highflybird 发表于 2024-5-17 16:01
采用发送字符到命令执行的方式,可以试试
(setq shell (vlax-create-object "WScript.Shell"))
(vlax-invoke-method shell 'SendKeys "^v") ; 发送Ctrl+V键盘命令粘贴
(vlax-release-object shell)
尝试了以上发送字符方式,但还是无效。 highflybird 发表于 2024-5-17 16:22
SendCommand 方式呢?
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq pt '(0 0)) ...
可以了,非常感谢:handshake highflybird 发表于 2024-5-17 16:22
SendCommand 方式呢?
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq pt '(0 0)) ...
太给力了,CAD的复制粘贴,碰到个东西拷贝太卡了。 哆啦A梦_oELxg 发表于 2024-8-2 15:53
太给力了,CAD的复制粘贴,碰到个东西拷贝太卡了。
CAD复制粘贴逻辑有点问题,先复制东西再给坐标点,导致卡的要命。移动一下就卡住。
页:
[1]