lisp在运行过程中显示 'VLIDE 参数太少:问题
(defun C:jqpt()(setq num 0)
(prompt "\n请选择所要剪切的喷头: ")
(setq ss1 (ssget '((0 . "INSERT"))));;;获得多个喷头
(repeat (sslength ss1);;;选择对象的数目进行赋值
(setq ent(ssname ss1 num));;;找到这个第num个对象,并进行循环
(setq num(1+ num))
(if
(and ent
(and (= (cdr (assoc 0 (entget ent)))"INSERT")
(= (cdr (assoc 2 (entget ent)))"喷淋头")
)
)
) ;;;如果第num个对象存在,并且是块,且块名是喷淋头的话进行下面操作
(princ) )
主要程序是这些,但是cad显示,图中红色的区域参数
'VLIDE 参数太少: (IF (AND ENT (AND (= (CDR (ASSOC 0 (ENTGET ENT))) "INSERT") (= (CDR (ASSOC 2 (ENTGET ENT))) "喷淋头")))),
请哪位大神看看程序错在什么地方了,谢谢
本帖最后由 maiko 于 2014-9-2 15:02 编辑
把代码发全 过滤块好像重复了 OK,编码在附件中,请看 熙城故事 发表于 2014-9-2 15:16 static/image/common/back.gif
OK,编码在附件中,请看
没看你代码,我写了个简单的过滤块名的例子,参照改吧(Defun C:tt (/ i s1 ss)
(setq i-1 ss (ssget '((0 . "INSERT"))))
(while (setq s1 (ssname ss (setq i (1+ i))))
(cond
((= (cdr (Assoc 2 (entget s1))) "喷淋头")
(print "选择了喷淋头")
)
((= (cdr (Assoc 2 (entget s1))) "中心线符号")
(print "选择了中心线符号")
)
)
)
(princ)
) 谢谢!!我修改下看看 if函数只有条件表达式,没有thanexpr,也没有elseexpr
		页: 
[1]