cxs259 发表于 2010-9-15 15:20:00

[求助]请求完善将所选实体层置为当前层后,实体层的颜色能否随层,谢谢!

<font face="Verdana">;;----------------------<br/>;;将所选实体层置为当前层<br/>;;----------------------<br/>(defun c:cl (/ ent ent_data clay olay)<br/>&nbsp; (setq olay (getvar "clayer"))<br/>&nbsp; (setq ent (car (entsel (strcat "\n选择物体/当前层为&lt;" olay "&gt;:"))))<br/>&nbsp; (if (/= nil ent)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ent_data (entget ent))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq clay (cdr (assoc 8 ent_data)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setvar "clayer" clay)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (prompt (strcat "\n成功将图层设为&lt;" clay "&gt;:"))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)<br/></font>

Andyhon 发表于 2010-9-15 22:42:00

<font style="BACKGROUND-COLOR: #ffffff" face="Verdana">(setvar "Cecolor" "ByLayer")&nbsp;&nbsp;&nbsp; ; add this line</font>

cxs259 发表于 2010-9-16 09:13:00

<p>感谢Anhyhon,实体层的颜色是有红、黄、绿等颜色的,随层后,颜色也有红、黄、绿等颜色,不是单纯的白色,谢谢!</p>

gufeng 发表于 2010-9-17 12:18:00

;;----------------------
;;将所选实体层置为当前层
;;----------------------
(defun c:cl (/ ent ent_data clay olay)
(setq olay (getvar "clayer"))
(setq ent (car (entsel (strcat "\n选择物体/当前层为<" olay ">:"))))
(if (/= nil ent)
    (progn
      (setq ent_data (entget ent))
      (command "_change" ent "" "_p" "_color" "bylayer" "")
      (setq clay (cdr (assoc 8 ent_data)))
      (setvar "clayer" clay)
      (prompt (strcat "\n成功将图层设为<" clay ">:"))
    )
)
) 块的改不了

caiqs 发表于 2010-9-17 16:50:00

本帖最后由 作者 于 2010-9-18 7:15:31 编辑 <br /><br /> <p><font face="Verdana">;;;用新的组码值替换原值<br/>(defun dxfupd(ent dxfcode newval / elst newlst&nbsp; )<br/>&nbsp; (setq elst(entget ent))</font></p>
<p><font face="Verdana">&nbsp; (setq newlst(append elst (list (cons dxfcode newval))))</font></p>
<p><font face="Verdana">&nbsp; (entmod newlst)<br/>&nbsp; (entupd ent))</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">(defun c:cl (/ ent ent_data clay olay e blkname blkref elst)<br/>&nbsp; (setq olay (getvar "clayer"))<br/>&nbsp; (setq ent (car (entsel (strcat "\n选择物体 (当前层为&lt;" olay "&gt;) :"))))<br/>&nbsp; (cond<br/>;;;&nbsp; (if ;|(/= nil ent)|;&nbsp; ent<br/>&nbsp;&nbsp;&nbsp; ((not ent) (princ "\n")) ;_无效对象,静默退出<br/>&nbsp;&nbsp;&nbsp; (ent ;_有效对象<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ent_data (entget ent))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq conlst (assoc 8 ent_data)) ;_实体层关联表<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq clay (cdr conlst)) ;_所选实体所在的层名<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setvar "clayer" clay) ;_设置当前层<br/>&nbsp;&nbsp;&nbsp;&nbsp; (dxfupd ent 62 256)<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (entmod (subst (cons 62 256) (assoc 62 ent_data) ent_data))<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (entupd ent)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (equal "INSERT" (cdr (assoc 0 ent_data))) ;_块<br/>&nbsp;(progn<br/>;;;&nbsp;&nbsp; (entmod (subst conlst (assoc 8 ent_data) ent_data))<br/>;;;&nbsp;&nbsp; (entupd ent)<br/>&nbsp;&nbsp; (dxfupd ent 8 clay)<br/>&nbsp;&nbsp; (setq blkname (cdr (assoc 2 ent_data))) ;_块名<br/>&nbsp;&nbsp; (setq blkdef (tblsearch "block" blkname)) ;_块定义</font></p>
<p><font face="Verdana">&nbsp;&nbsp; (setq e (cdr (assoc -2 blkdef))) ;_块中第一个图元<br/>&nbsp;&nbsp; <br/>;;;&nbsp;&nbsp; (setq elst (append (entget e) (list (cons 62 0)))) ;_块中第一个图元颜色随块<br/>;;;(setq elst (append (entget e)(list (cons 62 256))));_块中第一个图元颜色随层<br/>;;;&nbsp;&nbsp; (entmod (subst (cons 62 0) (assoc 62 elst) elst))<br/>;;;&nbsp;&nbsp; (entupd e)</font></p>
<p><font face="Verdana">&nbsp;&nbsp; <br/>&nbsp;&nbsp; (dxfupd e 62 0);_等效于上面的代码,随块<br/>;;;&nbsp;&nbsp; (dxfupd e 62 256);_颜色随层</font></p>
<p><font face="Verdana">&nbsp;&nbsp; (while (and<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq e (entnext e))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq elst (entget e))</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp; (/= (cdr (assoc 0 elst)) "SEQEND")<br/>&nbsp;&nbsp; )</font></p>
<p><font face="Verdana">;;;&nbsp;&nbsp;&nbsp;&nbsp; (setq elst (append elst (list (cons 62 0)))) ;_块中图元颜色随块<br/>;;;;;;&nbsp;&nbsp;(setq elst (append elst (list (cons 62 256))))&nbsp;&nbsp;&nbsp; ;_块中图元颜色随层<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (entmod elst)<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (entupd e)</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (dxfupd e 62 0);_等效于上面的代码,颜色随块<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (dxfupd e 62 256);_颜色随层<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (entupd ent)<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )</font></p>
<p>(princ)</p>
<p><font face="Verdana">)<br/></font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">简单的写了一下,还有另一种方法用vl函数,也很方便,防错功能没有,自已改改吧</p></font>

Aries 发表于 2020-9-24 13:14:11

caiqs 发表于 2010-9-17 16:50
本帖最后由 作者 于 2010-9-18 7:15:31 编辑;;;用新的组码值替换原值(defun dxfupd(ent dxfcode newval...

收藏备用
页: [1]
查看完整版本: [求助]请求完善将所选实体层置为当前层后,实体层的颜色能否随层,谢谢!