乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: itacad

[编程交流] 如何处理各种类型的

[复制链接]
rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:03:53 | 显示全部楼层
 
我整天都在用这个http://www.cadtutor.net/forum/showthread.php?93900-VT属性amp文本编辑器RLX
但希望我有时间重写。。。
 
像这里的许多帖子一样,画一幅你想要完成的东西会很好
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:10:20 | 显示全部楼层
这是一个提示更改属性标记的版本。。。
  1. (defun c:foo (/ _puttext _getclipboardtext atts opt s sel tags txt x)
  2. ;; RJP - 04.12.2018
  3. ;; Copies clipboard text to selected objects
  4. (defun _puttext (o s)
  5.    (cond ((vlax-property-available-p o 'textstring) (vla-put-textstring o s))
  6.   ((vlax-property-available-p o 'textoverride) (vla-put-textoverride o s))
  7.   ((vlax-property-available-p o 'hasattributes)
  8.    (if (= 1 (length (setq atts (vlax-invoke o 'getattributes))))
  9.      (vla-put-textstring (car atts) s)
  10.      (progn (setq tags (mapcar '(lambda (x) (vla-get-tagstring x)) atts))
  11.             (setq opt (apply 'strcat (mapcar '(lambda (x) (strcat x "/")) tags)))
  12.             (initget 0 (apply 'strcat (mapcar '(lambda (x) (strcat x " ")) tags)))
  13.             (setq sel (cond ((getkword (strcat "\n[" opt "] <" (car tags) ">: ")))
  14.                             ((car tags))
  15.                       )
  16.             )
  17.             (foreach a atts
  18.               (if (= sel (vla-get-tagstring a))
  19.                 (vla-put-textstring a s)
  20.               )
  21.             )
  22.      )
  23.    )
  24.   )
  25.    )
  26. )
  27. ;; http://www.theswamp.org/index.php?topic=35577.msg408049#msg408049
  28. (defun _getclipboardtext (/ htmlfile result)
  29.    (setq
  30.      result (vlax-invoke
  31.        (vlax-get (vlax-get (setq htmlfile (vlax-create-object "htmlfile")) 'parentwindow)
  32.                  'clipboarddata
  33.        )
  34.        'getdata
  35.        "Text"
  36.      )
  37.    )
  38.    (vlax-release-object htmlfile)
  39.    result
  40. )
  41. (cond
  42.    ((null (setq txt (_getclipboardtext))) (print "Nothing in clipboard"))
  43.    ((null (setq s (ssget ":L" '((0 . "insert,*text,multileader,dimension"))))) (print "Bye.."))
  44.    ((foreach a        (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
  45.       (_puttext a txt)
  46.     )
  47.    )
  48. )
  49. (princ)
  50. )
  51. (vl-load-com)
回复

使用道具 举报

34

主题

110

帖子

86

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 16:15:32 | 显示全部楼层
一如既往,我感谢你的工作。。。我尝试了两种解决方案。。。看起来更像我需要的是第二个,但我不想从键盘上指定属性,我想通过“单击”属性来确定粘贴到该属性上(并且只在该属性上)。。。有可能吗?
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:20:47 | 显示全部楼层
试试看。。。
  1. (defun c:foo (/ _puttext _getclipboardtext atts opt s sel tags txt x)
  2. ;; RJP - 04.12.2018
  3. ;; Copies clipboard text to selected objects
  4. (defun _puttext (o s / e)
  5.    (cond ((vlax-property-available-p o 'textstring) (vla-put-textstring o s))
  6.   ((vlax-property-available-p o 'textoverride) (vla-put-textoverride o s))
  7.   ((vlax-property-available-p o 'hasattributes)
  8.    (if (= 1 (length (setq atts (vlax-invoke o 'getattributes))))
  9.      (vla-put-textstring (car atts) s)
  10.      (and (setq e (car (nentsel "\nPick your attribute: ")))
  11.           (= "ATTRIB" (cdr (assoc 0 (entget e))))
  12.           (vla-put-textstring (vlax-ename->vla-object e) s)
  13.      )
  14.    )
  15.   )
  16.    )
  17. )
  18. ;; http://www.theswamp.org/index.php?topic=35577.msg408049#msg408049
  19. (defun _getclipboardtext (/ htmlfile result)
  20.    (setq
  21.      result (vlax-invoke
  22.        (vlax-get (vlax-get (setq htmlfile (vlax-create-object "htmlfile")) 'parentwindow)
  23.                  'clipboarddata
  24.        )
  25.        'getdata
  26.        "Text"
  27.      )
  28.    )
  29.    (vlax-release-object htmlfile)
  30.    result
  31. )
  32. (cond
  33.    ((null (setq txt (_getclipboardtext))) (print "Nothing in clipboard"))
  34.    ((null (setq s (ssget ":L" '((0 . "insert,*text,multileader,dimension"))))) (print "Bye.."))
  35.    ((foreach a        (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
  36.       (_puttext a txt)
  37.     )
  38.    )
  39. )
  40. (princ)
  41. )
  42. (vl-load-com)
回复

使用道具 举报

34

主题

110

帖子

86

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 16:23:20 | 显示全部楼层
哦,这是(几乎)我需要的!!!我的最后一个问题是:是否可以通过单击来选择块和属性?
在块的情况下,当我使用命令时,我将直接在右侧属性上执行。。。
我为不断的要求道歉,我可能不得不更好地解释自己
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 13:06 , Processed in 1.168283 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表