求批量删除某图层上所有方框内的内容的LSP
如图,删除矩形框内的文字和直线,以及其他的东西,最好能批量删除~~~~本帖最后由 琴剑江山_10184 于 2015-3-16 11:00 编辑
;;;;琴剑江山 2015.3.16
(defun c:ta (/ ADD DXF-10 ENT GET GET2 LEN LEN2 NN NN2)
(setvar "cmdecho" 0)
(princ "\n功能 [批量删除多段内所有对象]")
(setq get (ssget (list '(0 . "LWPOLYLINE") (cons 8 "bend"))));删除"bend"层的,自行修改你的层
(setq Len (sslength get) add (ssadd))
(repeat Len
(setq nn(ssname get (setq Len (1- Len)))
ent (entget nn))
(if (= (cdr (assoc 0 ent)) "LWPOLYLINE")
(progn
(setq dxf-10 (vl-remove-if '(lambda (x) (/= (car x) 10)) ent)
get2 (ssget "_WP" (mapcar 'cdr dxf-10))
Len2 (sslength get2))
(repeat Len2
(setq nn2 (ssname get2 (setq Len2 (1- Len2))))
(ssadd nn2 add)
)
)
)
)
(vl-cmdf "_.ERASE" add "")
(princ)
) ;;;;琴剑江山 2015.3.16
(defun c:ta (/ ADD PLST ENT GET GET2 I)
(setvar "cmdecho" 0)
(princ "\n功能 [批量删除多段内所有对象]")
(setq get (ssget (list '(0 . "LWPOLYLINE") (cons 8 "bend"))));删除"bend"层的,自行修改你的层
(repeat (setq i (sslength get))
(setq nn (ssname get (setq i (1- i))) plst nil)
(foreach x (entget nn) (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
(setq get2 (ssget "WP" plst))
(command "_.ERASE" get2 "R" nn "")
)
(setvar "cmdecho" 1)
(princ)
) ZZXXQQ 发表于 2015-3-16 21:04 static/image/common/back.gif
老大出手。如此精简,学习下 琴剑江山_10184 发表于 2015-3-16 10:52 static/image/common/back.gif
封闭的距形啊
xyp1964 发表于 2015-3-16 21:22 static/image/common/back.gif
楼主下了也用不了 琴剑江山_10184 发表于 2015-3-16 21:24 static/image/common/back.gif
楼主下了也用不了
哈哈,知道院长的需要院长自己的函数支持,哈哈哈~~ ZZXXQQ 发表于 2015-3-16 21:04 static/image/common/back.gif
谢谢Z版前辈,我好好学习下源码,试着理解下。。 琴剑江山_10184 发表于 2015-3-16 10:52 static/image/common/back.gif
谢谢江山前辈的LSP,帮了一个大忙。。。。谢谢您!!!
页:
[1]
2