乐筑天下

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

[编程交流] 图层名称+图层颜色

[复制链接]

18

主题

98

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2022-7-5 15:42:46 | 显示全部楼层 |阅读模式
又是我。我想知道根据颜色过滤所有对象并将其添加到层名称中有多难。
 
例子:
 
我有3行与XXX具有相同的图层名称,但不在bylayer上。一条是红色,另一条是蓝色,最后是绿色。
 
我希望它变成XXX-红色,XXX-蓝色,XXX-绿色。
 
有可能吗?它能在任何物体上工作吗?直线、圆、块、椭圆、矩形等。。。
 
如果没有手动选择,将非常有用。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 15:47:38 | 显示全部楼层
像这样的
 
  1. (defun C:test ( / del ct *error* SS LyrStates i enx col lyr nlyr tmp )
  2. (setq del "_") ; Delimeter
  3. (setq ct
  4.    '(
  5.      (1 . "Red") (2 . "Yellow") (3 . "Green") (4 . "Cyan")
  6.      (5 . "Blue") (6 . "Magenta") (7 . "Whilte")
  7.    )
  8. )
  9. (defun *error* ( m )
  10.    (and ThawUnlockLyrs LyrStates (ThawUnlockLyrs LyrStates))
  11.    (and m (princ m)) (princ)
  12. ); defun *error*
  13. (if (setq SS (ssget "X"))
  14.    (progn
  15.      (and ThawUnlockLyrs (setq LyrStates (ThawUnlockLyrs nil)))
  16.      (repeat (setq i (sslength SS))
  17.        (and
  18.          (setq col (assoc 62 (setq enx (entget (ssname SS (setq i (1- i)))))))
  19.          (vl-every '(lambda (x) (not (assoc x enx))) '(420 430))
  20.          (setq lyr (assoc 8 enx))
  21.          (setq nlyr (strcat (cdr lyr) del (cond ( (cdr (assoc (setq tmp (cdr col)) ct)) ) ( (itoa tmp) ) )))
  22.          (progn
  23.            (entmod (subst '(62 . 256) col (subst (cons 8 nlyr) lyr enx)))
  24.            (entmod (append (entget (tblobjname "LAYER" nlyr)) (list col)))
  25.          )
  26.        )
  27.      )
  28.    )
  29. )
  30. (*error* nil) (princ)
  31. )
  32. (vl-load-com) (princ)
  33. ; (setq LyrStates (ThawUnlockLyrs nil))
  34. ; (and LyrStates (ThawUnlockLyrs LyrStates))
  35. (defun ThawUnlockLyrs ( aL / d L st enx )
  36. (cond
  37.    (aL
  38.      (foreach x aL
  39.        (if (setq enx (entget (tblobjname "LAYER" (car x))))
  40.          (entmod (subst (cons 70 (cadr x)) (assoc 70 enx) enx))
  41.        ); if
  42.      ); foreach
  43.    )
  44.    (T
  45.      (while (setq d (tblnext "LAYER" (not d)))
  46.        (setq L (cons (apply 'append (mapcar '(lambda (x) (if (member (car x) '(2 70)) (list (cdr x)))) d)) L))
  47.        (setq st
  48.          (
  49.          (lambda (x)
  50.            (if (= 1 (logand 1 x)) (setq x (1+ x))) ; Frozen
  51.            (if (= 4 (logand 4 x)) (setq x (+ 4 x))) ; Locked
  52.            x
  53.          )
  54.          (cadar L)
  55.        )
  56.        ); setq st
  57.        (setq enx (entget (tblobjname "LAYER" (caar L))))
  58.        (entmod (subst (cons 70 st) (assoc 70 enx) enx))
  59.      ); while
  60.      L
  61.    ); T
  62. ); cond
  63. ); defun ThawUnlockLyrs
回复

使用道具 举报

37

主题

264

帖子

236

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-5 15:53:27 | 显示全部楼层
你好Noob先生
 
 
这个过滤工具将花费你5美元(没有****!)但这绝对值得投资!
在Autodesk AutoCAD app store中搜索表单SelectSame。
164246khq2t2xd26t2zdd6.jpg
164248luinozu2au7bnyb7.jpg
回复

使用道具 举报

18

主题

98

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2022-7-5 15:58:26 | 显示全部楼层
 
谢谢你。。工作完美。
是否可以对其进行一些修改,以在运行代码之前解锁层,并在一次时再次锁定?
回复

使用道具 举报

18

主题

98

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2022-7-5 16:00:59 | 显示全部楼层
 
你的插件看起来很有前途,但目前恐怕不适合我的需要。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:04:57 | 显示全部楼层
 
我修改了代码作为回复#2。
 
问题:
 
然而,使用普通路径,我组装的子功能(ThawUnlockLyrs)有点问题——不知道为什么。
例如,最初存储旧状态和解冻+解锁所有层效果良好:
  1. (setq LyrStates (ThawUnlockLyrs nil))

 
但当我尝试使用输出列表恢复状态时:
  1. (and LyrStates (ThawUnlockLyrs LyrStates))

在“Layers properties manager”中,一切看起来都很好,但是我之前冻结的图层上的图形对象消失了,就像它们的图层仍然冻结或关闭一样。
但是,在“图层属性管理器”中,一切似乎都很好。
在未保存的dwg上测试了这一点,然后我决定保存并重新打开它-所有对象都正常,现在可以看到了。
 
这就是为什么我保留了一个类似这样的替代VLA子功能,它工作得很好。
回复

使用道具 举报

18

主题

98

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2022-7-5 16:07:31 | 显示全部楼层
非常感谢。明天可以吗?因为我现在家里没有autocad。
我非常感谢你的努力!
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:14:27 | 显示全部楼层
@Grrr:你试过重新生成dwg吗?
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:17:44 | 显示全部楼层
 
 
有时会出现类似的问题,在自动替换标题栏后,我尝试手动修改的每个属性都会不可见,只有重新打开图形才有帮助。这并不是一直都在发生,所以优先级很低。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:19:50 | 显示全部楼层
 
是的,罗伊,我做了-也许这是AutoCAD中的一个错误。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-9 19:35 , Processed in 0.469409 second(s), 74 queries .

© 2020-2025 乐筑天下

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