cadmando2 发表于 2022-7-5 21:25:02

更改实体和块t

试图找到一个lisp例程,将现有设备更改为虚拟层和颜色,但希望保留线型。一些设备被堵塞,一些设备爆炸。
希望选项选择或窗口周围的区域,并将其更改为选定的图层和颜色,但保留线型。
有人能提出一种干净的方法来更改块和实体吗?

ttray33y 发表于 2022-7-5 22:02:07

对于非块,您可以使用下面的
(defun C:chCL(/ whc sset ent sellist color layer)
(defun FiltLayer(sset pst)
   (setq whc 0 newSet(ssadd))
   (while(< whc (sslength sset))
   (setq ent(ssname sset whc))
   (setq sellist(entget ent))
   (if(= pst (cdr(assoc 8 sellist)))
       (ssadd ent newSet)
   )
   (setq whc(+ whc 1))
   )
   newSet
)
(setvar "cmdecho" 0)
(setq color(acad_colordlg 1 nil))
(setq layer(getstring "\n Layer: "))
(setq sset
   (ssget "X"
   (list
       (cons -4 "<OR")
         (cons 0 "ARC")
         (cons 0 "CIRCLE")
         (cons 0 "ELLIPSE")
         (cons 0 "LINE")
         (cons 0 "LWPOLYLINE")
         (cons 0 "POLYLINE")
         (cons 0 "INSERT")
       (cons -4 "OR>")
   )
   )
)
(if(and sset(> (sslength sset) 0))(setq sset(FiltLayer sset "LAYER NAME OF xploded BLOCKs")))
(if (and sset (> (sslength sset) 0))
   (progn
   (command "change" sset "" "Properties" "Color" color "")
   (command "change" sset "" "Properties" "LAyer" layer "")
   (command "setbylayer" "P" "")
   )
)
(setvar "cmdecho" 1)
(princ)
)

 
对于块,编辑每个块>保存它们>在工具选项板中拖动它们>并使用工具选项板中的重定义命令更新块。
 
也可以使用VVA lisp进行块。
在这里:http://www.cadtutor.net/forum/showthread.php?533-所有层和块的Lisp颜色变化/第2页

cadmando2 发表于 2022-7-5 22:18:49

我一直在用refedit命令编辑块,但当你有很多块,项目的35%是现有设备,我需要有灯光层,但在幻影层。将现有设备换成不同的层,并保持线路类型和LTscale不变,这很费时。
非常耗时。我以前从未创建过lisp例程,大部分是脚本,但我尝试编辑它以使其工作。
谢谢

ttray33y 发表于 2022-7-5 22:33:30

为您编辑了上述例程,请尝试一下。
页: [1]
查看完整版本: 更改实体和块t