明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1515|回复: 5

[提问] lisp在运行过程中显示 'VLIDE 参数太少:问题

[复制链接]
发表于 2014-9-2 14:16 | 显示全部楼层 |阅读模式
(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))) "喷淋头")))),

请哪位大神看看程序错在什么地方了,谢谢
发表于 2014-9-2 14:59 | 显示全部楼层
本帖最后由 maiko 于 2014-9-2 15:02 编辑

把代码发全 过滤块好像重复了
 楼主| 发表于 2014-9-2 15:16 | 显示全部楼层
OK,编码在附件中,请看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-9-2 15:20 | 显示全部楼层
熙城故事 发表于 2014-9-2 15:16
OK,编码在附件中,请看

没看你代码,我写了个简单的过滤块名的例子,参照改吧
  1. (Defun C:tt (/ i s1 ss)
  2.   (setq        i  -1 ss (ssget '((0 . "INSERT"))))
  3.   (while (setq s1 (ssname ss (setq i (1+ i))))
  4.     (cond
  5.       ((= (cdr (Assoc 2 (entget s1))) "喷淋头")
  6.        (print "选择了喷淋头")
  7.       )
  8.       ((= (cdr (Assoc 2 (entget s1))) "中心线符号")
  9.        (print "选择了中心线符号")
  10.       )
  11.     )
  12.   )
  13.   (princ)
  14. )
 楼主| 发表于 2014-9-2 15:29 | 显示全部楼层
谢谢!!我修改下看看
发表于 2014-9-2 18:52 | 显示全部楼层
if函数只有条件表达式,没有thanexpr,也没有elseexpr
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 13:33 , Processed in 0.308585 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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