lisp爱好者 发表于 2011-4-20 13:44:46

修改已有图元图层

   求助各位大侠:
    问题一:如何对图中已有图元按照类别(如:标注、填充、单行文本、多行文本)自动归到相应的图层中去?
liap如何写?
    问题二:图中比如有几个图层关闭状态,另外几个打开状态,如何用lisp将图层反向显示,即打开的关闭,关闭的打开状态?
    在线期待,谢谢

Andyhon 发表于 2011-4-20 14:18:46

本帖最后由 Andyhon 于 2011-4-20 14:22 编辑

问题一
(setq ss (ssget "X" '((0 . "HATCH"))))
(command "chprop" ss "" "La" "填充" "")

问题二
图层关闭状态 ?
指的是 off / freeze   or 混合状态?

lisp爱好者 发表于 2011-4-20 14:28:05

谢谢楼上,
问题二是指,当前打开图纸状态(有部分图层是打开的,也有关闭的),然后要一次把原来关闭的打开,原来打开的关闭。

x_s_s_1 发表于 2011-4-20 14:29:21

;;;反向锁定图层
;;;by x_s_s_1@163.com
(vl-load-com)
(defun ToF (msg)
(if (= msg :vlax-true)
    (setq msg :vlax-false)
    (setq msg :vlax-true)
) ;_ 结束if
) ;_ 结束defun
(defun c:fs ()
(setq        AcadObject   (vlax-get-acad-object)
        AcadDocument (vla-get-ActiveDocument AcadObject)
        mSpace             (vla-get-ModelSpace AcadDocument)
) ;_ 结束setq
(setq LayerSel (vla-get-Layers AcadDocument))
(vlax-for LayerObj LayerSel
    (vla-put-Lock LayerObj (ToF (vla-get-Lock LayerObj)))
) ;_ 结束vlax-for
(princ)
) ;_ 结束defun
;;;反向显示图层
;;;by x_s_s_1@163.com
(defun c:fx ()
(setq        AcadObject   (vlax-get-acad-object)
        AcadDocument (vla-get-ActiveDocument AcadObject)
        mSpace             (vla-get-ModelSpace AcadDocument)
) ;_ 结束setq
(setq LayerSel (vla-get-Layers AcadDocument))
(vlax-for LayerObj LayerSel
    (vla-put-layeron LayerObj (ToF (vla-get-layeron LayerObj)))
) ;_ 结束vlax-for
(princ)
) ;_ 结束defun

lisp爱好者 发表于 2011-4-20 14:39:38

谢谢楼上两位,我试下

仁勇 发表于 2013-7-4 14:11:04

来论坛看帖真是学到不少东西
页: [1]
查看完整版本: 修改已有图元图层