[练习]怎样用简单的方法过滤先选择后操作的选择集?
使用PickfirstSelectionSet属性取得的选择集是先选择后操作的选择集,它的优点是可以按照我们平常操作ACAD的习惯,选定对象后再执行程序。该属性可以点击以下链接查看:
http://www.mjtd.com/object/acad2004/idh_pickfirstselectionset.htm
现在的问题是
该属性取得的选择集不可以带过滤器,怎样用简单的方法使用过滤器筛选其中的对象。 ;;我用LISP來倒亂的,其實改為VBA即可
(SSGET "P" '((0 . "LINE"))) 可不可以用,先用PickfirstSelectionSet属性做一个选择集操作一次,然后用
object.Select acSelectionSetPrevious 来过滤?
<P class=DefConstHead>Previous
<P 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
<P class=DefineText>Selects the most recently created visible objects. 该文章,参考mjtd文章:
如果写的程序直接在VBA IDE中点击运行项,PickfirstSelectionSet方法是可行,可以做到先选择后操作。 <BR> 但我们不可能运行VBA程序都这样做,最麻烦的一种就是使用工具菜单->宏对话框来执行程序,但这种方法已经不能使用PickfirstSelectionSet方法了,也就是说PickfirstSelectionSet方法得不到所要的选择集。 <BR> 通过其它很多方法如: <BR> 直接使用命令-VBARUN UnNameGroup.dvb!AddUnNameGroup也不能用先选择后操作方法; <BR> 直接用(VL-VBARUN "UnNameGroup.dvb!AddUnNameGroup") 执行也不能用先选择后操作方法; <BR> 编个LISP程序来执行该宏也不行。 <BR> 关键问题是调用vba命令 _.vbarun,我们跳过vbarun就行了。
如下:<BR>Private Sub AcadDocument_BeginLisp(ByVal FirstLine As String) <BR>Select Case UCase(FirstLine) <BR> Case "(C:GADD)" <BR> AddUnNameGroup <BR> Case "(C:GDEL)" <BR> MsgBox "gdel" <BR> DelUnNameGroup <BR>End Select <BR>End Sub
(defun c:gadd()(princ)) (defun c:gdel()(princ))
command:gadd <BR> 就可以了!
页:
[1]