明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1748|回复: 3

[练习]怎样用简单的方法过滤先选择后操作的选择集?

[复制链接]
发表于 2004-1-10 13:10:00 | 显示全部楼层 |阅读模式
使用PickfirstSelectionSet属性取得的选择集是先选择后操作的选择集,它的优点是可以按照我们平常操作ACAD的习惯,选定对象后再执行程序。
该属性可以点击以下链接查看:
http://www.mjtd.com/object/acad2004/idh_pickfirstselectionset.htm
现在的问题是

该属性取得的选择集不可以带过滤器,怎样用简单的方法使用过滤器筛选其中的对象。
发表于 2004-1-10 15:17:00 | 显示全部楼层
;;我用LISP來倒亂的,其實改為VBA即可
(SSGET "" '((0 . "LINE")))
发表于 2004-2-2 08:59:00 | 显示全部楼层
可不可以用,先用PickfirstSelectionSet属性做一个选择集操作一次,然后用


object.Select acSelectionSetPrevious 来过滤?


< class=DefConstHead>revious
< class=DefineText>Selects the most recent selection set. This mode is ignored if you switch between paper space and model space and attempt to use the selection set.


Last


< class=DefineText>Selects the most recently created visible objects.
发表于 2004-7-28 12:21:00 | 显示全部楼层
该文章,参考mjtd文章: 如果写的程序直接在VBA IDE中点击运行项,PickfirstSelectionSet方法是可行,可以做到先选择后操作。
但我们不可能运行VBA程序都这样做,最麻烦的一种就是使用工具菜单->宏对话框来执行程序,但这种方法已经不能使用PickfirstSelectionSet方法了,也就是说PickfirstSelectionSet方法得不到所要的选择集。
通过其它很多方法如:
直接使用命令-VBARUN UnNameGroup.dvb!AddUnNameGroup也不能用先选择后操作方法;
直接用(VL-VBARUN "UnNameGroup.dvb!AddUnNameGroup") 执行也不能用先选择后操作方法;
编个LISP程序来执行该宏也不行。
关键问题是调用vba命令 _.vbarun,我们跳过vbarun就行了。 如下:
Private Sub AcadDocument_BeginLisp(ByVal FirstLine As String)
Select Case UCase(FirstLine)
Case "(C:GADD)"
AddUnNameGroup
Case "(C:GDEL)"
MsgBox "gdel"
DelUnNameGroup
End Select
End Sub (defun c:gadd()(princ)) (defun c:gdel()(princ)) command:gadd
就可以了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 02:54 , Processed in 0.160000 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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