GregGleason 发表于 2022-7-5 15:27:37

SSGET-块,然后搜索Des

我有一个区块的SSGET,选择有效。然后,我想对每个块描述进行通配符搜索。然后我想保留带有“AAA”、“BBB”和“CCC”描述的块,并从选择中排除其他块。
 
一旦我有了选择,我想将选择更改为另一层。
 
以下是我目前掌握的情况:
 
(defun c:Test ( / in ss en de myco)
(setq myco 0)
(if (setq in -1 ss (ssget "_C" '(7.244 2.071) '(16.665 10.003) '((0 . "INSERT") (8 . "FTG-Iso"))))
   (while (setq en (ssname ss (setq in (1+ in))))
   (progn
       (setq myco (+1 myco))
       (princ (strcat "\n                      " (rtos myco 2 0) ". Hey!"))
       (setq de (entget en description))
       ; (princ (strcat "\n                            "de))
       {Exclude entities that do not have valid strings in description}
   )
   )
)
(sssetfirst nil ss)
(princ)
)Greg

Lee Mac 发表于 2022-7-5 15:32:39

这是一个正确的方向-
(defun c:test ( / i s )
   (if (setq s (ssget "_C" '(7.244 2.071) '(16.665 10.003) '((0 . "INSERT") (8 . "FTG-Iso"))))
       (repeat (setq i (sslength s))
         (print (cdr (assoc 4 (entget (tblobjname "block" (cdr (assoc 2 (entget (ssname s (setq i (1- i)))))))))))
       )
   )
   (princ)
)

GregGleason 发表于 2022-7-5 15:35:27

 
李,我运行了这个,我得到的只是文本窗口中的一串“nil”。这是应该发生的吗?
 
格雷格

BIGAL 发表于 2022-7-5 15:40:20

格雷格·格里森我很困惑?你是说区块名吗?
 
lee ?
(entget (tblobjname "block" (cdr (assoc 2 (entget (car (entsel)))))))
is ok
returns nil no (assoc 4

 

(setq s (ssget "_C" '(7.244 2.071) '(16.665 10.003) '((0 . "INSERT") (8 . "FTG-Iso"))))
(repeat (setq x (sslength s))
(setq obj (vlax-ename->vla-object (ssname s (setq x (- x 1)))))
(princ "\n")
(princ (vla-get-name obj))
; put a cond here check for aaa bb ccc and change obj layer
; (vla-put-layer obj newlay)
)

ronjonp 发表于 2022-7-5 15:43:12

块描述是块定义的一部分。尝试创建一个新块,并查看选项的右下角。

BIGAL 发表于 2022-7-5 15:46:21

作品很好,李现在我已经添加了一些评论。每天学习新的东西。
 
不确定VL中的等价物是什么,它可能是一个属性而不是get。

ronjonp 发表于 2022-7-5 15:48:31

 
以下是VL示例:

GregGleason 发表于 2022-7-5 15:51:10

 
这就是我所说的描述。我希望能够提取描述值并检查它,以决定是否将其包含在选择中。
 
https://www.cadtutor.net/forum/attachment.php?attachmentid=63537&cid=1&stc=1
 
希望这有意义。
 
格雷格

ronjonp 发表于 2022-7-5 15:55:21

 
现在是这样。。。

GregGleason 发表于 2022-7-5 15:59:00

好吧,我必须承认,到目前为止,我对这些评论感到迷茫,因为我(在这一点上)没有足够的深度来理解代码。
 
看起来我的做法不对,或者至少效率不高。
 
有人能推荐一个地方开始了解我想要完成什么吗?
 
我想在解决问题的同时提高我的理解力。
 
格雷格
页: [1] 2
查看完整版本: SSGET-块,然后搜索Des