明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2234|回复: 11

[求助]為何出現錯誤?

  [复制链接]
发表于 2004-9-6 22:13:00 | 显示全部楼层 |阅读模式
请大大帮忙看看,为何出现这样的错误讯息:损坏的引数类型: stringp nil 如果要将下列程序改为可复选,应如何修正? (defun c:gt( / ent lname)
(setvar "cmdecho" 0)
(setq counter 0)
(setq ent (entsel "\n选择要关闭的图层: "))
(if ent
(progn
(setq e (ssname ss counter))
(setq ent (entget (car ent)))
(setq lname (cdr (assoc 8 (entget e))))
)
(setq lname (getstring "\n未选取,请输入图层名: "))
) ;if ent
(if (= (getvar "clayer") lname)
(setvar "clayer" "0")
)
(command "layer" "off" lname "")
(setq counter (+ counter 1))
(prompt (strcat "\n\t保留..." "\"" l "层" "\""))
(princ)
)
发表于 2004-9-7 08:26:00 | 显示全部楼层
(setq counter 0)
(setq e (ssname ss counter)) 错误!
发表于 2004-9-7 08:34:00 | 显示全部楼层
这个程序有很多错误的地方呢. (defun c:gt( / ent lname)
(setvar "cmdecho" 0)
(setq counter "0")
(setq ent (entsel "\n选择要关闭的图层:"))
(if ent
(progn
(setq ent (entget (car ent)))
(setq lname (CDR (ASSOC 8 ent)))
)
(setq lname (getstring "\n未未选取,请输入图层名: "))
) ;if ent
(if (= (getvar "clayer") lname)
(setvar "clayer" "0")
)
(command ".layer" "off" lname "")
(princ)
)
发表于 2004-9-7 08:37:00 | 显示全部楼层
楼上的提示错误的那句是多余的,而不是错误.


不知道楼主怎么运行过去的,竟然能到后面的一个错误地方?


(prompt (strcat "\n\t保留..." "\"" l "层" "\""))


这里的变量l从头到尾没有赋过值,导致楼主的错误提示
 楼主| 发表于 2004-9-7 13:06:00 | 显示全部楼层
请问如何能复选?
发表于 2004-9-7 13:34:00 | 显示全部楼层
使用ssget函数选择
 楼主| 发表于 2004-9-7 20:55:00 | 显示全部楼层
我知道错在那了,谢谢大大,但请问大大,该如何强制关闭当前层?即使我选中的物件为当前层!(不是跳到o层哦),拜託各位大大囉!
发表于 2004-9-7 21:07:00 | 显示全部楼层
(command "layer" "off" (getvar "clayer") "Y" "")
发表于 2004-9-7 23:56:00 | 显示全部楼层
(defun c:gt (/ ent lname)
(setvar "cmdecho" 0)
(prompt "\n选择要关闭的图层:")
(setq ss (ssget))
(setq counter 0)
(repeat (sslength ss)
(setq ent (ssname ss counter))
(setq lname (cdr (assoc 8 (entget ent))))
(if (= (getvar "clayer") lname)
(command "_.layer" "off" lname "Y" "")
(command "_.layer" "off" lname "")
)
(setq counter (+ counter 1))
)
(princ)
)
发表于 2004-9-8 08:20:00 | 显示全部楼层
ljs026发表于2004-9-7 20:55:00我知道错在那了,谢谢大大,但请问大大,该如何强制关闭当前层?即使我选中的物件为当前层!(不是跳到o层哦),拜託各位大大囉!

把你程序中的这句去掉就可以了,因为当前层是可以关闭的,不需要强制,跟关闭其它层一样 (if (= (getvar "clayer") lname)
(setvar "clayer" "0")
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 17:21 , Processed in 0.214867 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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