本帖最后由 lingfne 于 2025-8-27 22:11 编辑

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


网友答: 大神说了
问问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")))


网友答:
  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. )


网友答:
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不存在。")
  )

网友答:
  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. )


网友答: 学习了 我也一直在寻找方法

网友答:
xyp1964 发表于 2025-8-27 20:34

缺少遍历字典哦

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

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


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

问问AI,写个遍历数据库+vla删除

网友答: 删除图层是删除图层上的对象,所以谨慎操作,有些图层,你想删除也删不掉,最好的办法,是与其他图层合并。

网友答:
你有种再说一遍 发表于 2025-8-27 21:41
问问AI,写个遍历数据库+vla删除

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

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

我想在这里删除红色的线框,执行程序过后,红色的线框多余了。
  • 上一篇:绘画精装一级柜门
  • 下一篇:没有了