菜卷鱼 发表于 2020-11-28 11:08:49

按块名字过滤选择动态块【目前我自己最快的版本】

本帖最后由 菜卷鱼 于 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:37:12

本帖最后由 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:41:53

本帖最后由 alexmai 于 2021-9-14 13:43 编辑

如果想一次选多个动态块(包括普通块),列表应该怎样写?

(setq ss(SSgetdynblk "块1""x") ;;;   块2+块3+轴号(普通块)+引线+文字

wzg356 发表于 2020-11-28 16:04:43

收集留存,,,,,,,

yoyoho 发表于 2020-11-28 18:04:41

谢谢! 菜卷鱼 分享程序!!!!

songyujie928 发表于 2020-12-2 12:20:12

谢谢! 菜卷鱼 分享程序!

yubfang 发表于 2020-12-3 08:07:11

多谢分享,正需要这类程序

hadessna 发表于 2020-12-3 08:30:21

用不上,我们的图纸里面一张图有五六千个左右的动态块,该卡还是得卡

菜卷鱼 发表于 2020-12-3 17:46:15

hadessna 发表于 2020-12-3 08:30
用不上,我们的图纸里面一张图有五六千个左右的动态块,该卡还是得卡

可以加反应器解决,先生成一个动态块过滤名字符串,用反应器管理字符串,就第一次慢一点

mokson 发表于 2020-12-4 07:58:26

学无止境,学习一下!

失落的白羊座24 发表于 2020-12-4 08:14:40

楼主,命令是什么呀,加载之后

菜卷鱼 发表于 2020-12-4 08:24:09

失落的白羊座24 发表于 2020-12-4 08:14
楼主,命令是什么呀,加载之后

没有命令,直接复制到命令栏使用,是子程序
(SSgetdynblk "块名" "x")
页: [1] 2 3
查看完整版本: 按块名字过滤选择动态块【目前我自己最快的版本】