明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 782|回复: 5

这是什么原因!

[复制链接]
发表于 2008-9-19 11:25 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-9-19 11:26:45 编辑

     (if(/= c_gd_xs gdgc)
     (progn
     (princ (/= c_gd_xs gdgc))
     (princ "\n")
     (princ c_gd_xs)(princ gdgc)
     (princ "\n")
     ))

上面是一段代码!

执行完却是这样:

T
1.961.96
T
-0.3-0.3
T
-1.89-1.89
T
1.631.63
T
-0.01-0.01

 楼主| 发表于 2008-9-19 11:56 | 显示全部楼层

我那里错了,解释下吧!!

发表于 2008-9-19 11:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-9-19 14:30 | 显示全部楼层

浮点数不要用=、/=进行判断。应该用EQUAL函数进行判断。

上式可写成:

     (if (not (equal c_gd_xs gdgc 1e-6))
     (progn
     (princ (not (equal c_gd_xs gdgc 1e-6))
     (princ "\n")
     (princ c_gd_xs) (princ " ") (princ gdgc)
     (princ "\n")
     ))

 楼主| 发表于 2008-9-19 15:14 | 显示全部楼层

(defun c:xxx()
  (setvar "cmdecho" 0)
  (setq js (ssget "x" (list(cons 2 "FG_*")(cons 8 "*PT"))) n 0 m 0)
  (if js
    (progn
    (repeat (sslength js)   
    (setq   enn           (ssname js n)
            enn1          (entget enn '("*"))
            enn_x         (car (cdr (assoc -3 (entget enn '("*")))))
            exp_num       (cdr (nth  6  enn_x))
            dmgc          (atof(cdr (nth 11  enn_x)))
            ms            (atof(cdr (nth 12  enn_x)))
            c_gd          (atof(cdr (nth 13  enn_x)))
            c_gd_xs       (atof(cdr (nth 14  enn_x)))
            gdgc          (- dmgc ms)
            tt            (strcase(substr exp_num 1 2))
    )

  
   (cond
     ((or(= tt "YS")(= tt "HS")(= tt "WS"))
     (if(/= c_gd_xs gdgc)
     (progn
     (setq enn_y (subst (cons 1000 (rtos gdgc 2 2)) (nth 14 enn_x) enn_x))
     (setq enn1 (subst (cons -3 (list enn_y))(assoc -3 enn1)enn1 ))
     (entmod enn1)
     (setq m (+ m 1))
     (princ (/= c_gd_xs gdgc))
     (princ "\n")
     (princ c_gd_xs)(princ gdgc)
     (princ "\n")
     )
     )
     )
     (T
     (if(/= c_gd gdgc)
     (progn
     (setq enn_y (subst (cons 1000 (rtos gdgc 2 2)) (nth 13 enn_x) enn_x))
     (setq enn1 (subst (cons -3 (list enn_y))(assoc -3 enn1)enn1 ))
     (entmod enn1)
     (setq m (+ m 1))
     (princ exp_num)
     (princ "\n")
    
     )
    
     )
     )
   );end cond 
   (setq n (+ n 1))
   );end repeat
   );end progn 
  (princ "xxxxxxxxxxxxxxxxxx")
  );end if
  (princ (strcat "共有点" (rtos (sslength js) 2 0) "个!共改正错误" (rtos m 2 0) "个!"))
  (command "zoom" "e" "regen")
  (setvar "cmdecho" 1)
  (princ)

)

这是整个代码!liminnet,不好意思了。。。。。

 楼主| 发表于 2008-9-19 15:23 | 显示全部楼层
ZZXXQQ,谢谢了,又学一样,改成EQUAL果然行!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-3 10:47 , Processed in 0.152282 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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