(defun change-color (obj / name blks) (vla-put-layer obj "0") ; 如果不改为0层,则有的可能不变色 (vla-put-color obj AcByLayer) ; 要加出错处理,因为有的可能被锁定 (if (or (= (vla-get-objectname obj) "AcDbBlockReference") (= (vla-get-objectname obj) "AcDbMInsertBlock") ) (progn (foreach Att (vlax-invoke Obj 'GetAttributes) (vla-put-layer Att "0") (vla-put-Color Att AcByLayer) ; 这一行用于处理属性随层 ) (setq name (vla-get-name obj)) ; 取得块名 (setq blks (vla-item *BLK name)) (vlax-for n blks (change-color n) ; 递归进去,用于处理嵌套 ) ) ) ) 这是一个改变物体图层及颜色的程序,如何改成: 改变物体图层为0层及颜色,但灰色的线条也改为0层颜色不变(还是8号色)。 |