找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 502|回复: 6

[已解决] 关于cond的结果判断,一直没有结论【已解决】

[复制链接]

已领礼包: 201个

财富等级: 日进斗金

发表于 2020-11-30 15:22:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 a117034423 于 2020-12-2 10:39 编辑

  1. (defun c:dss ()
  2.   (setvar "cmdecho" 0)
  3.   ;拾取函数,拾取板尺寸
  4.   (setq mod0 (vl-remove nil (mapcar  '(lambda (x) (if (= (car x) 10) (cdr x))) (entget (car (entsel "<选择要拾取参数的板:>"))))))
  5.   (setq mod1 (mapcar '(lambda(x)(list (car x)(cadr x) 0.0)) mod0))
  6.   (setq ptmin (apply 'mapcar (cons 'min mod1))) ;拾取点表最小坐标值
  7.   (setq ptmax (apply 'mapcar (cons 'max mod1))) ;拾取点表最大坐标值
  8.   (setq minx1 (car ptmin))
  9.   (setq miny1 (cadr ptmin))
  10.   (setq maxx1 (car ptmax))
  11.   (setq maxy1 (cadr ptmax))
  12.   (setq dxy (mapcar '- ptmax ptmin))
  13.   (setq dx (atof (rtos (car  dxy) 2 0))) ;矩形X向长度
  14.   (setq dy (atof (rtos (cadr dxy) 2 0))) ;矩形Y向长度
  15.   (if (/= (length mod1) (or 4 5))
  16.     (progn
  17.     (setq dbpt1 (xdrx-points-ghull mod1))
  18.     (setq dkpt1 (vl-remove-if '(lambda(x)(vl-position x dbpt1)) mod1))
  19. ))
  20.     (cond
  21.     (XD::Pnt:IsOut (list minx1 miny1 0.0) mod1) (setq dk1 "左下")
  22.     (XD::Pnt:IsOut (list maxx1 miny1 0.0) mod1) (setq dk1 "右下")
  23.     (XD::Pnt:IsOut (list maxx1 maxy1 0.0) mod1) (setq dk1 "右上")
  24.     (XD::Pnt:IsOut (list minx1 maxy1 0.0) mod1) (setq dk1 "左上")
  25.     )   

  26.   (setq str1 (strcat"板X向长度为:" "<" (rtos dx) ">"))
  27.   (setq str2 (strcat"板Y向长度为:" "<" (rtos dy) ">"))
  28.   (print str1)
  29.   (print str2)

XD:PNT:PSOUT

    (cond
    (XD::Pnt:IsOut (list minx1 miny1 0.0) mod1) (setq dk1 "左下")
    (XD::Pnt:IsOut (list maxx1 miny1 0.0) mod1) (setq dk1 "右下")
    (XD::Pnt:IsOut (list maxx1 maxy1 0.0) mod1) (setq dk1 "右上")
    (XD::Pnt:IsOut (list minx1 maxy1 0.0) mod1) (setq dk1 "左上")
    )   
为何此处cond返回值是空 究竟哪里又问啊
关于mapcar的结果判断-1.jpg
我想通过这个cond函数来判断缺角的位置,麻烦各位了


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-11-30 17:59:42 | 显示全部楼层

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2020-11-30 15:59:57 | 显示全部楼层
    (null (vl-remove-if-not  '(lambda(x) (= (list minx1 miny1 0.0) x)) mod1)) (setq dk1 "左下")
    (null (vl-remove-if-not  '(lambda(x) (= (list maxx1 miny1 0.0) x)) mod1)) (setq dk1 "右下")
    (null (vl-remove-if-not  '(lambda(x) (= (list maxx1 maxy1 0.0) x)) mod1)) (setq dk1 "右上")
    (null (vl-remove-if-not  '(lambda(x) (= (list minx1 miny1 0.0) x)) mod1)) (setq dk1 "左上")
这个也不好用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2020-12-1 13:02:17 | 显示全部楼层
  (cond
    (XD::Pnt:IsOut (list minx1 miny1 0.0) mod1) (setq dk1 "左下")
    (XD::Pnt:IsOut (list maxx1 miny1 0.0) mod1) (setq dk1 "右下")
    (XD::Pnt:IsOut (list maxx1 maxy1 0.0) mod1) (setq dk1 "右上")
    (XD::Pnt:IsOut (list minx1 maxy1 0.0) mod1) (setq dk1 "左上")
    )   
为何此处cond返回值是nil 究竟哪里有问题啊

点评

你这样写不对,语法,应该 (cond ((.......) ;;返回T,处理里面 ..... ) ((.....) .... ) )  详情 回复 发表于 2020-12-1 17:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-12-1 17:23:01 | 显示全部楼层
本帖最后由 newer 于 2020-12-1 17:25 编辑
a117034423 发表于 2020-12-1 13:02
(cond
    (XD::Pnt:IsOut (list minx1 miny1 0.0) mod1) (setq dk1 "左下")
    (XD::Pnt:IsOut (list ...

你这样写不对,语法,应该
(cond
  ((.......)  ;;返回T,处理里面
      .....
  )
  ((.....)
     ....
  )
)

(cond
    (   (XD::Pnt:IsOut (list minx1 miny1 0.0) mod1) )
            (setq dk1 "左下")
    )
    (   (XD::Pnt:IsOut (list maxx1 miny1 0.0) mod1))
            (setq dk1 "右下")
    )
    (   (XD::Pnt:IsOut (list maxx1 maxy1 0.0) mod1))
            (setq dk1 "右上")
    )
    (    (XD::Pnt:IsOut (list minx1 maxy1 0.0) mod1))
            (setq dk1 "左上")
    )   
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2020-12-1 18:28:37 | 显示全部楼层
newer 发表于 2020-12-1 17:23
你这样写不对,语法,应该
(cond
  ((.......)  ;;返回T,处理里面

收到,谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2020-12-2 10:34:18 | 显示全部楼层
newer 发表于 2020-12-1 17:23
你这样写不对,语法,应该
(cond
  ((.......)  ;;返回T,处理里面


    (cond
    ((= (length (vl-remove ptmin mod1)) (length mod1)) "左下")
    ((= (length (vl-remove ptmax mod1)) (length mod1)) "右上")
    ((= (length (vl-remove zspnt mod1)) (length mod1)) "左上")
    ((= (length (vl-remove yxpnt mod1)) (length mod1)) "右下")
    )
终于解决了 xd::pnt:isout 这个函数好像有BUG 手册内调用函数的命令 和给的源码是错的
而且测试也是 像我之前问的那种缺角定点是无法判断的
我发了BUG反馈贴
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-23 21:41 , Processed in 0.192972 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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