Richard 007 发表于 2022-7-6 07:46:41

谢谢李!它几乎可以工作了,我不知道为什么它只选择部分整数值的行,而忽略了一些,即使它们有整数值。

Lee Mac 发表于 2022-7-6 07:51:20

 
代码当前使用的容差为1e-8(0.0000000 1),请尝试将其更改为更高的值,例如1e-4(0.0001)。

Richard 007 发表于 2022-7-6 07:53:50

谢谢你,李,非常感谢!它正在工作,但我的文件可能有点奇怪。我将公差更改为1e-4,它选择了更多的行,但有些行无论代码中的公差是多少,它都不会选择。
 
我会设法弄清楚的。
 
再次感谢你们!

Richard 007 发表于 2022-7-6 07:57:28

在AutoCAD中,选择整数值的想法似乎是不合理的,因为逗号后可能有非常小的数字长度。。。
四条线似乎有相同的长度。图纸

Lee Mac 发表于 2022-7-6 07:58:27

 
是的,因此公差
 
由于存储双精度的结构(允许存储非常大和非常小的数字),使用双精度总是需要一定的容差,如果您感兴趣,请阅读本文。
 
但是,我没有考虑距离何时低于整数值,因此请尝试以下操作:
 
(defun c:test ( / d e i r s x )
   (if (setq s
         (ssget "_X"
               (list '(0 . "LINE")
                   (if (= 1 (getvar 'cvport)) (cons 410 (getvar 'ctab)) '(410 . "Model"))
               )
         )
       )
       (repeat (setq i (sslength s))
         (setq e (ssname s (setq i (1- i)))
               x (entget e)
               d (distance (cdr (assoc 10 x)) (cdr (assoc 11 x)))
               r (- d (fix d))
         )
         (if (not (or (equal r 0.0 1e-6) (equal r 1.0 1e-6)))
               (ssdel e s)
         )
       )
   )
   (sssetfirst nil s)
   (princ)
)

Richard 007 发表于 2022-7-6 08:01:44

李-麦克,现在它像魔术一样神奇!非常感谢你!
 
我刚刚将这两个公差都更改为1e-5,它现在选择属性窗口显示整数值的所有行(如果我从代码中删除“not”,则选择非整数)
 
我会阅读链接,谢谢!

Richard 007 发表于 2022-7-6 08:06:33

... 没有,还有问题,但我会尽量保持宽容

Richard 007 发表于 2022-7-6 08:09:25

我不得不将这两个公差都更改为1e-4,之后我再也找不到任何错误的选线,所以这似乎是适合我的设置
 
李,谢谢你的工作

Lee Mac 发表于 2022-7-6 08:14:44

很高兴你把它分类了,理查德,不客气
页: 1 [2]
查看完整版本: 如何使用i过滤掉行