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 这是一个正确的方向-
(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)
)
李,我运行了这个,我得到的只是文本窗口中的一串“nil”。这是应该发生的吗?
格雷格 格雷格·格里森我很困惑?你是说区块名吗?
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)
)
块描述是块定义的一部分。尝试创建一个新块,并查看选项的右下角。 作品很好,李现在我已经添加了一些评论。每天学习新的东西。
不确定VL中的等价物是什么,它可能是一个属性而不是get。
以下是VL示例:
这就是我所说的描述。我希望能够提取描述值并检查它,以决定是否将其包含在选择中。
https://www.cadtutor.net/forum/attachment.php?attachmentid=63537&cid=1&stc=1
希望这有意义。
格雷格
现在是这样。。。 好吧,我必须承认,到目前为止,我对这些评论感到迷茫,因为我(在这一点上)没有足够的深度来理解代码。
看起来我的做法不对,或者至少效率不高。
有人能推荐一个地方开始了解我想要完成什么吗?
我想在解决问题的同时提高我的理解力。
格雷格
页:
[1]
2