Lisp文件请求
嘿,伙计们,我想知道是否有人可以给我写一个快速的lisp文件来加快我的工作量。我需要它做以下事情。
1、将图纸中的所有块分解,直到没有更多块为止。(我已经有了这个Lisp程序)
2.选择图形中的所有内容,并将所有对象放置在“bylayer”(颜色、线型等)上
3.选择图层0上的所有对象,并放置在新图层(图层0)上
我有大约200个图纸,我需要这样做,所以将是非常大的所有人都可以帮助 三个人的Lisp程序?
你提到你有一个项目1的例行程序。
Setbylayer将负责项目2。
这就剩下第3项了。
(defun c:DoAll(/ ln ss i e)
(setq ln "YourLayer")
(setq ss (ssget "_X" '((8 . "0"))))
(repeat (setq i (sslength ss))
(entmod (subst (cons 8 ln)
(assoc 8
(setq e (entget (ssname ss
(setq i (1- i))))))
e))
)(princ)
) 谢谢你这么做
我能不能把这三者结合起来做成一个长Lisp程序?这是我用来分解积木的
(defun c:exall(/ bSet)
(setvar "qaflags" 1)
(while(setq bSet(ssget "_X" '((0 . "INSERT"))))
(command "_.explode" bSet "")
); end while
(repeat 3(command "-purge" "all" "" "n"))
(setvar "qaflags" 0)
(princ)
); end of c:exall
我想这是可以做到的。这是否仅限于模型空间?或者它是否包括布局选项卡上的对象? 只是模型空间 最后一个问题:
外部参照? 图形中根本没有外部参照。 可以
拼凑在一起的一堆代码
(defun c:DoAll(/ ln aDoc blknme bSetss i e)
(vl-load-com)
(setq ln "YourLayer")
(setq aDoc (vla-get-activedocument (vlax-get-acad-object)))
(while
(setq a (tblnext "BLOCK" (null a)))
(setq blknme (vla-item
(vla-get-blocks aDoc)
(cdr (assoc 2 a))))
(vla-put-Explodable blknme :vlax-true)
(vlax-for
itm
blknme
(vla-put-color itm acByLayer)
(vla-put-linetype itm "ByLayer")
(vla-put-lineweight itm -1)))
(while
(setq bSet (ssget "_X" '((0 . "INSERT") (410 . "MODEL"))))
(command "_.explode" bSet)
)
(if (setq ss (ssget "_X" '((8 . "0"))))
(repeat (setq i (sslength ss))
(entmod (subst (cons 8 ln)
(assoc 8
(setq e (entget
(ssname
ss
(setq i (1- i))))))
e))
)
)
(repeat 4
(vla-purgeall aDoc)
)
(princ)
)
编辑:修改为考虑不可变形块图元
非常感谢。
但它似乎被卡住了
命令:_。爆炸
选择对象:
命令:_。爆炸
选择对象:
命令:_。爆炸
选择对象:
命令:_。爆炸
它一直重复,直到我取消,有什么想法吗?
谢谢你帮我。
不是错误,这是在while循环内找到嵌套块(ssget)的结果。[复制自您的c::exall例程]
命令:cmdecho
输入CMDECHO的新值:0
页:
[1]