明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10848|回复: 15

[已解答] lsp图层命令请教

[复制链接]
发表于 2013-9-26 12:03 | 显示全部楼层 |阅读模式
(defun c:Slab ( )                                                                 
(command "layer" "on" "*" "")                                                         ;图层全部打开
(command "layer" "on" "REIN,TEXT,板底标注-X,板底标注-Y,板底钢筋-X,板底钢筋-Y,板面标注-X,板面标注-Y,板面钢筋-X,板面钢筋-Y,板说明,板编号" "")                                                                    ;TSSD板默认图层
(command "layer" "off" "次梁-X,次梁-Y,次梁原位-X,次梁原位-Y,连梁X,连梁Y,梁钢筋-X,梁钢筋-Y,梁原位-X,梁原位-Y" "")                                                                                                     ;TSSD梁默认图层

(princ)
)

编了一个很简单的命令,打开全部板层,关闭全部梁层的命令。现在有个问题就是有些图纸没有某个图层的话,会提示
没有找到匹配的图层,然后还要提示:
无效的选项关键字。输入选项
[?/生成(M)/设置(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/打印(P)/冻结(
F)/解冻(T)/锁定(LO)/解锁(U)/状态(A)]:

如何才能忽略那些没有的图层,不显示上面的提示选项呢?
还有就是如何当前图层是某个板的图层的话还会提示是否真的要关闭当前图层,如何取消这个提示直接关闭呢?
解决方法一是改变当前图层为其他图层譬如到0层就不会有上述提示,是否有第二种办法既不改变当前图层又能关闭所需要的图层呢?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-9-26 12:31 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2013-9-26 12:36 编辑

先判断图层是否存在(tblobjname "layer" LAY_NAM)

也可这样
(setvar "nomutt" 1)
(command ....)
(setvar "nomutt" 0)
 楼主| 发表于 2013-9-26 14:33 | 显示全部楼层
本帖最后由 hihand2000 于 2013-9-26 14:41 编辑
自贡黄明儒 发表于 2013-9-26 12:31
先判断图层是否存在(tblobjname "layer" LAY_NAM)

也可这样

判断是可以的,只不过需要判断的图层比较多的时候,语句有点多。一个个图层判断开关有点烦。
关闭了信息显示确实没有了提示,但还有个问题就是当当前图层属于关闭图层中的一个时候,会停住等待输入确认命令。

点评

可用mapcar  发表于 2013-9-26 14:37
发表于 2013-9-26 15:35 | 显示全部楼层
本帖最后由 fl202 于 2013-9-27 09:22 编辑

先判断图层是否存在,不存在的图层是新建图层还是怎样?

把存在的图层建表,foreach或者ctrcat,在layer off即可。
发表于 2013-9-26 15:54 | 显示全部楼层
;;没有的图层,则创建
(mapcar        '(lambda (x)
           (if (tblobjname "Layer" x) nil (command "_.layer" "make" x ""))
         )
        (list "REIN" "TEXT")
)
 楼主| 发表于 2013-9-26 16:34 | 显示全部楼层
fl202 发表于 2013-9-26 15:35
先判断图层是否存在,把存在的图层建表,foreach即可。

能否给个例子?不大懂
发表于 2013-9-26 16:55 | 显示全部楼层
hihand2000 发表于 2013-9-26 16:34
能否给个例子?不大懂

(foreach x (list "REIN" "TEXT")
  (if (tblobjname "Layer" x) nil (command "_.layer" "make" x ""))
)
 楼主| 发表于 2013-9-26 17:45 | 显示全部楼层
自贡黄明儒 发表于 2013-9-26 16:55
(foreach x (list "REIN" "TEXT")
  (if (tblobjname "Layer" x) nil (command "_.layer" "make" x "")) ...

首先灰常感谢楼上的,我明白你们的意思了,就是把没有的图层先建起来。假如不想建图层名,就只能一个个图层判断是否存在然后再进行打开或者关闭的操作了。不过有没有第三种方法能不建图层,减少判断次数然后批量打开或者关闭几个指定图层名并且即使是当前层也无需再次提示确认的?

点评

见二楼  发表于 2013-9-27 07:59
发表于 2013-9-26 17:55 | 显示全部楼层
可以用通配字符,如
次梁*,连梁*
发表于 2013-9-26 20:27 | 显示全部楼层
  1. (defun c:Slab ( )                                                                 
  2. (command "layer" "on" "*" "")             ;图层全部打开
  3. ;既然上一行已经打开了,本行多余(command "layer" "on" "REIN*,TEXT*,板*" "") ;TSSD板默认图层
  4. (command "layer" "off" "*梁*,梁*" "")     ;TSSD梁默认图层
  5. (princ)
  6. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-4 05:31 , Processed in 0.171214 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表