Autocad在2006增加了新的动态块功能,方便了对块的动态修改,但是修改动态块后,块名会变成一个匿名块,导致无法通过块名来快速过滤。

明经论坛上有人通过全选块后再来遍历筛选,我通过研究简化了这个问题。采用同时改过的和没改过的块,减少了选择对象的数量,甚至可以说是直接过滤块名的效果。

方法就是在过滤块名的增加一个匿名块的功能。

(ssget '((2 . "`*U*,图框")))

  这样可以同时过滤到 图框和修改后的动态图框,这时候我们再来遍历验证一下选择的块是否正确,再来筛选一下,如果图中没有什么匿名块,几乎和过滤块名是一样的。

再此基础之上,可以再更进一步,预先获取该块名的所有动态块的匿名名称,加入到当前选择过滤名称表中。这样就会比较精准的过滤到指定块名的对象,下面是个简单的例子.

(vl-load-com)
(defun c:tt(/ BLKNAME EN ENT LST OBJ SS SS2 TMPBLKNAME TMPOBJ)
(if(setq ent(car(entsel "\n请选择需要过滤的参考图块: ")))
(progn
(setq obj(vlax-ename->vla-object ent))
;;先获取参考块的真实块名
(setq blkName(vla-get-EffectiveName obj))
;;如果是动态块执行添加动态块的匿名块名进行过滤
(if (= (vla-get-IsDynamicBlock obj) :vlax-true)
(progn
;;全选所有匿名块
(if (setq ss(ssget "x" '((0 . "insert")(2 . "`*U*"))))
(progn
(setq lst '())
;;循环判定匿名块的块名是否是参考块的块名
(while (setq en(ssname ss 0))
(setq Tmpobj(vlax-ename->vla-object en))
(setq TmpblkName(vla-get-EffectiveName Tmpobj))
(if (= TmpblkName blkName)
(progn
;;添加到lst表中
(setq lst (cons (vla-get-Name Tmpobj) lst))
)
)
(ssdel en ss)
)
;;反转表,可省略
(setq lst(reverse lst))
(if lst
(progn
;;将匿名块的块名表连接为一个字符串,并处理*问题.
(setq blkName(strcat (apply 'strcat (mapcar '(lambda(x)(strcat "`" x ",")) lst)) blkName))
)
)
)
)
)
)
;;执行过滤选择
(setq ss2(ssget (list '(0 . "insert") (cons 2 blkName))))
(if (and ss2 (= 0 (getvar "cmdactive"))) (command "._select" ss2 "" "._pselect" ss2 ""))
)
)
)

  

后记:感谢LTools 指出的一个错误,2019-4-3 15:01:10。

[原创]ssget过滤动态块的方式的更多相关文章

  1. cad开发动态块对应的界面

    为了使设计人员更加容易的操作动态块, 应经可能对动态块的制作制定相关的规范, 如动态块的属性 => 类的属性 动态块操作名称(作为变量名,后台数据库的字段) 动态块操作描述  (作为注释,后台数 ...

  2. Java EE开发平台随手记5——Mybatis动态代理接口方式的原生用法

    为了说明后续的Mybatis扩展,插播一篇广告,先来简要说明一下Mybatis的一种原生用法,不过先声明:下面说的只是Mybatis的其中一种用法,如需要更深入了解Mybatis,请参考官方文档,或者 ...

  3. C#主要支持 5 种动态创建对象的方式

    C#主要支持 5 种动态创建对象的方式: 1. Type.InvokeMember 2. ContructorInfo.Invoke 3. Activator.CreateInstance(Type) ...

  4. Cglib动态代理实现方式

    Cglib动态代理实现方式 我们先通过一个demo看一下Cglib是如何实现动态代理的. 首先定义个服务类,有两个方法并且其中一个方法用final来修饰. public class PersonSer ...

  5. iOS 播放gif动态图的方式探讨

    原文链接:http://my.oschina.net/u/2340880/blog/608560 摘要iOS中没有现成的接口来展示gif动态图,但可以通过其他的方式来处理gif图的展示.iOS中播放g ...

  6. 按“块”的方式写dom以及代码注释

    前言 首先这个文档中主要记述了自己在编写html代码时如何构建良好的dom结构的一些所思所想,在这一部分主要说明按“块”构建dom结构的思路.同时在这篇文档中也记述了自己对代码注释的理解,在这一部分主 ...

  7. Java动态代理实现方式一

    Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理 实现方式一:静态代理 静态代理方式的优点 静态代理方式的缺点 Java动态代理实现方式一:InvocationHandler Ja ...

  8. 基于Vue的工作流项目模块中,使用动态组件的方式统一呈现不同表单数据的处理方式

    在基于Vue的工作流项目模块中,我们在查看表单明细的时候,需要包含公用表单信息,特定表单信息两部分内容.前者表单数据可以统一呈现,而后者则是不同业务的表单数据不同.为了实现更好的维护性,把它们分开作为 ...

  9. C#动态创建Xml-LinQ方式

    C#创建Xml-LinQ方式 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...

随机推荐

  1. 【树莓派】iptables相关配置

    关于iptables的配置,参见官方资料:http://wiki.ubuntu.org.cn/IptablesHowTo 最好. 进入iptables # sudo iptables -L 列出目前的 ...

  2. Ef+T4模板实现代码快速生成器

    转载请注明地址:http://www.cnblogs.com/cainiaodage/p/4953601.html 效果如图,demo(点击demo可下载案例) 项目结构如图 T4BLL添加BLL.t ...

  3. Markdowm入门

    今天介绍一种非常好用的小巧性标记语言--Markdown,熟悉它的语法规则,这将会节省你很多编辑文本文档格式的时间,提高你的工作效率和学习效率. 一.什么是Markdown Markdown是一种可以 ...

  4. HTML 部分常用属性、组成属性|...超链接、路径、锚点、列表、滚动、URL编码、表格、表单、GET和POST

    URL地址 就是我们所说的网址:www.jd.com 浏览器内核,渲染引擎 Ie内核:triteent 谷歌/欧鹏:blink 火狐:gecko 苹果:webkit 渲染引擎是出现兼容性的根本问题 - ...

  5. Chrome 开发工具 Workspace 使用

    前端开发中我们经常要在浏览器中做一些细节调整,比如对 CSS 的微调,最快的方式当然是直接在 Chrome 的开发者工具中调整,但问题在于在控制台中调试好的数值我们还需要再在 CSS 源码中再写一次, ...

  6. 树莓派Raspberry实践笔记-简单方法安装minicom

    [原创链接]:http://www.cnblogs.com/atsats/p/6665566.html 本文结合最新的Raspbain jessie,使用图形化的方式安装一款软件:串口调试工具mini ...

  7. Android Studio查找功能(搜索功能)及快捷键

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.在当前窗口查找文本[Ctrl+F] F3                  向下查找关键字出现位置 Shift+F3        向上一个关 ...

  8. ElasticSearch查询 第五篇:布尔查询

    布尔查询是最常用的组合查询,不仅将多个查询条件组合在一起,并且将查询的结果和结果的评分组合在一起.当查询条件是多个表达式的组合时,布尔查询非常有用,实际上,布尔查询把多个子查询组合(combine)成 ...

  9. 请不要把‘通知的观察者注册’放在-viewWillAppear:中

    接手项目二次开发的吐槽: 接手别人的代码的悲哀之一就是,我反复的把流程走了一遍又一遍,却始终无法发现原来是这个问题. 之前这个人把通知的观察者注册放在了-viewWillAppear:中,导致,我发送 ...

  10. git clone时出现 error:inflate:data stream error(incorrect data check)

    git clone时出现 error:inflate:data stream error(incorrect data check) fatal:serrious inflate inconsiste ...