xhq1954425 发表于 2010-9-3 09:55:00

[求助]图层冻结有问题,请求帮助,谢谢!

<p><font face="Verdana">第一次用到冻结图层,我想把除了选定对象外的其它对象都冻结,下面的写法不行,请给指点一下,非常感谢!</font></p>
<p><font face="Verdana">(defun C:tt()<br/>&nbsp;(setq ename (car (entsel "\n 选择不冻结的对象:")))<br/>&nbsp;(setq ss (ssget "X" ))<br/>&nbsp;(ssdel ename ss)<br/>&nbsp;(COMMAND "LAYER" "F" "" ss "" );除ename所在图层外的其它图层全部冻结,这句怎么写呢?<br/>)</font></p>

mccad 发表于 2010-9-3 10:40:00

要读对象所在的图层,然后在全部图层中遍历,判断图层名,决定是否要冻结。

xhq1954425 发表于 2010-9-3 11:57:00

mccad发表于2010-9-3 10:40:00static/image/common/back.gif要读对象所在的图层,然后在全部图层中遍历,判断图层名,决定是否要冻结。


<p>非常感谢你的指点,看来我得重新思考了,再次谢谢!</p>

xyp1964 发表于 2010-9-3 13:18:00

(defun C:tt ()
(setvar "cmdecho" 0)
(setq s1 (car (entsel "\n选择不冻结的图层对象: "))
la (cdr (assoc 8 (entget s1)))
)
(COMMAND "LAYER" "s" la "F" "*" "t" la "")
(princ)
)

xhq1954425 发表于 2010-9-3 13:50:00

<p><font face="Verdana"><font face="Verdana" color="#da2549"><b>感谢xyp1964老弟的帮助,非常感谢,谢谢!</b></font></font></p>
<p><font face="Verdana">我原来是把不须要冻结的图层先置这当前,然后用<font face="Verdana">(COMMAND "LAYER" "T" "*"&nbsp; "");图层全部解冻结</font></font></p>
<p>可是在命令行总是出现下面的提示:</p>
<p><font face="Verdana">“无法冻结图层“转三视图”。它是当前图层”</font></p>
<p>我想回避这个提示,想改为选择非当前图层的对象,这样在运行时就不出现多余的提示,在命令行输入-layer时选择对象是没问题的,可是用程序(COMMAND "LAYER" "F" "" ss "" )就不知道怎么写了。</p>
<p>你这个方法我学习了虽然没能解决我的问题,但也是不错的方法,我以后会用到的。再次谢谢你。</p>

lenlenq 发表于 2010-9-3 20:03:00

历遍全图,组成所有图层的列表,删除被选的图层,用foreach循环方式冻结图层

lenlenq 发表于 2010-9-3 20:06:00

写一个取得所有图层的函数<br/>(defun getapl (/ tbl tc apl)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;apl所有图层<br/>&nbsp; (setq tbl (tblnext "layer" t))<br/>&nbsp; (while (/= tbl nil)<br/>&nbsp;&nbsp;&nbsp; (setq tc (cdr (assoc 2 tbl)))<br/>&nbsp;&nbsp;&nbsp; (setq apl (cons tc apl))<br/>&nbsp;&nbsp;&nbsp; (setq tbl (tblnext "layer" nil))<br/>&nbsp; )<br/>&nbsp; (acad_strlsort apl)<br/>)<br/>

jh1005 发表于 2010-9-4 00:05:00

<p>如果是单选的就简单,取得选择对象的图层,切换到这个图层为当前,然后<font style="BACKGROUND-COLOR: #ffffff">(command "-LAYER" "F" "*" "")</font></p>
<p>如果是多选,就要像2楼那样。</p>

xhq1954425 发表于 2010-9-4 07:00:00

<p>谢谢楼上各位的帮助和指点,尤其是对<font face="Verdana" color="#da2549"><b>xyp1964</b></font>和<font face="Verdana" color="#61b713"><b>lenlenq</b></font>两位提供代码的朋友表示敬意!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

dyzf1314 发表于 2010-12-24 10:46:18

回复 xhq1954425 的帖子

这个list 怎么实现在运行TT命令后,支持框选多个图层呢?

或者是我先选择不需要被冻结的图层,然后输入TT命令就实现。 怎么修改呢?
页: [1] 2
查看完整版本: [求助]图层冻结有问题,请求帮助,谢谢!