乐筑天下

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

[编程交流] 复制多行属性数据

[复制链接]

73

主题

261

帖子

195

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
375
发表于 2022-7-6 08:52:40 | 显示全部楼层 |阅读模式
你好
我正在寻找一个lisp,它从块中复制TAG1中的多行属性数据,并将其粘贴到命令行/promt。
 
谢谢
 
庄信万丰
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:57:55 | 显示全部楼层
以下是一个函数,用于从多行文字属性、属性、多行文字或文字实体返回textstring:
 
  1. (defun _gettextstring ( ename )
  2.    (apply 'strcat
  3.        (apply 'append
  4.            (mapcar
  5.                (function
  6.                    (lambda ( pair )
  7.                        (if (member (car pair) '(1 3))
  8.                            (list (cdr pair))
  9.                        )
  10.                    )
  11.                )
  12.                (entget ename)
  13.            )
  14.        )
  15.    )
  16. )

 
使用“command”功能将文本提交到命令行。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:59:20 | 显示全部楼层
大概
 
  1. (defun c:test (/ acdoc ss sset nme)
  2. (vl-load-com)
  3. (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
  4. (if (setq ss (ssget "+.:S" '((0 . "INSERT")(66 . 1))))
  5.    (progn
  6.      (setq sset (ssname ss 0))
  7.      (setq nme (cdr (assoc 2 (entget sset))))
  8.      (vlax-for x (vla-item (vla-get-blocks acdoc) nme)
  9.        (if (eq (vla-get-objectname x) "AcDbAttributeDefinition")
  10.          (princ (vla-get-tagstring x))
  11.        )
  12.      )
  13.    )
  14.    (princ)
  15. )
  16. (princ)
  17. )
Tharwat
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:05:09 | 显示全部楼层
多个标签还有一个。。。。。
 
  1. (defun c:test (/ acdoc ss strngs)
  2. (vl-load-com)
  3. (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
  4. (if (setq ss (ssget "+.:S" '((0 . "INSERT") (66 . 1))))
  5.    (vlax-for x (vla-item (vla-get-blocks acdoc)
  6.                          (cdr (assoc 2 (entget (ssname ss 0))))
  7.                )
  8.      (if (eq (vla-get-objectname x) "AcDbAttributeDefinition")
  9.        (setq strngs (cons (vla-get-tagstring x) strngs))
  10.      )
  11.    )
  12.    (princ)
  13. )
  14. (print strngs)
  15. (princ)
  16. )

 
塔瓦特
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:07:49 | 显示全部楼层
你为什么要钻研区块定义Tharwat?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:11:38 | 显示全部楼层
 
嗨,李。
 
我正在挖掘区块,因为OP提到(区块中的TAG1)。我把他们搞错了还是没抓住重点?
回复

使用道具 举报

73

主题

261

帖子

195

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
375
发表于 2022-7-6 09:13:32 | 显示全部楼层
对不起,这不是我想要的。
我想用te标签“TAG1”将脚本(txt)存储在属性中的块中。运行lisp,选择该块并运行脚本。属性“TAG1”不可见。
因此,运行lisp,选择包含脚本的块,然后运行该脚本,将多行属性“TAG1”中的txt数据粘贴到命令promt。
 
庄信万丰
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:16:58 | 显示全部楼层
这是否意味着您想用选择属性块后已有的文本替换TAG1?
回复

使用道具 举报

73

主题

261

帖子

195

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
375
发表于 2022-7-6 09:20:49 | 显示全部楼层
TAG1是块中的属性。好的,让我们把属性命名为SCR。在图形中插入块(块是正方形)后,用文本(=脚本)填充SCR属性,并填充该块的其他属性,如该块的描述。我想创建一种可以运行脚本的按钮,将其放置在该块的SCR属性中。SCR属性不可见。
 
庄信万丰
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:21:37 | 显示全部楼层
你可以上传一个dwg显示之前和之后的过程?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:06 , Processed in 0.444865 second(s), 83 queries .

© 2020-2025 乐筑天下

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