乐筑天下

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

[编程交流] 将每个实体放入

[复制链接]

10

主题

53

帖子

44

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 08:16:57 | 显示全部楼层 |阅读模式
大家好
 
我一直在使用lisp rutine将每个实体对象放在一个单独的层上,以便导出到另一个应用程序。lisp很好用,但它只为所有层指定一种颜色(红色)。有没有办法对每一层应用随机颜色?下面是我做这件事的常规。
 
谢谢你的帮助
 
  1. (defun C:l2l (/ a lname b index b1 name n)
  2. (setvar "regenmode" 0)
  3. (setq a (ssget))
  4. (setq lname "3d" )
  5. (setq b 1)
  6. (setq n (sslength a))
  7. (setq index 0)
  8. (repeat n
  9.   (setq b1 (entget (ssname a index)))
  10.   (setq index (1+  index))
  11.   (setq b2 (rtos b 2 0))
  12.   (setq na (strcat lname b2))
  13.   (command "layer" "n" na "" "")
  14.   (command "layer" "s" na "c" 1 "" "s" 0 "")
  15.   (setq c (assoc  8 b1))
  16.   (setq d (cons (car c)na))
  17.    (setq e (subst d c b1))
  18.    (entmod e)
  19. ;   (command "change" !b1 "")
  20. ;   (command "change" "p" "" "p" "la" na "" "")
  21.   (setq b (1+  b))
  22.   )
  23.   (setvar "regenmode" 1)
  24. )
  25. (defun C:l2lA (/ a lname b index b1 name n)
  26. (setvar "regenmode" 0)
  27. (setq a (ssget))
  28. (setq lname (getstring "\Enter the starting string (A MAXIMUM OF 5 CHARACTERS): "))
  29. (setq b 1)
  30. (setq n (sslength a))
  31. (setq index 0)
  32. (repeat n
  33.   (setq b1 (entget (ssname a index)))
  34.   (setq index (1+  index))
  35.   (setq b2 (rtos b 2 0))
  36.   (setq na (strcat lname b2))
  37.   (command "layer" "n" na "" "")
  38.   (command "layer" "s" na "c" 1 "" "s" 0 "")
  39.   (setq c (assoc  8 b1))
  40.   (setq d (cons (car c)na))
  41.    (setq e (subst d c b1))
  42.    (entmod e)
  43. ;   (command "change" !b1 "")
  44. ;   (command "change" "p" "" "p" "la" na "" "")
  45.   (setq b (1+  b))
  46.   )
  47. (setvar "regenmode" 1)
  48. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:38:32 | 显示全部楼层
写得很快:
 
  1. (defun c:Solids2Layers ( / _padzeros a b e i l n p s )
  2.    (setq p "3d")
  3.    (defun _padzeros ( s l )
  4.        (if (< (strlen s) l) (_padzeros (strcat "0" s) l) s)
  5.    )
  6.    (if (setq s (ssget "_:L" '((0 . "*SOLID"))))
  7.        (progn
  8.            (setq
  9.                i (sslength s)
  10.                l (1+ (fix (/ (log i) (log 10))))
  11.                n 0
  12.            )
  13.            (repeat i
  14.                (setq e (entget (ssname s (setq i (1- i)))))
  15.                (entmod
  16.                    (subst
  17.                        (cons  8 (strcat p (_padzeros (itoa (setq n (1+ n))) l)))
  18.                        (assoc 8 e)
  19.                        e
  20.                    )
  21.                )
  22.            )
  23.            (setq n 0)
  24.            (while (setq a (tblnext "LAYER" (null a)))
  25.                (if (wcmatch (setq b (cdr (assoc 2 a))) (strcat p "*"))
  26.                    (entmod
  27.                        (setq b (entget (tblobjname "LAYER" b))
  28.                              b (subst (cons 62 (setq n (1+ (rem n 254)))) (assoc 62 b) b)
  29.                        )
  30.                    )
  31.                )
  32.            )
  33.        )
  34.    )
  35.    (princ)
  36. )
回复

使用道具 举报

10

主题

53

帖子

44

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 09:06:38 | 显示全部楼层
嗨,李
 
谢谢你的帮助。一个问题。在我使用L2L例程之后,我需要使用lisp吗?或者你的代码也会选择实体,并将它们全部放在具有不同层名称和颜色的单独层中?此外,是否可以将代码添加到原始lisp例程中?
 
再次感谢你的帮助。
 
ADSK公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:34:25 | 显示全部楼层
我的代码独立于您发布的代码,它将提示用户进行选择,将对象移动到单独的层,并更改这些层的颜色。
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 09:05 , Processed in 0.674606 second(s), 71 queries .

© 2020-2025 乐筑天下

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