[讨论]有关PickfirstSelectionSet方法的讨论
上段时间南兄在找有关先选择后操作的方法,虽然找到了PickfirstSelectionSet这个方法,也写了个函数,但使用起来才发现有些问题,也就是说这个方法根本起不了作用。原因:
如果写的程序直接在VBA IDE中点击运行项,PickfirstSelectionSet方法是可行,可以做到先选择后操作。
但我们不可能运行VBA程序都这样做,最麻烦的一种就是使用工具菜单->宏对话框来执行程序,但这种方法已经不能使用PickfirstSelectionSet方法了,也就是说PickfirstSelectionSet方法得不到所要的选择集。
通过其它很多方法如:
直接使用命令-VBARUN UnNameGroup.dvb!AddUnNameGroup也不能用先选择后操作方法;
直接用(VL-VBARUN
"UnNameGroup.dvb!AddUnNameGroup")执行也不能用先选择后操作方法;
编个LISP程序来执行该宏也不行。
综合以上问题,PickfirstSelectionSet方法在实际操作中是不能用的。
是否已经(setvar "pickfirst" 0)呢?
你试试链接中的程序,还有用LISP做的一个加载程序
http://www.mjtd.com/bbs/dispbbs.asp?BoardID=4&RootID=18691&ID=18700&skin=1前两天写了以上的程序,用了再前几天写的对象选择函数,觉得用PickfirstSelectionSet方法来写程序可以象LISP中的SSGET一样可以先选择后操作,但今天用LISP写了个加载的程序后,才发现以上问题,然后用了许多不同的方法,一直都没有办法解决PickfirstSelectionSet方法原有的功能。
至于你所说的系统变量已经设置了,不能我直接在VBA IDE中点击运行时是没问题的。
如果真的不行的话,则可能真的要在LISP中用SSGET得到选择集后,转换成VBA中的选择集了。这样的话,还不知直接在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
就可以了!
这个方法倒是不错,以后写VBA程序总是要加上以上的触发事件才行
不会吧,我就行!!
不会吧,我就行!! <p>可以发个例子上来吧。在用这个<strong>PickfirstSelectionSet</strong>。没有看明白。</p>
页:
[1]