找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 537|回复: 6

[已解决] 过滤器及快速选择深度应用求助(已解决)

[复制链接]

已领礼包: 7个

财富等级: 恭喜发财

发表于 2018-2-26 10:29:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 digouyou 于 2018-2-26 13:19 编辑

各位大牛,大家好。在画图的时候有时候为了筛选有特殊参数或属性的图形有两种方式如下图:过滤器和快速选择。
过滤器.png 快速选择.png
vlisp程序中可以通过command命令来进行调用:
命令调用qselect.png 过滤器调用.png
但是这种调用,只能弹出类似上面插图的话框,无法将一些属性及要求添加进去

比如说:以上例子中的快速选择,想在整个图形中选取块,块的名称为abc。但是实际执行后只能弹出对话框,相应的属性及其他并没有改变。如下图:




现在有编程需要:在一个图元较多的图形中,快速搜索到名称为TKA[0-4]正则匹配的插入的块,并将返回的结果设为一个选择集,且此过程中不能弹出对话框,全部按照预设的参数在后台执行。

现在是通过一个效率比较低(low)的代码实现,搜索的时间过长代码如下:

(defunsearch_tukuang( / myacad mydoc myms n myblock tuyuan tuxing_list tuyuan_leixintuyuan_leituming tuyuan_leixin)
               (setqmyacad(vlax-get-acad-object))
                   (setq mydoc(vla-get-ActiveDocumentmyacad))
                   (setq myms(vla-get-ModelSpacemydoc))
                   (setq n 0)
                   (repeat (vla-get-count myms)
                            (setqmyblock(vla-item myms n))
                            (setqtuyuan(vlax-vla-object->ename myblock))
                            (setqtuxing_list(entget tuyuan))
                            (setqtuyuan_leixin(cdr(assoc 0 tuxing_list)))
                            (setqtuyuan_leituming(cdr(assoc 2 tuxing_list)))
                            (if (= tuyuan_leixin"INSERT" )
                                     (progn
                                         (if(wcmatch tuyuan_leituming"TKA[0-4]\(*\)*")
                                              (setq tukuang_zuobiao(cons (cdr(assoc 10tuxing_list)) tukuang_zuobiao))
                                              (princ)
                                         )         
                                     )
                                   (progn
                                             (princ)
                                     )
                            )
                        (setqn(+ n 1))
                     )
         )

现在希望通过fi或者qselect来实现,效率比较高一些。
搜索了不少的资料,发现有一种方式为:sendkeys方法操作内置命令窗体
其中提供了源代码如下:

示例2:
操作qselect内置窗体代替qselect 命令快速选择0层所有图元
(defun c:test()
(Vlax-Invoke-Method (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument)'SendCommand (car (list "Qselect "
(Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell") 'Sendkeys "%p{DOWN}{Enter}"))))
)

在vlisp编辑器中测试的时候可以使用,但是不知道其中的原理,不知道怎么改写。现求助有经验的各位。如果可以的话尽量提供源码,多添加一些例子,感激不尽。[sell=50]如果能完美解决,豆不够的话,可微信我,小红包伺候。[/sell]

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-2-26 10:46:50 | 显示全部楼层
最好还是自己写代码,使用命令效率可不一定高
直接 (ssget "x" '((2 . "块名")))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-2-26 10:48:40 | 显示全部楼层
参考下这个 ,自己写ODCL对话框

http://bbs.xdcad.net/thread-668256-1-1.html


                               
登录/注册后可看大图

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

 楼主| 发表于 2018-2-26 11:29:32 | 显示全部楼层

非常的感谢您的答复,ssget x这种选择集怎么进行传参。(setq blockname "123")    (ssget  "x"   '((2 . blockname))  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

 楼主| 发表于 2018-2-26 11:36:53 | 显示全部楼层

实在感谢,原来可以用正则匹配的方式的来选择,真是很感谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-2-26 11:39:21 | 显示全部楼层

(setq blkname "abc")
(setq ss (ssget "x" (list (cons 2 blkname))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

 楼主| 发表于 2018-2-26 13:21:54 | 显示全部楼层

感激不尽。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-19 14:03 , Processed in 0.213170 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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