乐筑天下

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

[编程交流] 更改属性层和颜色

[复制链接]

23

主题

75

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
143
发表于 2022-10-14 21:25:16 | 显示全部楼层 |阅读模式
正在更新近 400 个区块。我必须更改图层并覆盖一个属性的颜色。我对第一个块的测试失败了。已经有一段时间了,我不记得我错过了什么。
我尝试更改第一个:
  1. (progn
  2. (setq e (car (entsel ))
  3. d (entget e)
  4. n_e (entnext e)
  5. n_d (entget n_e)))
  6. un_d (subst (cons 8 "SYM") (assoc 8 n_d) n_d)
  7. un_d (append un_d (list un_d (cons 62 141)))
  8. )
  9. (entmod un_d)
  10. (entupd (cdr (assoc 330 un_d)))
  11. )
我也试过:
  1. (command "_.attsync" "_select" n_e "" )"_Yes")
注意:当我逐步检查块实体时,我将测试以确保我有正确的块:
  1. (and
  2. (= (cdr (assoc 0 n_d)) "ATTRIB")
  3. (= (cdr (assoc 2 n_d)) "SIZE")
  4. (/= (cdr (assoc 8 n_d)) "SYM"
  5. )




回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-10-14 21:39:05 | 显示全部楼层
如果您只想使用名称更改 1 个块,无论块在哪里,都可以使用块编辑,BEDIT 这将全部更新。
我会使用 VL 代码,使用 get & put 来更改内容会更容易一些。
您应该使用此块发布 dwg。
回复

使用道具 举报

23

主题

75

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
143
发表于 2022-10-14 21:42:37 | 显示全部楼层
通过下面的代码,我越来越接近我需要的东西。如果我双击该块,则属性层已更新。但是当我检查块定义时,它保持不变。
注释掉的 attsyncs 并没有解决问题。
  1. (progn
  2. (defun get_ents ( ss / ents ss1 l cnt)
  3. (setq ents (list )
  4.   ss1 ss
  5.   l (sslength ss1)
  6.   cnt  0
  7. )
  8. (while (< cnt l)
  9.   (setq ent (ssname ss1 cnt)
  10.    ents (append ents (list ent))
  11.     cnt (1+ cnt)
  12.   )
  13. )
  14. ents
  15. )
  16. (setq ss01 (ssget "x" (list (cons 0 "INSERT")))
  17. ents (get_ents ss01)
  18. )
  19. (foreach line ents
  20. (setq head_e line
  21.   head_d (entget head_e)
  22.   name (cdr (assoc 2 head_d))
  23. )
  24. (if (cdr (assoc 66 head_d))
  25.   (progn
  26.    (setq e (entnext head_e)
  27.     d (entget e)
  28.    )
  29.    (if (and
  30.      (= (cdr (assoc 0 d)) "ATTRIB")
  31.      (= (cdr (assoc 2 d)) "SIZE")
  32.      (/= (cdr (assoc 8 d)) "SYM")
  33.     )
  34.     (progn
  35.      (setq d (subst (cons 8 "SYM")(assoc 8 d) d))
  36.      (entmod d)
  37.      (entupd (cdr (assoc 330 d)))
  38.      (entupd (cdr (last (tblsearch "block" name))))
  39.      ;(command "_attsync" "S" (cdr (last (tblsearch "block" name))) "Y")
  40.      ;(command "_attsync" "S" head_e "Y")
  41.     )
  42.    )
  43.   )
  44. )
  45. )
  46. )


回复

使用道具 举报

23

主题

75

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
143
发表于 2022-10-14 21:54:24 | 显示全部楼层
我和VL没有很多前任。我有大约 400 个不同的块,每个块都需要进行相同的更新,所以我不确定 bedit 是否可以在这里工作。
但我会调查一下。谢谢你。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-10-14 22:00:16 | 显示全部楼层
尝试以下操作,代码的后半部分可以通过调用 ATTSYNC 替换,但请记住,这样的调用会导致所有属性的属性恢复为块定义中定义的属性,这可能是不可取的。
[color=rgb( var(--theme-text_light) )]






  1. (defun c:fixatts ( / d e i s x )
  2.    (while (setq d (tblnext "block" (null d)))
  3.        (if (= 2 (logand 2 (cdr (assoc 70 d))))
  4.            (progn
  5.                (setq e (tblobjname "block" (cdr (assoc 2 d))))
  6.                (while (setq e (entnext e))
  7.                    (if (and (setq x (entget e))
  8.                             (= "ATTDEF" (cdr (assoc 0 x)))
  9.                             (= "SIZE"   (cdr (assoc 2 x)))
  10.                        )
  11.                        (entmod (cons (cons -1 e) '((8 . "SYM") (62 . 141))))
  12.                    )
  13.                )
  14.            )
  15.        )
  16.    )
  17.    (if (setq s (ssget "_X" '((0 . "INSERT") (66 . 1))))
  18.        (repeat (setq i (sslength s))
  19.            (setq e (entnext (ssname s (setq i (1- i))))
  20.                  x (entget e)
  21.            )
  22.            (while (= "ATTRIB" (cdr (assoc 0 x)))
  23.                (if (= "SIZE"  (cdr (assoc 2 x)))
  24.                    (entmod (cons (cons -1 e) '((8 . "SYM") (62 . 141))))
  25.                )
  26.                (setq e (entnext e)
  27.                      x (entget  e)
  28.                )
  29.            )
  30.        )
  31.    )
  32.    (princ)
  33. )



回复

使用道具 举报

23

主题

75

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
143
发表于 2022-10-14 22:15:52 | 显示全部楼层
这正是我需要的一切!
谢谢楼上的,你真棒!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-10-14 22:16:56 | 显示全部楼层
很高兴听到 - 谢谢你的赞美!
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-10-14 22:26:45 | 显示全部楼层
非常感谢那个代码,你让我免于痛苦。

回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-3 17:53 , Processed in 0.739012 second(s), 68 queries .

© 2020-2025 乐筑天下

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