ssget 选取单个对象时出错
请高手帮忙解决,如下:(setq s0 (entsel (strcat "\n请选择第 <" (itoa n1) ">" "个对象[选择多个<d>]:")))
(while (= s0 nil)
(setq s0 (entsel (strcat "\n请选择第 <" (itoa n1) ">" "个对象[选择多个<d>]:")))
)
(cond
((= s0 "d") (setq a (ssget) len (sslength a) ))
(T (setq len 1))
)
当我ssget 只选个1个对象时,错误: 参数类型错误: consp "d" (选多个对象时没问题)
((= s0 "d")
应该是类型不对吧, entsel 获得的是图元名。“d”是字符串.划不上等号的啊。 hbgsw 发表于 2015-8-24 14:20 static/image/common/back.gif
((= s0 "d")
应该是类型不对吧, entsel 获得的是图元名。“d”是字符串.划不上等号的啊。
为什么选多个对象是又不出错,如何调整下好? 最好是看下全部的代码。
(setq s0 (entsel (strcat "\n请选择第 <" (itoa n1) ">" "个对象[选择多个<d>]:")))
这里entsel 在选择的时候输入 d 是没有用的吧。
如果要获取用户输入的字符串,应该是getstring吧, (initget "d")
这样可以在entsel的时候输入关键字,具体的可以去查帮助文件。
至于这个错误,参数类型错误: consp "d"
目前的代码是看不出来的,
也就是说,只有后面的代码调用了 s0 这个变量的地方出现了问题,具体是哪里,只有你自己知道了。
edata 发表于 2015-8-24 15:17 static/image/common/back.gif
(initget "d")
这样可以在entsel的时候输入关键字,具体的可以去查帮助文件。
至于这个错误,参数类型错误 ...劳驾帮我看下,TKS
(defun c:ttt ()
(if (not (setq n1 (getint "\n请输入编号 <1>:")))
(setq n1 1)
)
(while (= count nil)
(initget "d")
(setq zmj 0)
(setq mj 0)
(setq k 0)
(setq a nil)
(setq s0 nil)
(setq s0 (entsel (strcat "\n请选择第 <" (itoa n1) ">" "个对象[选择多个<d>]:")))
(while (= s0 nil)
(setq s0 (entsel (strcat "\n请选择第 <" (itoa n1) ">" "个对象[选择多个<d>]:")))
)
(cond
((= s0 "d") (setq a (ssget) Len (sslength a)))
(T (setq Len 1))
)
(repeat Len
(if (= Len 1) (setq name (car s0)) (setq name (ssname a k)))
(setq ent1 (entget name))
(setq na (assoc 0 ent1))
(setq na (cdr na))
(if (= na "LWPOLYLINE")
(progn
(command "area" "o" name)
(setq mj (getvar "area"))
(setq zmj (+ zmj mj))
)
)
(setq k (+ k 1))
)
(princ zmj)
(setq n1 (+ n1 1))
)
) (if (= Len 1) (setq name (car s0)) (setq name (ssname a k)))
(car s0)这里的问题
当前面输入了d的时候,s0这里是d ,使用car s0就会出问题了,不是图元名。
单步调试的时候可以看出来的。 hbgsw 发表于 2015-8-24 15:46 static/image/common/back.gif
(if (= Len 1) (setq name (car s0)) (setq name (ssname a k)))
(car s0)这里的问题
感谢,问题已解决
页:
[1]