[练习]怎样用简单的方法过滤先选择后操作的选择集?
使用PickfirstSelectionSet属性取得的选择集是先选择后操作的选择集,它的优点是可以按照我们平常操作ACAD的习惯,选定对象后再执行程序。该属性可以点击以下链接查看:
http://www.mjtd.com/object/acad2004/idh_pickfirstselectionset.htm
现在的问题是
该属性取得的选择集不可以带过滤器,怎样用简单的方法使用过滤器筛选其中的对象。 ;;我用LISP來倒亂的,其實改為VBA即可
(SSGET "" '((0 . "LINE"))) 可不可以用,先用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. 该文章,参考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
就可以了!
页:
[1]