明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 821|回复: 7

[提问] 各位大神求帮忙修改下这个程序,第一个复制的程序不用右键确认,我想第二个程序修改为

[复制链接]
发表于 2023-10-13 14:48 | 显示全部楼层 |阅读模式
各位大神求帮忙修改下这个程序,第一个复制的程序不用右键确认,我想第二个程序修改为选择两个文字连接后,不用右键确认,直接到粘贴板


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  (list " 粘贴板T5" "N2")各种文字复制
(defun c:N()
  (vl-load-com)
  (setq ent (entget (car (entsel "\n选择复制文本:"))))
  (setq tx (cdr (assoc 1 ent)))
  (vldos-write-clip tx)
)

(defun vldos-write-clip        (text / htmlfile result)
  (setq        result
         (vlax-invoke
           (vlax-get
             (vlax-get
               (setq htmlfile (vlax-create-object "htmlfile"))
               'ParentWindow
             )
             'ClipBoardData
           )
           'SetData
           "Text"
           text
         )
  )
  (vlax-release-object htmlfile)
  text
)




第二个程序

;;;功能:向系统剪贴板写入文字
;;;引用地址http://bbs.mjtd.com/forum.php?mo ... hlight=%BC%F4%C7%D0
(vl-load-com)
(defun ZML-CLIP-SETSTRING (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))
)
(defun c:tt ( / str str1)
(if        (setq str(ssget ":E:S" '((0 . "TEXT"))))
        (progn
                (setq str(cdr(assoc 1(entget(ssname str 0)))))
                (while(setq str1(ssget ":E:S" '((0 . "TEXT"))))
                        (setq str(strcat str "-"(cdr(assoc 1(entget(ssname str1 0))))))                       
                )
                (ZML-CLIP-SETSTRING  str)
        )
))
发表于 2023-10-15 20:19 | 显示全部楼层
(defun c:N(/ vldos-write-clip xz tx)
  (vl-load-com)
        (defun vldos-write-clip        (text / htmlfile result)
  (setq        result
         (vlax-invoke
           (vlax-get
             (vlax-get
               (setq htmlfile (vlax-create-object "htmlfile"))
               'ParentWindow
             )
             'ClipBoardData
           )
           'SetData
           "Text"
           text
         )
  )
  (vlax-release-object htmlfile)
  text
)
       
  (defun xz( i / ent tx)
                (while (= nil tx)
                        (setq ent (entget (car (entsel (strcat "\n选择第<"i">复制文本:")))))
  (if(= nil(setq tx (cdr (assoc 1 ent))))
                        (princ"\n 你选择的不是文字,重新选取!"))
                )
                tx
        )
       
        (setq tx (strcat(xz "1")(xz "2")))
  (vldos-write-clip tx)
)
 楼主| 发表于 2023-10-15 20:57 | 显示全部楼层
咏郡 发表于 2023-10-15 20:19
(defun c:N(/ vldos-write-clip xz tx)
  (vl-load-com)
        (defun vldos-write-clip        (text / htmlf ...

(defun c:N(/ vldos-write-clip xz tx)
  (vl-load-com)
        (defun vldos-write-clip        (text / htmlfile result)
  (setq        result
         (vlax-invoke
           (vlax-get
             (vlax-get
               (setq htmlfile (vlax-create-object "htmlfile"))
               'ParentWindow
             )
             'ClipBoardData
           )
           'SetData
           "Text"
           text
         )
  )
  (vlax-release-object htmlfile)
  text
)
       
  (defun xz( i / ent tx)
                (while (= nil tx)
                        (setq ent (entget (car (entsel (strcat "\n选择第<"i">复制文本:")))))
  (if(= nil(setq tx (cdr (assoc 1 ent))))
                        (princ"\n 你选择的不是文字,重新选取!"))
                )
                tx
        )
       
        (setq tx (strcat(xz "1")"*"(xz "2")))
  (vldos-write-clip tx)
)
发表于 2023-10-15 22:03 | 显示全部楼层
如果只需要选择两组文字,只需要把while改成if就可以了
 楼主| 发表于 2023-10-16 08:28 | 显示全部楼层
ljpnb 发表于 2023-10-15 22:03
如果只需要选择两组文字,只需要把while改成if就可以了

怎么改大神...
发表于 2023-10-18 14:12 | 显示全部楼层
之所以要右键确认,是因为whlie语句,你把while语句去掉就行了。
  1. (vl-load-com)
  2. (defun ZML-CLIP-SETSTRING (STR / )
  3.   (and (= (type STR) 'STR)
  4.     (setq HTML (vlax-create-object "htmlfile"))
  5.     (setq RESULT (vlax-invoke   (vlax-get  (vlax-get HTML 'PARENTWINDOW)   'CLIPBOARDDATA )  'SETDATA   "Text"   STR ))
  6.     (vlax-release-object HTML))
  7. )
  8. (defun c:tt ( / )
  9. (if        (setq str(ssget ":E:S" '((0 . "TEXT"))))
  10.         (progn
  11.                 (setq str(cdr(assoc 1(entget(ssname str 0)))))
  12.                                               (setq str1(ssget ":E:S" '((0 . "TEXT"))))
  13.                                               (setq str(strcat str "-"(cdr(assoc 1(entget(ssname str1 0))))))
  14.                 (ZML-CLIP-SETSTRING  str)
  15.         )
  16. ))
 楼主| 发表于 2023-10-18 20:36 | 显示全部楼层
hubeiwdlue 发表于 2023-10-18 14:12
之所以要右键确认,是因为whlie语句,你把while语句去掉就行了。

谢谢大神,你是做半导体的吗
发表于 2023-10-18 21:09 | 显示全部楼层
本帖最后由 hubeiwdlue 于 2023-10-18 22:11 编辑
664571221 发表于 2023-10-18 20:36
谢谢大神,你是做半导体的吗

不是啊。头像是随便找的,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-25 13:49 , Processed in 0.157058 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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