明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 991|回复: 9

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

[复制链接]
发表于 2024-5-17 14:15:47 | 显示全部楼层 |阅读模式
本帖最后由 13816600495 于 2024-5-17 16:44 编辑

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

感谢highflybird的回复,解决方法在7#!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-5-17 16:22:01 | 显示全部楼层
本帖最后由 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 ")

评分

参与人数 1明经币 +1 收起 理由
13816600495 + 1 很给力!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

发表于 2024-5-17 15:28:37 | 显示全部楼层
;;  读写系统剪贴板                                                 *
;;;                                                                 *
;;;=================================================================*
;;;功能:读取系统剪贴板中字符串
(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)
    )
)
回复 支持 2 反对 0

使用道具 举报

发表于 2024-5-17 14:39:55 | 显示全部楼层
通过win32api自己读取剪贴板,可是不知道lisp怎么读,嘻嘻
发表于 2024-5-17 16:01:02 | 显示全部楼层
采用发送字符到命令执行的方式,可以试试
 楼主| 发表于 2024-5-17 16:12:28 | 显示全部楼层
菜卷鱼 发表于 2024-5-17 15:28
;;  读写系统剪贴板                                                 *
;;;                            ...

也许是我不太会用,您这个只能复制粘贴文字内容(字符串),并不能复制图元对象。
 楼主| 发表于 2024-5-17 16:13:49 | 显示全部楼层
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)
尝试了以上发送字符方式,但还是无效。
 楼主| 发表于 2024-5-17 16:42:07 | 显示全部楼层
highflybird 发表于 2024-5-17 16:22
SendCommand 方式呢?
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq pt '(0 0)) ...

可以了,非常感谢
发表于 2024-8-2 15:53:47 | 显示全部楼层
highflybird 发表于 2024-5-17 16:22
SendCommand 方式呢?
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq pt '(0 0)) ...

太给力了,CAD的复制粘贴,碰到个东西拷贝太卡了。
发表于 2024-8-2 15:56:32 | 显示全部楼层
哆啦A梦_oELxg 发表于 2024-8-2 15:53
太给力了,CAD的复制粘贴,碰到个东西拷贝太卡了。

CAD复制粘贴逻辑有点问题,先复制东西再给坐标点,导致卡的要命。移动一下就卡住。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-14 06:21 , Processed in 0.171169 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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