更改blo的对象层
所有人,我有一个有许多块的图形,问题是块内包含的对象层与插入块的层不同。是否有任何lisp可以将对象层更改为块插入层。
附件为参考图纸。
提前谢谢。
块图层。图纸
听起来您更希望将块内的所有对象更改为层“0”,以便它们可以继承块放置的任何层。 考虑一下这个函数:
;;---------------=={ Apply to Block Objects }==---------------;;
;; ;;
;;Applies a supplied function to all objects in a block ;;
;;definition. ;;
;;------------------------------------------------------------;;
;;Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
;;Arguments: ;;
;;_blockname - name of block to apply function ;;
;;_function- function to apply to all objects in block ;;
;;------------------------------------------------------------;;
;;Returns:T if block is found, else nil ;;
;;------------------------------------------------------------;;
(defun LM:ApplytoBlockObjects ( _blockname _function )
(vl-load-com)
;; © Lee Mac 2010
(
(lambda ( _function / def )
(if
(not
(vl-catch-all-error-p
(setq def
(vl-catch-all-apply 'vla-item
(list
(vla-get-blocks
(vla-get-ActiveDocument (vlax-get-acad-object))
)
_blockname
)
)
)
)
)
(vlax-for obj def (_function obj))
)
)
(eval _function)
)
)
;; Test Function to Move all Objects in a Block to Layer "0"
(defun c:test ( / ss l )
(if (setq ss (ssget "_+.:E:S" '((0 . "INSERT"))))
(progn
(LM:ApplytoBlockObjects (cdr (assoc 2 (setq l (entget (ssname ss 0)))))
(function
(lambda ( obj ) (vla-put-Layer obj "0"))
)
)
(if (= 1 (cdr (assoc 66 l)))
(vl-cmdf "_.attsync" "_N" (cdr (assoc 2 l)))
)
)
)
(princ)
)
页:
[1]