各位大神看下如何过滤选择块名中含有 灯 这个字的块
输入tt,提示选择范围,框选范围后,选中快名中含有灯 这个字的块,在命令栏提示选中了几个,最好能生成一段文字可以插入cad,比如选中了5个含灯的块插入cad:lolliuhe 发表于 2023-5-7 17:43
这哥们的图纸的块就没有一个是灯命名的,不知道是什么系统导出来的
大哥你双击看下,好像在属性里面 (defun c:tt(/ p s)
(if (ssget ":S" '((0 . "insert")(2 . "$equip$*")))
(progn
(vlax-for e (vla-get-activeselectionset (vla-get-ActiveDocument (vlax-get-acad-object)))
(if (vla-Get-HasAttributes e)
(foreach x
(vlax-safearray->list (vlax-variant-value (vla-GetAttributes e)))
(if (and (= "A" (vla-Get-TagString x))
(wcmatch (vla-Get-TextString x)"*灯*")
)
(setq s (cons e s))
)
)
)
)
(if (ands (setq s (mapcar '(lambda(x)(vlax-get x 'insertionpoint)) s))
(setq p (getpoint"\n大力出奇迹..."))
)
(progn
(command "text" p 350 0 (strcat "选中了"(itoa (length s))"个含灯的块"))
(foreach x s (command "line" "non" x "non" p ""))
)
)
)
)
)
(defun c:tt ()
"统计块名称含灯的块"
(if (setq ss (ssget "x" '((0 . "INSERT") (66 . 1))))
(progn
(setq lst(vl-remove-if-not'(lambda (x) (setq a (mapcar 'last (xyp-Att2list x))) (vl-some '(lambda (x) (vl-string-search "灯" x)) a))(xyp-Ss2List ss)))
(princ (strcat "\n一共选择了< " (itoa (length lst)) " >个块名称含灯的块"))
)
)
(princ)
)
本帖最后由 kucha007 于 2023-5-7 17:02 编辑
基础的东西建议自己摸索一下,以下是参考:
(if (setq SS (ssget (list '(0 . "INSERT") (cons 2 "*灯*"))))
(progn
(princ (strcat "\n※一共选择了<" (rtos (sslength SS)) ">个块名称含灯的块"))
(princ)
)
)
本帖最后由 664571221 于 2023-5-7 17:12 编辑
kucha007 发表于 2023-5-7 17:01
基础的东西建议自己摸索一下,以下是参考:
大神我图纸发上来你看下
这哥们的图纸的块就没有一个是灯命名的,不知道是什么系统导出来的 664571221 发表于 2023-5-7 17:52
大哥你双击看下,好像在属性里面
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=90917&highlight=%CD%B3%BC%C6%BF%E9
这个亲测可用 本帖最后由 kucha007 于 2023-5-7 18:37 编辑
试试这个,检查块内属性的标记是否有"灯"字,如果有则计数
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=187763&fromuid=7329538
小菜选择易可以搞定
一共选择了<24>个块名称含灯的块 kucha007 发表于 2023-5-7 18:30
试试这个,检查块内属性的标记是否有"灯"字,如果有则计数
http://bbs.mjtd.com/forum.php?mod=viewthre ...
大神可以数出来了,是否可以吧文字插入cad呢
页:
[1]
2