乐筑天下

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

[编程交流] 选择所有对象的代码

[复制链接]

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 15:36:23 | 显示全部楼层
请阅读代码发布指南,并将您的代码包含在代码标签中。[NOPARSE]
  1. (defun C:AutoLayerChange ( / L _LayersList _Recapitalise lyrs SS i enx lyr tmp )
  2. (setq L ; Note: layer names are case insensitive - assoc list of: (<old layer> . <new layer>)
  3.    '( ; Place your inputs here:
  4.      ("obj2" . "obj1")
  5.      ("dim" . "0")
  6.    ); list
  7. ); setq L
  8. (defun _LayersList ( / d L )
  9.    (while (setq d (tblnext "LAYER" (not d)))
  10.      (setq L (cons (cdr (assoc 2 d)) L))
  11.    )
  12. )
  13. (defun _Recapitalise ( itm L )
  14.    (vl-some (function (lambda (x) (if (= (strcase itm) (strcase x)) x))) L)
  15. )
  16. (and
  17.    (setq lyrs (_LayersList))
  18.    (or
  19.      (setq L (apply (function append) (mapcar (function (lambda (x / tmp) (if (setq tmp (_Recapitalise (car x) lyrs)) (list (cons tmp (cdr x)))))) L)))
  20.      (prompt "\nNo valid layers were found.")
  21.    ); or
  22.    (or
  23.      (prompt "\nSelect objects to change layers: ")
  24.      (setq SS (ssget "_:L-I" (list (cons 8 (setq tmp (substr (apply (function strcat) (mapcar (function (lambda (x) (strcat "," (car x)))) L)) 2))))))
  25.      (prompt (strcat "\nNo objects were found on "" tmp ""  layers."))
  26.    ); or
  27.    (repeat (setq i (sslength SS))
  28.      (setq enx (entget (ssname SS (setq i (1- i)))))
  29.      (setq lyr (assoc 8 enx))
  30.      (entmod (subst (cons 8 (cond ( (cdr (assoc (setq tmp (cdr lyr)) L)) ) ( tmp ) )) lyr enx))
  31.    ); repeat
  32. ); and
  33. (princ)
  34. ); defun C:AutoLayerChange
=
  1. Your Code Here[/NOPARSE]
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 15:39:53 | 显示全部楼层
 
嗨,塔瓦,
谢谢你的建议。。关于视口,我有一个问题:
用户选择视口对象的情况是什么?在文书空间工作时(我猜)?
我总是在模型空间中工作,所以我从来没有考虑过这个问题的可能性。
 
顺便说一句,对于第二句话,我实际上没有查看目标层是否已经存在-只是确保OP是否提供了点对列表:
  1. Your Code Here

但我同意使用同一层的entmod有点效率低下。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 15:44:38 | 显示全部楼层
下次会处理好的,谢谢你的提醒。
回复

使用道具 举报

2

主题

18

帖子

16

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 15:47:59 | 显示全部楼层
 
我们无法猜测所有用户都在模型空间中工作。
 
同意这一点,但这将忽略将对象移动到目标层,如果它不存在,这就是重点。
 
希望我的评论没有引起任何混乱。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 15:51:54 | 显示全部楼层
 
 
 
如果你能帮我查一下萨提斯的代码,为什么它在我的系统上不起作用?有什么想法吗?
 
 
测验
回复

使用道具 举报

2

主题

18

帖子

16

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 15:53:51 | 显示全部楼层
Solitechcadsolutions,您需要向所有希望帮助您的成员清楚地描述您的计划目标,并为此编写正确的代码。
 
例如;
您试图将哪些对象移动到该新图层名?
您想选择某些对象还是让程序全部选择?
你有解锁层上的对象吗?
 
等等
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 15:55:41 | 显示全部楼层
我同意使用关联列表,但是代码可以大大简化,例如-
  1. '( ; The routine will skip entmod'ing "Layer1"
  2. ("obj2" . "obj1")
  3. ("dim" . "0")
  4. ("Layer1")
  5. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:00:07 | 显示全部楼层
不错,李,
我不知道你可以像那样过滤层,忽略他们名字的大小写!
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:01:43 | 显示全部楼层
谢谢李和grr,代码对我来说工作得很好。。。。
 
 
太棒了
回复

使用道具 举报

2

主题

18

帖子

16

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:07:19 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 03:34 , Processed in 1.633585 second(s), 70 queries .

© 2020-2025 乐筑天下

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