明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6046|回复: 6

[讨论]有关PickfirstSelectionSet方法的讨论

[复制链接]
发表于 2003-2-18 17:30:00 | 显示全部楼层 |阅读模式
上段时间南兄在找有关先选择后操作的方法,虽然找到了PickfirstSelectionSet这个方法,也写了个函数,但使用起来才发现有些问题,也就是说这个方法根本起不了作用。
原因:
如果写的程序直接在VBA IDE中点击运行项,PickfirstSelectionSet方法是可行,可以做到先选择后操作。
但我们不可能运行VBA程序都这样做,最麻烦的一种就是使用工具菜单->宏对话框来执行程序,但这种方法已经不能使用PickfirstSelectionSet方法了,也就是说PickfirstSelectionSet方法得不到所要的选择集。
通过其它很多方法如:
直接使用命令-VBARUN UnNameGroup.dvb!AddUnNameGroup也不能用先选择后操作方法;
直接用(VL-VBARUN
"UnNameGroup.dvb!AddUnNameGroup")执行也不能用先选择后操作方法;
编个LISP程序来执行该宏也不行。
综合以上问题,PickfirstSelectionSet方法在实际操作中是不能用的。
发表于 2003-2-18 18:13:00 | 显示全部楼层

是否已经(setvar "pickfirst" 0)呢?

 楼主| 发表于 2003-2-18 19:27:00 | 显示全部楼层

你试试链接中的程序,还有用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写程序方便。
有些操作真的要先选择后操作才习惯,就象上面的程序一样。
发表于 2003-2-19 11:30:00 | 显示全部楼层

关键问题是调用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
就可以了!
 楼主| 发表于 2003-2-19 13:10:00 | 显示全部楼层

这个方法倒是不错,以后写VBA程序总是要加上以上的触发事件才行

发表于 2003-2-22 17:42:00 | 显示全部楼层

不会吧,我就行!!

不会吧,我就行!!
发表于 2008-3-26 17:01:00 | 显示全部楼层

可以发个例子上来吧。在用这个PickfirstSelectionSet。没有看明白。

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

本版积分规则

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

GMT+8, 2024-11-26 10:46 , Processed in 0.152718 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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