明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6521|回复: 27

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

    [复制链接]
发表于 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


不知道谁秘密地使用着更快的程序






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

应该提供一个dwg测试文件  发表于 2020-11-28 14:52
"觉得好,就打赏"
    共1人打赏
发表于 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)
)


回复 支持 1 反对 0

使用道具 举报

发表于 2021-9-14 13:41:53 | 显示全部楼层
本帖最后由 alexmai 于 2021-9-14 13:43 编辑

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

(setq ss(SSgetdynblk "块1"  "x") ;;;   块2+块3+轴号(普通块)+引线+文字
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-28 18:04:41 | 显示全部楼层
谢谢! 菜卷鱼 分享程序!!!!
发表于 2020-12-2 12:20:12 | 显示全部楼层
谢谢! 菜卷鱼 分享程序!
发表于 2020-12-3 08:07:11 | 显示全部楼层
多谢分享,正需要这类程序
发表于 2020-12-3 08:30:21 | 显示全部楼层
用不上,我们的图纸里面一张图有五六千个左右的动态块,该卡还是得卡
 楼主| 发表于 2020-12-3 17:46:15 | 显示全部楼层
hadessna 发表于 2020-12-3 08:30
用不上,我们的图纸里面一张图有五六千个左右的动态块,该卡还是得卡

可以加反应器解决,先生成一个动态块过滤名字符串,用反应器管理字符串,就第一次慢一点
发表于 2020-12-4 07:58:26 | 显示全部楼层
学无止境,学习一下!

发表于 2020-12-4 08:14:40 | 显示全部楼层
楼主,命令是什么呀,加载之后
 楼主| 发表于 2020-12-4 08:24:09 | 显示全部楼层
失落的白羊座24 发表于 2020-12-4 08:14
楼主,命令是什么呀,加载之后

没有命令,直接复制到命令栏使用,是子程序
(SSgetdynblk "块名" "x")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 04:36 , Processed in 0.194244 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表