13816600495 发表于 2024-5-17 14:15

【已解决】反应器回调中如何调用"粘贴"命令

本帖最后由 13816600495 于 2024-5-17 16:44 编辑

由于反应器回调中不能使用command-s,导致无法使用(command-s "_pasteclip")运行粘贴命令,请问有其他办法运行粘贴命令吗?

感谢highflybird的回复,解决方法在7#!

highflybird 发表于 2024-5-17 16:22

本帖最后由 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 ")

菜卷鱼 发表于 2024-5-17 15:28

;;读写系统剪贴板                                                 *
;;;                                                               *
;;;=================================================================*
;;;功能:读取系统剪贴板中字符串
(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)
    )
)

你有种再说一遍 发表于 2024-5-17 14:39

通过win32api自己读取剪贴板,可是不知道lisp怎么读,嘻嘻

highflybird 发表于 2024-5-17 16:01

采用发送字符到命令执行的方式,可以试试

13816600495 发表于 2024-5-17 16:12

菜卷鱼 发表于 2024-5-17 15:28
;;读写系统剪贴板                                                 *
;;;                            ...

也许是我不太会用,您这个只能复制粘贴文字内容(字符串),并不能复制图元对象。

13816600495 发表于 2024-5-17 16:13

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)
尝试了以上发送字符方式,但还是无效。

13816600495 发表于 2024-5-17 16:42

highflybird 发表于 2024-5-17 16:22
SendCommand 方式呢?
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq pt '(0 0)) ...

可以了,非常感谢:handshake
页: [1]
查看完整版本: 【已解决】反应器回调中如何调用"粘贴"命令