Ahankhah 发表于 2022-7-6 08:53:22

ssget“minsert”

大家好,
是否可以过滤选择集以仅包含minserted块?
如果是,如何?
 
感谢所有花时间找到问题答案的人。

Tharwat 发表于 2022-7-6 09:07:38

我的方法。。
 

(defun c:TesT (/ ss i sset mins)
;;;=== Tharwat 24. Sep. 2011 ===;;;
(if (setq ss (ssget "_x" '((0 . "INSERT"))))
   (progn
   (repeat (setq i (sslength ss))
       (setq sset (ssname ss (setq i (1- i))))
       (setq mins (vl-remove-if-not
                  (function (lambda (x)
                              (eq (car x) 100)
                              )
                  )
                  (entget sset)
                  )
       )
       (if (not (member (cdr (cadr mins)) '("AcDbMInsertBlock")))
         (ssdel sset ss)
       )
   )
   )
   (princ)
)
(princ)
(alert (strcat "Number of Minsert Blocks >> :"
                ""
                " <"
                ""
                (itoa (sslength ss))
                ""
                "> "
                ""
                "Nos."
      )
)
(princ)
)

 
塔瓦特

Ahankhah 发表于 2022-7-6 09:12:14

谢谢Tharwat,
你的代码很好,但难道不能像这样在一行中过滤minserted对象吗?
(setq ss (ssget "_x" '((0 . "INSERT")(100 . "AcDbMInsertBlock"))))
 
我知道这不对,但有点像。。。

Tharwat 发表于 2022-7-6 09:19:43

 
 
事实上,这是我第一次尝试的,但它确实选择了所有块,根本没有考虑到只过滤minserts。

Lee Mac 发表于 2022-7-6 09:30:15

(ssget "_X" '((0 . "INSERT") (-4 . ">") (70 . 0)))

David Bethel 发表于 2022-7-6 09:32:01

如果100过滤器不工作(我认为它应该工作),那么我认为您将测试所有行/列值:

(ssget "_X" '((0 . "INSERT")
             (-4 . "<OR")
               (-4 . ">")
                (44 . 0)
               (-4 . ">")
                (45 . 0)
               (-4 . ">")
                (70 . 0)
               (-4 . ">")
                (71 . 0)
             (-4 . "OR>")))

 
-大卫

Ahankhah 发表于 2022-7-6 09:40:57

李,你和你出色的即兴表演:奥。
非常感谢:D。

Ahankhah 发表于 2022-7-6 09:51:31

大卫,
非常感谢您展示“entget”ing“INSERT”和“MINSERT”之间所有可能的差异。

Lee Mac 发表于 2022-7-6 09:59:35

 
谢谢阿汉哈
页: [1]
查看完整版本: ssget“minsert”