能否帮忙改下eachy的这段VLISP程序的代码?
本帖最后由 作者 于 2008-8-26 14:52:20 编辑一、实现功能:将所有实体改到0层,但不改变实体原本的颜色(也就是原来颜色随层的实体不随层,而是用原来所在层的颜色)。
二、已找到的资料:
1、eachy的“修改所有实体至 0 图层”程序如下,存在两个问题:
a、不能保持实体原来的颜色。
b、只能处理模型空间的。
;;修改所有实体至 0 图层,
(defun ea:chglay (/ for-item docment modelspace)
(setq docment (vla-get-activedocument (vlax-get-acad-object))
modelspace (vla-get-modelspace docment)
)
(vlax-for for-item modelspace
(vla-put-layer for-item "0")
)
)
;;如果有块处理不了用下面的再处理
;;处理图块定义
(defun ea:chgblklay (/ docment for-item blocks)
(setq docment (vla-get-activedocument (vlax-get-acad-object))
blocks (vla-get-blocks docment)
)
(vlax-for for-item blocks
(vlax-for obj for-item
(vla-put-layer obj "0")
)
)
)
;;修理完成后在 purge all
哪位大侠可以帮忙改一下,增加颜色的处理
感谢eachy!
<p>改顏色不是你說那麼簡單的,而且會有矛盾產生,想想看當遇到多層圖塊中的不同BYBLOCK & BYLAYER</p><p>一些當時討論<br/><a href="http://www.xdcad.net/forum/showthread.php?s=&threadid=250253&perpage=15&display=&pagenumber=1">http://www.xdcad.net/forum/showthread.php?s=&threadid=250253&perpage=15&display=&pagenumber=1</a><br/></p> <p>还以为是个小CASE呢</p><p>如果只是处理BYLAYER呢:</p><p>1、先将当前图形里的每个图层内的实体:如果原来是随层的,改为不随层,直接改成颜色号。比如原来图层颜色是5,实体是随层。就直接将实体的颜色改为5。</p><p>2、每个层里的实体改好后,再转到0层。</p><p>处理不了图块就只能手工处理了。或者没处理到的就人工再用QSELECT搞搞</p><p></p><p></p> 补充参考资料:
highflybir的把CAD中所有实体(包括块和嵌套块中所有单独实体)颜色都改颜色的程序
如何将其中的256颜色换成是我在3楼说的实体原来所在图层的颜色?
(defun c:CCC ()
(vl-load-com)
(vlax-for Blk (vla-get-Blocks
(vla-get-ActiveDocument
(vlax-get-Acad-Object)
)
)
(vlax-for Obj Blk
(vla-put-Color Obj 256) ;256随层
(if (= (vla-get-ObjectName Obj) "AcDbBlockReference")
(foreach Att (vlax-invoke Obj 'GetAttributes)
(vla-put-Color Att 256);256随层
)
)
)
)
) <p>直接用eachy 的lyrtv23程序就可以了吧!</p>
页:
[1]