明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2702|回复: 8

[讨论] 读取剪切板刷文字内容

[复制链接]
发表于 2022-8-16 09:07:42 | 显示全部楼层 |阅读模式
请问,CAD中,如何读取剪切板的文字内容,并把内容刷给已有的文字?
发表于 2022-8-16 19:19:57 | 显示全部楼层
没有昵称呀 发表于 2022-8-16 19:09
您好,这个链接的附件下载不下来,能否贴下码源呢?

;================对象到剪贴板------------OK--T
(defun c:t(/ dx dxl sne)
        (vl-load-com)
        (and
                (or
                        (setq dx (cadr (ssgetfirst)))
                        (setq dx (l-ssget1 "_:S:l"))
                )
                (sssetfirst nil nil)
                (setq
                        sne (l-dxft 0 (ssname dx 0))
                        dxl (vlax-ename->vla-object(ssname dx 0))
                )
                (cond
                        ((/= (sslength dx) 1)(alert "只能选择一个对象!"))
                        ((= "INSERT"                 sne)(l-jtbx (car(l-dxtk dxl nil nil))))
                        ((= "DIMENSION" sne)(l-jtbx (l-dxdim dx 0)))
                        (t (l-jtbx (vla-get-TextString dxl)))
                )
        )
        (princ)
)[/code]
;
;================剪贴板到对象------------OK--TY
(defun c:ty(/ dx dxl i sne wz)
        (vl-load-com)
        (and
                (or
                        (setq dx (cadr (ssgetfirst)))
                        (setq dx (l-ssget1 "_:S:l"))
                )
                (sssetfirst nil nil)
                (setq wz (l-jtbd) i -1)
                (if (vl-string-position 13 wz)
                        (setq wz (vl-list->string (reverse(cdr(member 13 (reverse(vl-string->list wz)))))))
                        (setq wz wz)
                )
                (repeat (sslength dx)
                        (setq i (1+ i) sne (l-dxft 0 (ssname dx i)) dxl (vlax-ename->vla-object(ssname dx i)))
                        (cond
                                ((= "INSERT"    sne) (l-dxtk dxl wz nil))
                                ((= "DIMENSION" sne) (vla-put-TextOverride dxl wz))
                                (t (vla-put-TextString dxl wz))
                        )
                )
        )
        (princ)
)[/code]
;
(defun l-ssget1(wz)
        (ssget wz '((-4 . "<OR")(0 . "TEXT,MTEXT,DIMENSION")(-4 . "<AND")(0 . "INSERT")(66 . 1)(-4 . "AND>")(-4 . "OR>")))
)[/code]
;
(defun l-dxft(bh sne)
        (cdr(assoc bh(entget sne)))
)[/code]
;
(defun l-jtbx(lt1 / t1 t2)
        (and
                (= (type lt1) 'str)
                (setq t1 (vlax-create-object "htmlfile"))
                (setq t2 (vlax-invoke
                                                         (vlax-get (vlax-get t1 'PARENTWINDOW)
                                                                 'CLIPBOARDDATA
                                                         )
                                                         'SETDATA
                                                         "Text"
                                                         lt1
                                                 )
                )
                (vlax-release-object t1)
        )
)[/code]
;
(defun l-jtbd(/ t1 t2)
        (and
                (setq t1 (vlax-create-object "htmlfile"))
                (setq t2 (vlax-invoke
                                                         (vlax-get (vlax-get t1 'PARENTWINDOW)
                                                                 'CLIPBOARDDATA
                                                         )
                                                         'GETDATA
                                                         "Text"
                                                 )
                )
                (vlax-release-object t1)
        )
        t2
)[/code]
;
(defun l-dxdim(dx i / wz)
        (setq wz (cdr(assoc -2(tblsearch "BlOCK"(l-dxft 2(ssname dx i))))))
        (while (/= (l-dxft 0 wz) "MTEXT") (setq wz (entnext wz)))
        (setq wz (l-dxft 1 wz))
        (if (member 59 (vl-string->list wz))
                (setq wz (vl-list->string (cdr(member 59 (vl-string->list wz)))))
        )
        wz
)[/code]
;
(defun l-dxtk(dxl lx fw / i lst wzb wzl)
        (setq lst (vlax-safearray->list (vlax-variant-value (vla-getattributes dxl))) i 0)
        (cond
                ((= lx nil)
                        (foreach x lst
                                (if (/= (vla-get-TagString x) "比例")
                                        (setq
                                                wzl (cons (vla-get-TextString x) wzl)
                                                wzb (cons (vla-get-TagString x)  wzb)
                                        )
                                )
                        )
                        (setq wzl (reverse wzl) wzb (reverse wzb))
                )
                ((listp lx)
                        (foreach x lst
                                (if (/= (vla-get-TagString x) "比例")
                                        (progn
                                                (vla-put-TextString x (nth i lx))
                                                (setq i (1+ i))
                                        )
                                )
                        )
                        (setq wzl t)
                )
                (t
                        (vla-put-TextString (car lst) lx)
                        (setq wzl t)
                )
        )
        (if fw (list wzb wzl) wzl)
)[/code]
;

评分

参与人数 1明经币 +1 收起 理由
bssurvey + 1 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-16 09:41:33 | 显示全部楼层
多搜一下论坛吧,多得很
发表于 2022-8-16 10:29:36 | 显示全部楼层
 楼主| 发表于 2022-8-16 19:09:13 | 显示全部楼层
sharetow 发表于 2022-8-16 10:29
http://bbs.mjtd.com/thread-183707-1-1.html

您好,这个链接的附件下载不下来,能否贴下码源呢?
 楼主| 发表于 2022-8-16 19:29:06 | 显示全部楼层
liufii 发表于 2022-8-16 19:19
;================对象到剪贴板------------OK--T
(defun c:t(/ dx dxl sne)
        (vl-load-com)

刚才测试了一下,功能强大,感谢分享
发表于 2022-8-16 19:56:37 | 显示全部楼层
liufii 发表于 2022-8-16 19:19
;================对象到剪贴板------------OK--T
(defun c:t(/ dx dxl sne)
        (vl-load-com)

这个好像对于属性块文字不适用,如果能支持就更完美了
发表于 2022-9-4 12:36:26 | 显示全部楼层
刚才测试了一下,功能强大,感谢分享
发表于 2023-3-27 21:50:45 | 显示全部楼层
要是支持属性块就完美了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-13 14:23 , Processed in 0.156509 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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