明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3590|回复: 10

[求助]member函数bug!!!

[复制链接]
发表于 2010-10-29 16:34:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-10-30 10:35:03 编辑

很少写程序,写的比较长,也请各位大侠看看怎么优化代码,提点意见,谢谢。

cad2004,测试图形中Z2部位用白线框的两个柱子“子函数n_tb”中ee返回nil

输入

(setq newlt3 '((800.0 240.0 240.0 600.0 240.0 600.0 320.0 240.0) (240.0 800.0 240.0 240.0 600.0 240.0 600.0 320.0) (320.0 240.0 800.0 240.0 240.0 600.0 240.0 600.0) (600.0 320.0 240.0 800.0 240.0 240.0 600.0 240.0) (240.0 600.0 320.0 240.0 800.0 240.0 240.0 600.0) (600.0 240.0 600.0 320.0 240.0 800.0 240.0 240.0) (240.0 600.0 240.0 600.0 320.0 240.0 800.0 240.0) (240.0 240.0 600.0 240.0 600.0 320.0 240.0 800.0)))
(setq newlt2 '(800.0 240.0 240.0 600.0 240.0 600.0 320.0 240.0))
(setq ee (member newlt2 newlt3))

返回t

明明是一样的表,为何返回值不同呢?

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2010-10-29 17:13:00 | 显示全部楼层

返回t  !?

 

Command: (member newlt2 newlt3)
((800.0 240.0 240.0 600.0 240.0 600.0 320.0 240.0) (240.0 800.0 240.0 240.0
600.0 240.0 600.0 320.0) (320.0 240.0 800.0 240.0 240.0 600.0 240.0 600.0)
(600.0 320.0 240.0 800.0 240.0 240.0 600.0 240.0) (240.0 600.0 320.0 240.0
800.0 240.0 240.0 600.0) (600.0 240.0 600.0 320.0 240.0 800.0 240.0 240.0)
(240.0 600.0 240.0 600.0 320.0 240.0 800.0 240.0) (240.0 240.0 600.0 240.0
600.0 320.0 240.0 800.0))

 

;;<== CAD 2004

 
 楼主| 发表于 2010-10-29 18:06:00 | 显示全部楼层
所谓t即非nil呵呵
 楼主| 发表于 2010-10-30 10:35:00 | 显示全部楼层
还是没有找到问题所在,只有厚颜顶起了
发表于 2010-10-30 11:36:00 | 显示全部楼层

精度問題

處理座標點問題,建議取有效位數再比對

 楼主| 发表于 2010-10-30 11:45:00 | 显示全部楼层

谢谢,,图形是mirror的,应该不存在精度问题,我在程序中加入如下代码

(defun $xdlsp_points_member (pt pts tol / i tf)
  (setq i 0
 tf t
  )
  (while (and
    tf
    (car pts)
  )
    (if (equal pt (car pts1) tol)
      (setq tf nil)
      (setq i (1+ i)
     pts (cdr pts)
      )
    )
  )
  pts
)

又出现 DXF 组不正确: (10 nil nil 0)

发表于 2010-10-30 12:52:00 | 显示全部楼层

我說的精度是

(setq pts (list (atof (rtos (car pts) 2 2))) (atof  (rtos (cadr pts) 2 2))))

或許您會覺得多此一舉,試試何妨

 楼主| 发表于 2010-10-30 13:35:00 | 显示全部楼层
谢谢,但我将其改为(rtos number 2 6)都不行,应该不是精度问题,表newlt3是表newlt6的第一个子表循环组成的,表newlt2是表newlt6的第i个子表,程序执行时认为newlt2不属于newlt3,但单独提取出来的newlt2确实属于newlt3,经反复测试,对于表中含4个元素及6个元素都可以,但8个元素就有问题,具体在测试图中体现的比较清除。
 楼主| 发表于 2010-11-1 10:34:00 | 显示全部楼层
测试晕了,还是没有找到问题所在,只有厚颜顶起了
发表于 2010-11-2 11:17:00 | 显示全部楼层
不明白楼主要说的到底是什么问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 14:27 , Processed in 0.193940 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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