按块名字过滤选择动态块【目前我自己最快的版本】
本帖最后由 菜卷鱼 于 2020-11-28 11:15 编辑因为经常用到动态块,过滤选择动态块是很必要的
之前尝试了N个版本,跑起来总是有点延迟停顿,很不舒服
去官方帮助网站学了一下Select Method (ActiveX)
在17M的图档里,总共超过600个动态块,过滤选择接近500个同类型的动态块
我的电脑反应现在只需要0.08秒
命令: (vla-get-count (GETUBLKSSET))
命令: 604
命令: (cttime '((setq ss(SSgetdynblk "rollconv" "x"))) 1)
运行时间:0.08 秒
命令: (sslength ss)
493
不知道谁秘密地使用着更快的程序
本帖最后由 1028695446 于 2021-1-20 16:38 编辑
我今天试了下,你发的代码缺了个 if
源代码如下:
(defun Getublkname (name / namejoin)
(setq namejoin "")
(vlax-for obj (getublksset)
(and
(wcmatch (strcase (vla-get-effectivename obj))
(strcase name)
)
)
(setq namejoin (strcat ",`" (vla-get-name obj) namejoin))
)
(strcat name namejoin)
)
修正如下:
(defun Getublkname (name / namejoin)
(setq namejoin "")
(vlax-for obj (getublksset)
(if(and
(wcmatch (strcase (vla-get-effectivename obj))
(strcase name)
)
)
(setq namejoin (strcat ",`" (vla-get-name obj) namejoin))
)
)
(strcat name namejoin)
)
本帖最后由 alexmai 于 2021-9-14 13:43 编辑
如果想一次选多个动态块(包括普通块),列表应该怎样写?
(setq ss(SSgetdynblk "块1""x") ;;; 块2+块3+轴号(普通块)+引线+文字
收集留存,,,,,,, 谢谢! 菜卷鱼 分享程序!!!! 谢谢! 菜卷鱼 分享程序! 多谢分享,正需要这类程序 用不上,我们的图纸里面一张图有五六千个左右的动态块,该卡还是得卡 hadessna 发表于 2020-12-3 08:30
用不上,我们的图纸里面一张图有五六千个左右的动态块,该卡还是得卡
可以加反应器解决,先生成一个动态块过滤名字符串,用反应器管理字符串,就第一次慢一点 学无止境,学习一下!
楼主,命令是什么呀,加载之后 失落的白羊座24 发表于 2020-12-4 08:14
楼主,命令是什么呀,加载之后
没有命令,直接复制到命令栏使用,是子程序
(SSgetdynblk "块名" "x")