乐筑天下

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

[编程交流] 基于颜色生成层

[复制链接]

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:49:36 | 显示全部楼层 |阅读模式
嘿,伙计们,我有一个文件,有24个层,每个层都有12种不同颜色的对象,我需要根据对象的颜色将它们分为不同的层。e、 g.一层中所有颜色为“黄色”的对象,另一层中所有颜色为“洋红”的对象等。这可以用lisp完成吗?有人能帮我写lisp的吗
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:54:31 | 显示全部楼层
这应该让你开始:
 
  1. ((lambda (i / ss e c)
  2. (setq ss (ssget))
  3. (while (setq e (ssname ss (setq i (1+ i))))
  4.    (cond
  5.      ((= 1 (setq c (cdr (assoc 62 (entget e)))))
  6.        ;; <- Code for red objects
  7.        )
  8.      ((= 2 c)
  9.        ;; <- Code for yellow objects
  10.        )
  11.      ((= 3 c)
  12.        ;; <- Code for green objects
  13.        )
  14.      ((= 4 c)
  15.        ;; <- Code for cyan objects
  16.        )
  17.      ;; <- Additional colors here
  18.    ))
  19. (princ))
  20. -1)

 
塔瓦特
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:59:54 | 显示全部楼层
这将所有具有非“按层”颜色的实体分布到名为“颜色N”的层。具有“按层”颜色或位于锁定或冻结层上的实体将被传递。
 
  1. (defun c:test (/ ss)
  2. (if (setq ss (ssget "_:L" ))
  3. (
  4. (lambda (i / ss1 e col)
  5.   (while
  6.     (setq ss1 (ssname ss (setq i (1+ i))))
  7.       (setq e (entget ss1))
  8.         (setq col (cdr (assoc 62 e)))
  9.         (cond ((eq 1 col)
  10.            (entupd (cdr (assoc -1 (entmod (subst (cons 8 "Layer1")(assoc 8 e) e))))))
  11.           ((eq 2 col)
  12.                (entupd (cdr (assoc -1 (entmod (subst (cons 8 "Layer2")(assoc 8 e) e))))))
  13.           ((eq 3 col)
  14.                   (entupd (cdr (assoc -1 (entmod (subst (cons 8 "Layer3")(assoc 8 e) e))))))
  15.            )
  16.          )
  17.        )
  18.     -1
  19.    )
  20.   (princ)
  21.    )
  22. (princ)
  23. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:03:02 | 显示全部楼层
或者一些相当简单的方法也应该奏效:
 
  1. (defun c:colay(/ aSet lCol cLay)
  2. (vl-load-com)
  3. (if(setq aSet(ssget "_X"))
  4.    (progn
  5.      (setq lCol(vla-get-Layers
  6.           (vla-get-ActiveDocument
  7.             (vlax-get-acad-object))))
  8.    (foreach e(vl-remove-if 'listp(mapcar 'cadr(ssnamex aSet)))
  9.      (if(setq cCol(cdr(assoc 62(entget e))))
  10.    (setq cLay(strcat "Color " (itoa cCol))
  11.          cFlg T)
  12.    (setq cFlg nil)
  13. ); end if
  14.     (if cFlg
  15.       (progn
  16.        (if(vl-catch-all-error-p
  17.     (vl-catch-all-apply
  18.      'vla-Item (list lCol cLay)))
  19.   (vla-Add lCol cLay)
  20. ); and if
  21. (vl-catch-all-error-p
  22.     (vl-catch-all-apply
  23.      'vla-put-Layer (list e cLay)))
  24.       ); end progn
  25.       ); end if
  26.      ); end foreach
  27.     ); end progn
  28.    ); end if
  29. (princ)
  30. ); end of c:colay

 
 
Bylayer图元不受影响。新图层名为“C”,颜色编号为-大卫
回复

使用道具 举报

0

主题

39

帖子

44

银币

限制会员

铜币
-1
发表于 2022-7-6 10:05:09 | 显示全部楼层
  1. [b][color=BLACK]([/color][/b]defun c:enc [b][color=FUCHSIA]([/color][/b]/ ss en ed clr[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  3.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  4.              [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  5.              [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]setq clr [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 62 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  6.                  [b][color=GREEN]([/color][/b]entmod [b][color=BLUE]([/color][/b]subst [b][color=RED]([/color][/b]cons 8 [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"C"[/color] [b][color=TEAL]([/color][/b]itoa clr[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
  7.                                 [b][color=RED]([/color][/b]assoc 8 ed[b][color=RED])[/color][/b] ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  8.             [b][color=MAROON]([/color][/b]ssdel en ss[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  9. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
这是一个很好的解决方案。Entmod实体并立即创建层。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:11:32 | 显示全部楼层
你回来了吗,朋友???
敲我的门
 
奥列格
回复

使用道具 举报

0

主题

39

帖子

44

银币

限制会员

铜币
-1
发表于 2022-7-6 10:13:10 | 显示全部楼层
 
嗨,奥列格。是的,我回到AutoCAD工作,有时会来这里。
 
亚历山大。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 10:16:32 | 显示全部楼层
阿斯米,是你吗?很高兴见到你回来如果是这样的话
回复

使用道具 举报

0

主题

39

帖子

44

银币

限制会员

铜币
-1
发表于 2022-7-6 10:22:36 | 显示全部楼层
是的,我是米。谢谢李。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:26:11 | 显示全部楼层
很高兴再次在这里见到你!已经很久了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 23:16 , Processed in 0.490160 second(s), 72 queries .

© 2020-2025 乐筑天下

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