bustr 发表于 2022-7-6 08:06:17

删除重复属性T

我有数百个重复属性的图形。我不能浏览每一张图纸,给巴特曼打电话,然后一个接一个地删除它们。我需要一种自动化过程的方法。重复项总是出现在EATTE中,大部分时间出现在BATTMAN中。我需要一个lisp,将发现并删除红色显示的重复,而保留原稿原封不动。
 
有人能帮忙吗?
 
 

Lee Mac 发表于 2022-7-6 08:10:05

试试这个:
 
注:上述代码正在修改具有重复属性标记的所有块的块定义,因此不会检查属性值是否也重复。

bustr 发表于 2022-7-6 08:13:29

谢谢这似乎起到了作用,但属性仍会显示在增强的属性编辑器中,并且在同步时其值会丢失。你知道怎么处理吗?如果没有,那么无论如何谢谢你的Lisp程序?

Tharwat 发表于 2022-7-6 08:18:36

李,希望你不介意参与这个帖子。
 
对于lisp来说,这似乎是一个非常有趣的想法,你能上传一个属性块的副本吗?
 
谢谢

Tharwat 发表于 2022-7-6 08:22:02

希望这一个,你正在寻找。。。。
 

(defun c:Test (/ e i n sn ss strings)(vl-load-com)
;;; Tharwat 28. march. 2012 ;;;
(if (setq ss (ssget "_:L" '((0 . "INSERT") (66 . 1))))
   (repeat (setq i (sslength ss))
   (setq sn (ssname ss (setq i (1- i))))
   (setq n (entnext sn))
   (while (not (eq (cdr (assoc 0 (setq e (entget n)))) "SEQEND" )
               )
      (if (not (member (strcase (cdr (assoc 1 e))) strings))
          (setq strings (cons (strcase (cdr (assoc 1 e))) strings ))
          (vla-delete (vlax-ename->vla-object n))
          )
      (setq n (entnext n))
   )
   (setq strings nil)
   )
   (princ)
)
(princ)
)

Lee Mac 发表于 2022-7-6 08:25:00

 
在发布之前的简短测试中,一切似乎都正常工作-AttSync之后,应该从块的所有引用中删除属性。

bustr 发表于 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 发表于 2022-7-6 08:31:03

在Lee之前,我遇到了同样的问题,关于更改属性宽度的代码。但在某些情况下,属性会从其默认位置移动,更改块定义会将其还原到其原始位置。所以我最终使用了一个选择集。但不确定这里的情况是否相同
 
2

bustr 发表于 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

bustr 发表于 2022-7-6 08:36:25

Tharwat的lisp有效,但它删除了属性标记“BY-0”和“DATE-0”的值。这可能与对齐或宽度因子有关吗?
 
也失去了“04-18-90”值。
页: [1] 2
查看完整版本: 删除重复属性T