ddbegg 发表于 2015-8-24 13:52:14

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"    (选多个对象时没问题)

hbgsw 发表于 2015-8-24 14:20:39

((= s0 "d")
应该是类型不对吧, entsel 获得的是图元名。“d”是字符串.划不上等号的啊。

ddbegg 发表于 2015-8-24 14:23:39

hbgsw 发表于 2015-8-24 14:20 static/image/common/back.gif
((= s0 "d")
应该是类型不对吧, entsel 获得的是图元名。“d”是字符串.划不上等号的啊。

为什么选多个对象是又不出错,如何调整下好?

hbgsw 发表于 2015-8-24 14:52:15

最好是看下全部的代码。
(setq s0 (entsel (strcat "\n请选择第 <" (itoa n1) ">" "个对象[选择多个<d>]:")))
这里entsel 在选择的时候输入 d 是没有用的吧。
如果要获取用户输入的字符串,应该是getstring吧,

edata 发表于 2015-8-24 15:17:51

(initget "d")
这样可以在entsel的时候输入关键字,具体的可以去查帮助文件。
至于这个错误,参数类型错误: consp "d"
目前的代码是看不出来的,
也就是说,只有后面的代码调用了 s0 这个变量的地方出现了问题,具体是哪里,只有你自己知道了。

ddbegg 发表于 2015-8-24 15:24:59

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))
)
)

hbgsw 发表于 2015-8-24 15:46:26

(if (= Len 1) (setq name (car s0)) (setq name (ssname a k)))

(car s0)这里的问题
当前面输入了d的时候,s0这里是d ,使用car s0就会出问题了,不是图元名。
单步调试的时候可以看出来的。

ddbegg 发表于 2015-8-24 16:01:38

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]
查看完整版本: ssget 选取单个对象时出错