明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2848|回复: 26

[提问] 指定图层删除

[复制链接]
发表于 2025-8-27 20:18:00 | 显示全部楼层 |阅读模式
本帖最后由 lingfne 于 2025-8-27 22:11 编辑

除了这个办法,这个写法,执行后跟出很多提示,本人觉得太多提示不雅观!!
  • (command "LAYDEL" "n" "图层1" "" "y")
有没有更好的写法?请各前辈出手指点一下或给个建议,谢谢!!
回复

使用道具 举报

发表于 2025-8-28 08:12:36 | 显示全部楼层
大神说了
问问AI,写个遍历数据库+vla删除

(vl-load-com)
  (setq layers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
  (vl-catch-all-apply 'vla-delete (list (vla-item layers "图层1")))
回复 支持 0 反对 1

使用道具 举报

发表于 2025-8-28 15:24:58 | 显示全部楼层
  1. (defun c:della ( / blk obj cnt dm doc )
  2.   (setq cnt 0)(princ"\n-->按图层删除对象")
  3.   (while (setq dm (car (entsel "要删除的图层")))
  4.     (setq dm (Cdr(Assoc 8 (Entget dm))))
  5.     (vlax-for blk (vla-get-Blocks (setq doc (vla-get-activedocument (vlax-get-acad-object))))
  6.       (vlax-for obj blk
  7.         (if (= (Vlax-Get obj 'Layer) dm)
  8.           (progn (setq cnt (1+ cnt))(vl-Catch-All-Apply 'vla-delete (list obj)))
  9.         )
  10.       )
  11.     )
  12.     (if (> cnt 0)(princ (strcat "\n-->共删除 " (itoa cnt) " 个图层为 "dm" 的对象")))
  13.   )
  14.   (if (< 0 cnt)(vla-regen doc acallviewports))
  15. )
回复 支持 反对

使用道具 举报

发表于 2025-8-28 08:59:45 | 显示全部楼层
leecicii 发表于 2025-8-28 08:51
(command "LAYDEL" "n" "图层1" "" "y")这个办法只能删除空图层,vla可以直接删除带有元素的图层吗?

(vl-load-com)
  (setq layers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
  (if (tblobjname "LAYER" "图层1")
    (progn
      (setq ss (ssget "X" '((8 . "图层1"))))
      (if ss
        (command "._ERASE" ss "")
      )
      (vl-catch-all-apply 'vla-delete (list (vla-item layers "图层1")))
    )
    (princ "\n图层1不存在。")
  )
回复 支持 反对

使用道具 举报

发表于 2025-8-27 20:34:33 | 显示全部楼层
  1. (defun c:tt ()
  2.   "选层删除"
  3.   (while (setq s1 (car (entsel "\n选择参照图层实体<退出>: ")))
  4.     (setq ss (ssget "x" (list (cons 8 (cdr (assoc 8 (entget s1)))))))
  5.     (command "erase" ss "")
  6.   )
  7.   (princ)
  8. )
回复 支持 反对

使用道具 举报

发表于 2025-8-27 20:40:55 | 显示全部楼层
学习了 我也一直在寻找方法
回复 支持 反对

使用道具 举报

发表于 2025-8-27 20:54:36 | 显示全部楼层

缺少遍历字典哦

点评

没必要  发表于 2025-8-27 21:05
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-27 21:23:44 | 显示全部楼层

除了这个办法,这个写法,执行后跟出很多提示,本人觉得太多提示不雅观!!
(command "LAYDEL" "n" "图层1" "" "y")
有没有更好的写法?请各前辈出手指点一下或给个建议,谢谢!!

这句话的“(command "LAYDEL" "n" "图层1" "" "y")”的意思是用于,执行某一种程序后,一不用选择,二不用获取,后台自动删除指定的图层。
回复 支持 反对

使用道具 举报

发表于 2025-8-27 21:41:19 | 显示全部楼层
lingfne 发表于 2025-8-27 21:23
除了这个办法,这个写法,执行后跟出很多提示,本人觉得太多提示不雅观!!
(command "LAYDEL" "n" "图层1"  ...

问问AI,写个遍历数据库+vla删除
回复 支持 反对

使用道具 举报

发表于 2025-8-27 21:55:49 | 显示全部楼层
删除图层是删除图层上的对象,所以谨慎操作,有些图层,你想删除也删不掉,最好的办法,是与其他图层合并。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-27 22:01:37 | 显示全部楼层
你有种再说一遍 发表于 2025-8-27 21:41
问问AI,写个遍历数据库+vla删除

没用过AI,我只是单纯想,用 Visual LISP 去写程序,多学些知识!同时接受你的提议
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-27 22:09:28 | 显示全部楼层
本帖最后由 lingfne 于 2025-8-27 22:10 编辑
qazxswk 发表于 2025-8-27 21:55
删除图层是删除图层上的对象,所以谨慎操作,有些图层,你想删除也删不掉,最好的办法,是与其他图层合并。

我想在这里删除红色的线框,执行程序过后,红色的线框多余了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-10-14 04:03 , Processed in 0.172756 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表