PDuMont 发表于 2022-7-5 15:42:34

图形中的块选择

大家好,
 
有谁能告诉我我错过了什么?
它必须是显而易见的。
图形中有多个块实例,但两个选择集都返回零。
 
(setq blkname (assoc 2 (entget (car (entsel "\nSelect Block: ")))))
(setq sset (ssget "_X" (list '(0 . "INSERT") '(66 . 1) blkname)))
 
 
(setq blkname (LM:effectivename (vlax-ename->vla-object (car (entsel)))))
(setq sset (ssget "_X" (list '(0 . "INSERT") '(66 . 1) (cons 2 blkname))))

;; Effective Block Name-Lee Mac
;; obj - VLA Block Reference object
(defun LM:effectivename ( obj )
   (vlax-get-property obj
       (if (vlax-property-available-p obj 'effectivename)
         'effectivename
         'name
       )
   )
)

Roy_043 发表于 2022-7-5 15:57:03

块名可能包含必须转义的特殊wcmatch字符?

Grrr 发表于 2022-7-5 16:03:49

这些块是:
[列表]
[*]属性
[*]动态
[/列表]

PDuMont 发表于 2022-7-5 16:11:33

 
您好,Grr,是的,在这种情况下,块都是。
我错误地认为这无关紧要
 
所以它需要测试相似的属性,以及属性中的相似值?

PDuMont 发表于 2022-7-5 16:25:23

嗯,tblsearch需要额外的限定符吗?

Grrr 发表于 2022-7-5 16:26:46

 
这一点很重要。
 
 
不,我只是想确保你知道,在ssget过滤器中使用'(66.1),选择将只包含属性块。
 
 
现在,当块是动态的时,当修改时,它们的名称会更改并成为注释性的,例如:*U17、*U62。。甚至有一次我有*T43
假设您已经通过使用Lee的LM:effectivename函数得到了提示。
因此,首先必须在ssget过滤器中使用(cons 2(strcat blkname“,`**”))。
这将选择所有符合名称标准的块,以及所有注释性块(名称如*U17等)。
下一个任务是从选择中删除与effectivename特性标准不匹配的所有块。
若要继续,请检查本教程中有关选择集处理的内容。

PDuMont 发表于 2022-7-5 16:35:20

好极了,你给我指明了正确的方向!
 
非常感谢。

Grrr 发表于 2022-7-5 16:43:19

 
没问题-如果你的尝试仍然不起作用,就把它贴在这里,这样任何人都可以帮助你。
页: [1]
查看完整版本: 图形中的块选择