找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 756|回复: 4

[求助] [求助]:帮我看看这段程序,为什么结果不一样

[复制链接]
发表于 2003-6-11 17:48:51 | 显示全部楼层 |阅读模式

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

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

×
(defun c:test (/ ent1 ent2 pt11 pt12 pt21 pt22 ang1 ang2
            )
  (prompt "选择第一条线")
  (setq ent1 (entget (car (entsel))))
  (prompt "选择第二条线")
  ;;;取得两条线段的三个点
  (setq ent2 (entget (car (entsel))))
  (setq pt11 (cdr (assoc 10 ent1)))
  (setq pt12 (cdr (assoc 11 ent1)))
  (setq pt21 (cdr (assoc 10 ent2)))
  ;;;判断三个点是否在一条直线上
  (setq ang1 (angle pt11 pt21))
  (setq ang2 (angle pt12 pt21))
  (princ "\nang1=:")
  (princ ang1)
  (princ "\nang2=:")
  (princ ang2)
  (if (= ANG1 ANG2)
    (princ "\nOK")       ;;;在一条直线上打印"OK"
    (princ "\nERROR")       ;;;不在一条直线上打印"ERROR"
  )
  (princ)
)


在图上画一条LINE,然后beark成两条线段,执行TEST程序,发现点取线段的次序不一样,结果不一样。比如说先点左边的线段,后点右边的线段,显示"OK",先点右边的线段,再点左边的线段,显示"ERROR"。为什么?角度一样啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-6-11 19:12:45 | 显示全部楼层
线的起终点方向不一样?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-11 21:26:42 | 显示全部楼层
无论PT11、PT12是直线的哪个点,和另一条直线的任一端点的角度应该是一样的啊,而且打印出来的数据也是一样的,即ANG1=ANG2。但是即使ANG1=ANG2,执行IF语句后结果也不一样。为什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-11 21:54:25 | 显示全部楼层
先右后左时,ANG1,ANG2的值为pi,
不要用=,建议使用eq or equal
两次计算出来的p可能有微小的误差

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

使用道具 举报

 楼主| 发表于 2003-6-11 22:42:49 | 显示全部楼层
是误差问题。我将(if (= ANG1 ANG2)改成(if (equal ANG1 ANG2 0.0000001),原来显示ERROR的情况也显示OK了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 20:45 , Processed in 0.402267 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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