乐筑天下

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

[编程交流] 删除重复属性T

[复制链接]

10

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-6 08:06:17 | 显示全部楼层 |阅读模式
我有数百个重复属性的图形。我不能浏览每一张图纸,给巴特曼打电话,然后一个接一个地删除它们。我需要一种自动化过程的方法。重复项总是出现在EATTE中,大部分时间出现在BATTMAN中。我需要一个lisp,将发现并删除红色显示的重复,而保留原稿原封不动。
 
有人能帮忙吗?
 
 
090624ksor6dv066zye17c.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:10:05 | 显示全部楼层
试试这个:
 
注:上述代码正在修改具有重复属性标记的所有块的块定义,因此不会检查属性值是否也重复。
回复

使用道具 举报

10

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-6 08:13:29 | 显示全部楼层
谢谢这似乎起到了作用,但属性仍会显示在增强的属性编辑器中,并且在同步时其值会丢失。你知道怎么处理吗?如果没有,那么无论如何谢谢你的Lisp程序?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:18:36 | 显示全部楼层
李,希望你不介意参与这个帖子。
 
对于lisp来说,这似乎是一个非常有趣的想法,你能上传一个属性块的副本吗?
 
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:22:02 | 显示全部楼层
希望这一个,你正在寻找。。。。
 
  1. (defun c:Test (/ e i n sn ss strings)(vl-load-com)
  2. ;;; Tharwat 28. march. 2012 ;;;
  3. (if (setq ss (ssget "_:L" '((0 . "INSERT") (66 . 1))))
  4.    (repeat (setq i (sslength ss))
  5.      (setq sn (ssname ss (setq i (1- i))))
  6.      (setq n (entnext sn))
  7.      (while (not (eq (cdr (assoc 0 (setq e (entget n)))) "SEQEND" )
  8.                  )
  9.         (if (not (member (strcase (cdr (assoc 1 e))) strings))
  10.           (setq strings (cons (strcase (cdr (assoc 1 e))) strings ))
  11.           (vla-delete (vlax-ename->vla-object n))
  12.           )
  13.         (setq n (entnext n))
  14.      )
  15.      (setq strings nil)
  16.    )
  17.    (princ)
  18. )
  19. (princ)
  20. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:25:00 | 显示全部楼层
 
在发布之前的简短测试中,一切似乎都正常工作-AttSync之后,应该从块的所有引用中删除属性。
回复

使用道具 举报

10

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-6 08:28:25 | 显示全部楼层
某些属性标记名称相同,但下面列出的名称不同。基本上,我只需要一种方法来将信息从属性的值从旧值传递到新值。如果只有几张图,我会用巴特曼来消除重复,并一次更改一个名称,应用和同步。这很管用,但我有数百张画,一次画一张并不实用
 
旧_边框(COUNT)新_边框(COUNT)
 
04-16-90(2)开始日期(1)
04-17-90(2)CHKD_日期(1)
04-18-90(2)APPD_日期(1)
F、 T.D.(2)由(1)绘制
C、 B.(2)由(1)检查
APP(2)APPD_BY(1)
DES-0(1)DESC-0(1)
DES-1(1)DESC-1(1)
DES-2(1)DESC-2(1)
DES-3(1)DESC-3(1)
DES-4(1)DESC-4(1)
 
 
 
以下标签在两个边框中相同,但在旧边框中重复。因此,当我将旧的重命名为新的并重新定义它时,我在EATTEDIT和图形中有多个实例。当我同步它们时,它们的值会丢失。
 
DWGNO(3)
标题1(2)
标题2(2)
边框。图纸
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:31:03 | 显示全部楼层
在Lee之前,我遇到了同样的问题,关于更改属性宽度的代码。但在某些情况下,属性会从其默认位置移动,更改块定义会将其还原到其原始位置。所以我最终使用了一个选择集。但不确定这里的情况是否相同
 
  1. 2
回复

使用道具 举报

10

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-6 08:32:36 | 显示全部楼层
谢谢Tharwat!我发现如果我运行RenAttrib。lsp并重命名和重新定义边界,然后同步工作。RenAttrib。lsp需要键入或编写脚本才能工作。正文如下。我附上了Lisp程序,如果有人想要一个副本供自己使用。
 
 
再次感谢。
 
 
收件人0
属性0
-插入
old\u border=C:\mike\autocad\RenAttrib\old\u border。图纸
25,0
1.
(RenAttrib“old_border”“04-16-90”“START_DATE”)
(RenAttrib“old_border”“04-17-90”“CHKD_DATE”)
(RenAttrib“old_border”“04-18-90”“APPD_DATE”)
(RenAttrib“old_border”“F.T.D.”绘制人)
(RenAttrib“old_border”“C.B.”检查人)
(RenAttrib“old_border”“APP”“APPD_BY”)
(RenAttrib“old_border”“DES-0”“DESC-0”)
(RenAttrib“old_border”“DES-1”“DESC-1”)
(RenAttrib“old_border”“DES-2”“DESC-2”)
(RenAttrib“old_border”“DES-3”“DESC-3”)
(RenAttrib“old_border”“DES-4”“DESC-4”)
-清除
A.
*
N
-清除
A.
*
N
-清除
A.
*
N
-清除
A.
*
N
-重命名
B
old_边框
新建_边框
-插入
new\u border=C:\mike\autocad\RenAttrib\new\u border。图纸
25,0
1.
attsync n new_边框
附件1
属性1
雷纳特里卜。lsp
回复

使用道具 举报

10

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-6 08:36:25 | 显示全部楼层
Tharwat的lisp有效,但它删除了属性标记“BY-0”和“DATE-0”的值。这可能与对齐或宽度因子有关吗?
 
也失去了“04-18-90”值。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:50 , Processed in 0.476869 second(s), 86 queries .

© 2020-2025 乐筑天下

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