[求助]怎样将块中特定图元改为另一图层
<p>也就是希望能自动将图块中图名含有hatch的,例如:wall-hatch,全部改为hatch层。</p> 或者选择图块,可以将不同图层的文本改为TEXT图层 下面的是一个简单示例,选择你要改动的图块中的文字或hatch,即可自动转换到需要的图层(defun c:tt()
(princ "\n选择图块中的子图元:")
(setq ent (car (nentsel)))
(if ent
(progn
(setq ent (vlax-ename->vla-object ent))
(cond ((= "AcDbText" (vla-get-ObjectName ent))
(command "layer" "m" "Text" "")
(vla-put-layer ent "Text")
)
((= "AcDbHatch" (vla-get-ObjectName ent))
(command "layer" "m" "hatch" "")
(vla-put-layer ent "hatch")
)
)
)
)
(command "regen")
(princ)
)
;;;选中图块,自动将土块中全部文字和填充该层
(defun c:ttt()
(setq ent (car (entsel)))
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object))
ent (vlax-ename->vla-object ent)
)
(if (or
(= "AcDbBlockReference" (vla-get-ObjectName ent))
(= "AcDbMInsertBlock" (vla-get-ObjectName ent))
)
(progn
(setq blkname (vla-get-name ent))
(setq blkobj (vla-item (vla-get-Blocks doc) blkname))
(vlax-for obj blkobj
(cond ((= "AcDbText" (vla-get-ObjectName obj))
(command "layer" "m" "Text" "")
(vla-put-layer obj "Text")
)
((= "AcDbHatch" (vla-get-ObjectName obj))
(command "layer" "m" "hatch" "")
(vla-put-layer obj "hatch")
)
) ;_ cond
) ;_ foreach
)
)
(command "regen")
(princ)
)
超级爽,非常好,太精彩了,非常好用,哈哈哈 ( setq ent ( vlax-ename- > vla-object ent ) )
vlax-ename- > vla-object ent
这个是什么函数,不能使用耶 在函中增加 “(vl-load-com)“,即
(defun c:tt()
(vl-load-com)
......
)
页:
[1]