明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1818|回复: 3

从未遇到的选择集怪现象!

[复制链接]
发表于 2005-5-7 16:05:00 | 显示全部楼层 |阅读模式
几乎对选择集失去信心了。请大家看看如下的奇特现象:
这是一个选择集的很普通的程序段: Dim ssetObj As AcadSelectionSet
On Error Resume Next
If ThisDrawing.SelectionSets.Count <> 0 Then
If Not IsNull(ThisDrawing.SelectionSets.Item("SSS67ET")) Then
Set ssetObj = ThisDrawing.SelectionSets.Item("SSS67ET")
ssetObj.Delete
End If
End If
Set ssetObj = ThisDrawing.SelectionSets.Add("SSS67ET")

Dim mode As Integer
Dim corner1(0 To 2) As Double
Dim corner2(0 To 2) As Double
mode = acSelectionSetWindow
...
(给corner1,corner2都赋了值)

ssetObj.Select mode, corner1, corner2
...
ssetObj.delete 运行时 ,在有些电脑上出现了怪现象:
AutoCAD2004下,用编辑器跟踪 mode 的值始终为0,就是说 mode = acSelectionSetWindow 这行语句无效。
究其原因,发现acSelectionSetWindow=0 ! 难道autocad2004将它作为变量处理? 为了绕过该问题,
ssetObj.Select mode, corner1, corner2
这一行中 mode 直接替换为 "4" 出现了第二个怪现象, 无论corner1,corner2所取的窗口范围有多大,ssetObj中都只有一个 item. 小弟调试了一天 ,几乎对选择集失去信心。请问各位能否指教下,这到底属于什么问题呢?
发表于 2005-5-7 17:53:00 | 显示全部楼层
两个建议,不是很具体,姑且听之:


1.把On Error Resume Next去掉,可能有错误被忽略了。


2.选择集合有时与范围有关


通过这些年对cad的使用,证明选择功能本身没有问题,请坚定信念。
发表于 2005-5-7 18:17:00 | 显示全部楼层
如果在VB中使用,会出现这种问题。可直接用数字代替。
至于哪个数字代表哪些模式,可查看对象模型。
 楼主| 发表于 2005-5-8 09:32:00 | 显示全部楼层
明总,我在帖子中提到 ,已经把 acSelectionSetWindow 改成了 4,还是不行 。


出现了第二个奇怪的问题 。


hangc兄 , 在实践中 发现选择集确实和范围有关。


我现在使用acSelectionSetWindow之前都要先 zoom一下。


很多莫名其妙的小问题都没了 。


但是这个还在 。


已经把 on error resume next去掉,还是不行啊 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 17:52 , Processed in 0.161870 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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