乐筑天下

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

[编程交流] 关闭所有层,除了

[复制链接]

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:33:33 | 显示全部楼层 |阅读模式
有没有办法将“-layer”命令合并到lisp例程中,以完成关闭所有层的任务,除了某个5层之外,该5层始终是我想要保留的相同层?
 
我目前正在使用它关闭除当前层之外的所有层,但不知道如何修改代码以始终保持相同的5层。。
 
  1. (defun C:loff ( / clayer expert)
  2. (setq clayer (getvar "clayer") expert (getvar "expert"))
  3. (setvar "expert" 1)
  4. (command "._layer" "_off" "*" "_on" clayer "")
  5. (setvar "expert" expert)
  6. (princ)
  7. )
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:38:59 | 显示全部楼层
有没有办法将“-layer”命令合并到lisp例程中,以完成关闭所有层的任务,除了某个5层之外,该5层始终是我想要保留的相同层?
 
例如,我想关闭除以下层之外的所有层:
Storm_排水沟
建筑物
暖通空调
洒水器
停车场
 
 
我目前正在使用此LISP关闭除当前层之外的所有层,但不知道如何修改代码以始终保持这5层不变。。
 
  1. (defun C:loff ( / clayer expert)
  2. (setq clayer (getvar "clayer") expert (getvar "expert"))
  3. (setvar "expert" 1)
  4. (command "._layer" "_off" "*" "_on" clayer "")
  5. (setvar "expert" expert)
  6. (princ)
  7. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 06:43:18 | 显示全部楼层
 
在上面写着clayer的地方,你可以把它添加到“LAYER1,LAYER2,LAYER3,LAYER4,LAYER5”。
 
层#是您希望留在上面的每个层的名称。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 06:47:28 | 显示全部楼层
我将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。
 
请阅读代码发布指南,并将代码放在代码标签中。
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:50:29 | 显示全部楼层
非常感谢。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 06:55:13 | 显示全部楼层
我将另一个线程中的帖子添加到这个帖子中。
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:57:06 | 显示全部楼层
 
 
再次感谢您在这方面的帮助!我可以打开的层数有限制吗?因为当我离开160层时,我在命令行中不断得到以下错误:
 
  1. ; error: bad argument value:  AutoCAD command: #<SUBR @000000002cafd6b0 COND>
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:01:33 | 显示全部楼层
尽管在这种情况下,您收到的错误消息似乎有些奇怪,但传递给命令的字符串的长度很可能有限制。
 
试试这个:
根据需要更改突出显示列表中的层。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:05:06 | 显示全部楼层
 
李的代码的另一个优点是,它可以透明地执行,并且运行速度比使用命令快得多。
我从来没有注意到在向LAYER命令输入字符串时的局限性,但我必须承认,在编写快速宏时,我输入的字符串从来没有超过通配符。如果有什么东西像你想要的那样,我绝对不会使用命令来写。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:08:24 | 显示全部楼层
如果图形中不存在任何图层,则所有图层都将关闭。
 
  1. (defun c:Test (/ l e c)
  2. ;;;--- Tharwat 23. May. 2013 ---;;;
  3. (while (setq l (tblnext "LAYER" (not l)))
  4.    (setq c (assoc 62 (setq e (entget (tblobjname "LAYER" (cdr (assoc 2 l)))))
  5.           )
  6.    )
  7.    (if (member (strcase (cdr (assoc 2 l)))
  8.                (mapcar 'strcase
  9.                        '("Storm_Drains" "Building" "HVAC" "Sprinkler"
  10.                          "Parking_Lot"
  11.                         )
  12.                )
  13.        )
  14.      (if (minusp (cdr c))
  15.        (entmod (subst (cons 62 (- (cdr c))) c e))
  16.      )
  17.      (if (not (minusp (cdr c)))
  18.        (entmod (subst (cons 62 (- (cdr c))) c e))
  19.      )
  20.    )
  21. )
  22. (princ)
  23. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:32 , Processed in 0.450394 second(s), 72 queries .

© 2020-2025 乐筑天下

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