明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2709|回复: 8

[求助]关于vb的选择集出错的问题

[复制链接]
发表于 2009-8-10 22:26:00 | 显示全部楼层 |阅读模式

刚开始学vba,感觉真是寸步难行啊,又只好求助朋友们啦。

代码如下

Private Sub CommandButton2_Click()
Dim sset As AcadSelectionSet
Set sset = ThisDrawing.SelectionSets.Add("a")
sset.SelectOnScreen
Dim entry As AcadEntity
entry = sset.Item(sset.Count + 1)
MsgBox ("this is a" & entry.ObjectName)
End Sub

运行老发生错误,百思不得其解。错误提示见附件。

多谢啦。

发表于 2009-8-10 22:32:00 | 显示全部楼层

没有附件!
entry = sset.Item(sset.Count + 1)
这句有问题。sset.item(?)是从0开始数的。所以它的最大数应该是count-1

 楼主| 发表于 2009-8-10 22:34:00 | 显示全部楼层

不好意思,这里不能传图片吗,那只能描述啦。错误提示如下:

        运行时错误'-7147467259(8004005)':

        方法'add'作用于对象‘iacadselectionsets'时失败

我试了.SelectByPolygon 方法,还是出错。

 楼主| 发表于 2009-8-10 22:38:00 | 显示全部楼层

这么快就有回复啦。原来我这里也错啊。不过我运行时发生的错误是上面那个,麻烦再帮忙解答一下啦

发表于 2009-8-10 22:40:00 | 显示全部楼层

那是因为图中本身已存在同名的选择集了。需要先清除掉,再增加。

可参考http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=228

 楼主| 发表于 2009-8-10 23:26:00 | 显示全部楼层

我改了一下,可是程序运行到红色字体处,仍然出错。显示为:运行时错误-2147467259(80004005),方法SelectOnScreen作用于对象'iacadselectionset'时失败。

Function CreateSelectionSet(Optional SSetName As String = "mjtd") As AcadSelectionSet
    On Error Resume Next
    ThisDrawing.SelectionSets(SSetName).Delete
    Set CreateSelectionSet = ThisDrawing.SelectionSets.Add(SSetName)
End Function
Private Sub CommandButton2_Click()
Dim SSet As AcadSelectionSet
Set SSet = CreateSelectionSet
SSet.SelectOnScreen
Dim entry As AcadEntity
entry = SSet.Item(SSet.Count - 1)
MsgBox ("this is a")
MsgBox (entry.ObjectName)
End Sub

 楼主| 发表于 2009-8-11 00:17:00 | 显示全部楼层

我又写了段代码,还是遇到上面类似的错误。我用的是cad2002,后来在2004下运行,显示的是:运行时错误,autocad主窗口不可见;再点击帮助,提示为:AutoCAD 主窗口不可见。要打开该窗口,请将应用程序对象的可见性特性设置为 acTrue。不知怎么办啦,请求帮助


Private Sub CommandButton2_Click()
Dim returnObj As AcadObject
Dim basePnt As Variant
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object"
End Sub

发表于 2009-8-11 06:46:00 | 显示全部楼层

不好意思,看你标题是VB,下面的内容中注的是VBA程序。先得搞清楚是VB和VBA。按照你上面的写法,应该都在VBA中写的。

在VBA的程序中,如果当前显示对话框时,需要先隐藏对话框才能在屏幕上选择对象。也就是需要写上me.hide。选择完对象后,再用me.show返回对话框。

 楼主| 发表于 2009-8-11 07:13:00 | 显示全部楼层

太感谢啦

原来VB和vba有这么大的区别啊

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

本版积分规则

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

GMT+8, 2024-11-26 02:52 , Processed in 0.177051 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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