Melancholier 发表于 2018-6-13 11:31:21

求助一个可以修改块内图层为Bylayer的插件程序

求助一个可以修改块内图层为Bylayer的插件程序(比如我有一个图层,图层内的颜色是红色,但是块内还是黄色,怎么样才可以不进块批量修改成与图层一致的颜色),先谢过大神

shh1980 发表于 2018-6-14 10:01:56

SETBYLAYER

yshf 发表于 2018-6-15 16:09:38

本帖最后由 yshf 于 2018-6-15 16:14 编辑

(defun c:cc()
    (setq AcadDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
    (setq Blocks (vla-get-blocks AcadDoc))
    (if (setq ssa (ssget '((0 . "INSERT"))))
      (vlax-for Ent (vla-get-ActiveSelectionSet AcadDoc)
            (vlax-for Obj (vla-item Blocks (vla-get-name Ent))
                (vla-put-color Obj 256) ;对象颜色随层
            )
      )
    )
    (vlax-release-object Blocks)
    (vlax-release-object AcadDoc)
    (princ)
)

Gu_xl 发表于 2018-6-14 10:35:49

(defun c:tt ()
(if (and
        (setq e (car (entsel "\n选择块:")))
        (= "INSERT" (cdr (assoc 0 (setq el (entget e)))))
      )
    (vlax-for o        (setq blkdef (vla-item (vla-get-blocks
                                       (vla-get-ActiveDocument
                                           (vlax-get-acad-object)
                                       )
                                     )
                                     (cdr (assoc 2 el))
                             )
                )
      (vla-put-layer o "0") ;_ 对象修改到"0"层
      (vla-put-color o 256) ;_ 对象颜色随层
    )
)
(princ)
)

Andyhon 发表于 2018-6-13 12:30:45

您试过在 '0' 层造图块吗?

Melancholier 发表于 2018-6-13 15:03:55

Andyhon 发表于 2018-6-13 12:30
您试过在 '0' 层造图块吗?

没懂你的意思呢,我的情况是别人做好了块,我想通过程序直接修改,而不进块

Andyhon 发表于 2018-6-13 15:38:15

我们在学用AutoCAD之初即被带上 得在 '0' 层造图块的规范
是以我们的程序链就缺了您所说的这一环

669423907 发表于 2018-6-15 09:24:11

Gu_xl 发表于 2018-6-14 10:35


G版:
我觉得楼主想要的是块内对象为Bylayer,
所以可以去掉 ;(vla-put-layer o "0") ;_ 对象修改到"0"层,
最后添加 (command "_move" e "" 0 0) ;刷新
能否改为多选呢?

Melancholier 发表于 2018-6-25 12:14:53

yshf 发表于 2018-6-15 16:09


我想请教下,我导入到cad,提示说未知命令,您能再帮忙看看是什么问题吗

Melancholier 发表于 2018-6-25 13:06:36

shh1980 发表于 2018-6-14 10:01
SETBYLAYER

我要的就是这个命令,谢谢,但是怎么用lisp程序,把图纸内所有的块一次按这个命令修改到位呢
页: [1] 2 3
查看完整版本: 求助一个可以修改块内图层为Bylayer的插件程序