Richard 007 发表于 2022-7-6 07:11:30

如何使用i过滤掉行

有没有办法找到图形中所有长度为整数值的线,如5.0000,而不包括长度为4.9999的线,反之亦然?
 
提前感谢

SLW210 发表于 2022-7-6 07:16:48

QSELECT应该会帮你。

Richard 007 发表于 2022-7-6 07:20:55

我无法想象有了这个工具怎么可能。
 
我有许多不同长度的线条;其中一些具有整数值,一些具有非整数值。我想找出哪些具有长度属性的非整数值,因为这意味着我必须纠正图形中的不精确性。现在我必须手动操作。

SLW210 发表于 2022-7-6 07:23:02

你试过过滤器吗?
 
除此之外,你还需要Lisp程序。

Richard 007 发表于 2022-7-6 07:27:33

过滤器无法解决此问题。
是的,这就是我所希望的,也许有人知道已经编写的LISP代码可以做到这一点,因为我不知道如何编写它。。。
 
但无论如何谢谢你的帮助

SLW210 发表于 2022-7-6 07:29:38

在这种情况下,你应该问在LISP论坛。我把你的线移到那里。
 
你查过李的网站了吗?

Richard 007 发表于 2022-7-6 07:34:07

谢谢,我会查他的网站。。。

Tharwat 发表于 2022-7-6 07:35:31

试试这个。。。
 

(defun c:Test (/ s l ss i sn)
(if (and (setq s (ssadd)
                l (getdist "\n Specify length of lines to highlight :")
          )
          (setq ss (ssget "_x" '((0 . "LINE"))))
   )
   (repeat (setq i (sslength ss))
   (setq sn (ssname ss (setq i (1- i))))
   (if (equal (distance (cdr (assoc 10 (entget sn)))
                        (cdr (assoc 11 (entget sn)))
                )
                l
         )
       (ssadd sn s)
   )
   )
)
(sssetfirst nil s)
(princ)
)

Richard 007 发表于 2022-7-6 07:38:54

谢谢Tharwat,
但是,我们可以选择长度不同但长度属性只有整数值的线吗?
 
你看,你的代码要求特定的长度,但我需要许多不同的长度,但只需要整数值。

Lee Mac 发表于 2022-7-6 07:42:13

我想:
 
(defun c:test ( / e i 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)
         )
         (if (not (equal (rem (distance (cdr (assoc 10 x)) (cdr (assoc 11 x))) 1.0) 0.0 1e-)
               (ssdel e s)
         )
       )
   )
   (sssetfirst nil s)
   (princ)
)
页: [1] 2
查看完整版本: 如何使用i过滤掉行