heathera 发表于 2022-7-6 08:07:46

Lisp文件请求

嘿,伙计们,我想知道是否有人可以给我写一个快速的lisp文件来加快我的工作量。
 
我需要它做以下事情。
 
1、将图纸中的所有块分解,直到没有更多块为止。(我已经有了这个Lisp程序)
2.选择图形中的所有内容,并将所有对象放置在“bylayer”(颜色、线型等)上
3.选择图层0上的所有对象,并放置在新图层(图层0)上
 
我有大约200个图纸,我需要这样做,所以将是非常大的所有人都可以帮助

pBe 发表于 2022-7-6 08:20:53

三个人的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)
   )

heathera 发表于 2022-7-6 08:21:24

谢谢你这么做
 
我能不能把这三者结合起来做成一个长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

pBe 发表于 2022-7-6 08:29:56

 
我想这是可以做到的。这是否仅限于模型空间?或者它是否包括布局选项卡上的对象?

heathera 发表于 2022-7-6 08:38:08

只是模型空间

pBe 发表于 2022-7-6 08:42:15

最后一个问题:
外部参照?

heathera 发表于 2022-7-6 08:53:50

图形中根本没有外部参照。

pBe 发表于 2022-7-6 08:56:16

可以
 
拼凑在一起的一堆代码
 
(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)
   )

 
编辑:修改为考虑不可变形块图元

heathera 发表于 2022-7-6 09:03:13

 
非常感谢。
但它似乎被卡住了
 
命令:_。爆炸
选择对象:
命令:_。爆炸
选择对象:
命令:_。爆炸
选择对象:
命令:_。爆炸
 
它一直重复,直到我取消,有什么想法吗?
 
谢谢你帮我。

pBe 发表于 2022-7-6 09:10:39

 
不是错误,这是在while循环内找到嵌套块(ssget)的结果。[复制自您的c::exall例程]
 
命令:cmdecho
输入CMDECHO的新值:0
页: [1]
查看完整版本: Lisp文件请求