找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1668|回复: 17

[求助] 求助一个逻辑判断条件的写法

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-5-26 10:32:37 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Lisphk 于 2013-5-26 10:37 编辑

我想实现: 先提示点取第一点作为矩形的左下角,如果回车的话,那么就去选一个图中的多边形(如果没选,程序就退出),如果点第一点了,接着提示的是去窗口右上点。上面这个作为一个判断条件,都有值了,进入执行其他代码,否则就退出程序。选窗口第二点的时候如果回车程序也退出。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 7073个

财富等级: 富甲天下

发表于 2013-5-26 10:44:34 | 显示全部楼层
(cond
((and
    (not (setq pt (getpoint "\n点取第一点: ")))
    (setq ee (entsel "\n选一个图中的多边形: "))
  )
  (princ "\nGo1...")  
)
((setq p2 (getcorner pt "\n点取窗口右上点: "))
  (princ "\nGo2...")
)
)

评分

参与人数 2D豆 +10 收起 理由
xshrimp + 5 及时回复奖!
Lisphk + 5 及时回复奖!

查看全部评分

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-26 10:55:50 | 显示全部楼层
本帖最后由 Lisphk 于 2013-5-26 10:58 编辑
Underway 发表于 2013-5-26 10:44
(cond
((and
    (not (setq pt (getpoint "\n点取第一点: ")))

谢谢,这么快就回复了,好像选多边形了,接着还需要选窗口第二点?
我意思是如果有两点,就这两点组成矩形,如果选了多边形了,就不用两点了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-26 11:00:31 | 显示全部楼层
Underway 发表于 2013-5-26 10:44
(cond
((and
    (not (setq pt (getpoint "\n点取第一点: ")))

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-26 11:36:01 | 显示全部楼层
Underway 发表于 2013-5-26 10:44
(cond
((and
    (not (setq pt (getpoint "\n点取第一点: ")))

还是不对,帮我看看。

如果我第一点也不点,多边形也回车的时候,程序报错

  1. 点取第一点:

  2. 选一个图中的多边形:

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-26 12:05:50 | 显示全部楼层
本帖最后由 Lispboy 于 2013-5-26 12:15 编辑

试试这个,函数GETPOLYBOX是你自己要写的去多边形顶点的函数。

[pcode=lisp,true]
(if (or
      (and
        (setq p1 (getpoint "\n窗口左下角<取多边形>:"))
        (not (setq p2 (getpoint "\n窗口右上角<退出>:")))
        (setq pts (list p1 p2))
      )
      (and
        (setq e (car (entsel "\n拾取多边形<退出>:")))
        (= "LWPOLYLINE" (cdr (assoc 0 (entget e))))
        (setq pts (getpolybox e))
      )
    )
  (progn                               ; PTS是多边形顶点表
  )
  (progn
    (princ "\n退出")                       ; 退出后执行的代码,比如提示
  )
  (princ)
)[/pcode]

如果你窗口右上角不点,也不退出,而是再去想选多边形的话,试试下面的
[pcode=lisp,true]
(if (or
      (and
        (setq p1 (getpoint "\n窗口左下角<取多边形>:"))
        (setq p2 (getpoint "\n窗口右上角<取多边形>:"))
        (setq pts (list p1 p2))
      )
      (and
        (setq e (car (entsel "\n拾取多边形<退出>:")))
        (= "LWPOLYLINE" (cdr (assoc 0 (entget e))))
        (setq pts (getpolybox e))
      )
    )
  (progn                               ; PTS是多边形顶点表
  )
  (progn
    (princ "\n退出")                       ; 退出后执行的代码,比如提示
  )
  (princ)
)[/pcode]

评分

参与人数 1D豆 +5 收起 理由
Lisphk + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

发表于 2013-5-26 12:06:56 | 显示全部楼层
本帖最后由 QiaoCheng 于 2013-5-26 12:09 编辑

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-26 12:16:53 | 显示全部楼层

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-26 12:23:32 | 显示全部楼层
Lispboy 发表于 2013-5-26 12:05
试试这个,函数GETPOLYBOX是你自己要写的去多边形顶点的函数。

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

使用道具 举报

已领礼包: 7073个

财富等级: 富甲天下

发表于 2013-5-26 12:35:34 | 显示全部楼层
...多边形也回车...

(cond
((and
    (not (setq pt (getpoint "\n点取第一点: ")))
    (setq ee (entsel "\n选一个图中的多边形: "))
  )
  (princ "\nGo1...")  
)
(pt
  (setq p2 (getcorner pt "\n点取是去窗口右上点: "))
  (princ "\nGo2...")
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-26 13:01:44 | 显示全部楼层
Lispboy 发表于 2013-5-26 12:16
啥样? 涉嫌灌水哦。

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-26 13:15:16 | 显示全部楼层
Underway 发表于 2013-5-26 12:35
...多边形也回车...

(cond

是啊,为了考虑用户的各种情况嘛。

GO1和GO2能给合并到一个里面不,不管用户是选点了,还是选多边形了,我就是想要得到多边形的点,然后我在一个程序里面执行其他的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-26 13:16:52 | 显示全部楼层
QiaoCheng 发表于 2013-5-26 13:01
不是,刚想发个代码,后来发现错误了,就编辑成“是不是这样”

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

使用道具 举报

已领礼包: 7073个

财富等级: 富甲天下

发表于 2013-5-26 13:25:41 | 显示全部楼层
(or
  (and
    (setq pt (getpoint "\n点取第一点: "))
    (setq p2 (getcorner pt "\n点取是去窗口右上点: "))
   )  ; pt & p2
   (setq ee (entsel "\n选一个图中的多边形: "))  ;
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-26 13:36:15 | 显示全部楼层
Underway 发表于 2013-5-26 13:25
(or
  (and
    (setq pt (getpoint "\n点取第一点: "))

这个和上面LISPBOY老兄的基本一样了,还有其他的写法吗,我在写篇文章,欢迎指导。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 14:32 , Processed in 0.483144 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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