小毛草 发表于 2025-1-16 18:06:07

将指定的图层设置为不打印,可以选择多个图层!

(defun C:BDY (/ ss i ent layname laylist)
;; 提示用户选择对象
(prompt "\n请选择要设置为不打印的图层对象:")
(setq ss (ssget)) ; 选择对象

;; 如果选择了对象
(if ss
    (progn
      (setq i 0)
      (setq laylist '()) ; 初始化图层名称列表

      ;; 遍历选择集,提取图层名称
      (repeat (sslength ss)
      (setq ent (ssname ss i)) ; 获取对象
      (setq layname (cdr (assoc 8 (entget ent)))) ; 获取对象所在的图层名称
      (if (not (member layname laylist)) ; 去重
          (setq laylist (cons layname laylist)) ; 将图层名称加入列表
      )
      (setq i (1+ i))
      )

      ;; 对每个图层执行不打印操作
      (foreach layname laylist
      (command ".layer" "p" "n" layname "") ; 不打印图层
      )
      (prompt (strcat "\n已不打印 " (itoa (length laylist)) " 个图层。"))
    )
    ;; 如果没有选择对象
    (prompt "\n未选择任何对象!")
)
(princ)
)
将指定的图层设置为不打印,可以选择多个图层!

zmzk 发表于 2025-1-16 20:12:52

这个有用!多谢分享

pizi158545086 发表于 2025-3-12 00:31:09

多谢分享               

bai2000 发表于 2025-3-12 12:41:32

应该还能改回来啊
页: [1]
查看完整版本: 将指定的图层设置为不打印,可以选择多个图层!