找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 714|回复: 12

[求助]:关于选择集问题

[复制链接]

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-1-27 14:32:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我用下列语句建立了一个选择集,
Dim adCurSelSet As AcadSelectionSet
Dim fType(0 To 1) As Integer, fData(0 To 1)

Set adCurSelSet = ThisDrawing.SelectionSets.Add("adcurselset")
If Err Then Set adCurSelSet = ThisDrawing.SelectionSets.Add("adcurselset")
fType(0) = 0: fData(0) = "TEXT"
   fType(1) = 8: fData(1) = "*"
   adCurSelSet.Clear
   adCurSelSet.Select acSelectionSetAll, , , fType, fData
在我第一次运行时没问题,但我退出以后,再次运行时,就出现了问题,说我“命名的选择集已经存在”,
请问如何判别一个命名的选择集是否存在?如已存在,又如何重新构造该选择集?

另:请问如何在一个VBA工程结束时,自动从内存中卸载该工程?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-2-11 09:49:42 | 显示全部楼层
我也遇到过我的解决办法是

  1. Set sset = ThisDrawing.SelectionSets.Add("SS1")
  2. If Err <> 0 Then
  3. Set sset = ThisDrawing.SelectionSets.Item("SS1")
  4. sset.Clear
  5. End If
复制代码

或者在结束的时候sset.delete
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2005-2-11 18:38:56 | 显示全部楼层
那么
              If Err Then Set adCurSelSet = ThisDrawing.SelectionSets.Add("adcurselset")
这句话怎么不起作用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-11 20:13:33 | 显示全部楼层
照理说这句应该也触发错误,导致调试的时候就通不过,为什么这里能通过,还是对vba不了解丫,等待高手解答吧,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-13 10:16:26 | 显示全部楼层
选择集的固定写法:
on error resume next
ThisDrawing.SelectionSets("adcurselset").delete
Set adCurSelSet = ThisDrawing.SelectionSets.Add("adcurselset")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-13 12:51:46 | 显示全部楼层
那是因为没有
On Error Resume Next


最初由 qinchao_qc 发布
[B]那么
              If Err Then Set adCurSelSet = ThisDrawing.SelectionSets.Add("adcurselset")
这句话怎么不起作用? [/B]



选择集用完以后就清空并删除应该养成习惯,创建之前最好再检查一下有没有同名的选择集
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2005-2-16 09:39:56 | 显示全部楼层
我用这样的语句可以通过,
On Error Resume Next
   If Not IsNull(ThisDrawing.SelectionSets.Item("adcurselset")) Then
      Set adCurSelSet = ThisDrawing.SelectionSets.Item("adcurselset")
      adCurSelSet.Delete
   End If
   Set adCurSelSet = ThisDrawing.SelectionSets.Add("adcurselset")
   
5楼的方法可能是可以的,但我没试过,
谢谢各位指教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-16 13:05:08 | 显示全部楼层
5楼的方法是选择集的通常用法,推荐使用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-16 19:27:45 | 显示全部楼层
提供一个更好的办法,累似的,自己琢磨一下改动一下就可:
    Dim sel1 As AcadSelectionSet, sela As AcadSelectionSet
    Dim i As Integer
    Dim num As Integer
    Dim handl As String '句柄
    Dim xx As AcadObject '参照对象
    Dim gpcode(1) As Integer, datavalue(1) As Variant '组码和组码值
    Dim objtype, objlayer, objcolor, objlinetype, objblockname, objtxt, objtxtstyle, objdimstyle As Variant
    Dim x As AcadMText
    Me.Hide
    num = ThisDrawing.SelectionSets.Count
    For i = 0 To num - 1
        Set sel1 = ThisDrawing.SelectionSets.Item(i)
        If sel1.Name = "sel1" Then
            sel1.Delete
        End If
    Next i
    num = ThisDrawing.SelectionSets.Count
    For i = 0 To num - 1
        Set sela = ThisDrawing.SelectionSets.Item(i)
        If sela.Name = "sela" Then
            sela.Delete
        End If
    Next i
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-21 22:50:48 | 显示全部楼层
没看出好在那里,请教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-23 12:48:39 | 显示全部楼层
Dim ssetObj As AcadSelectionSet
'    On Error Resume Next
    Set ssetObj = AcadDoc.SelectionSets("Test") '创建选择集
    If Err Then
        Err.Clear
        Set ssetObj = AcadDoc.SelectionSets.Add("Test")
    End If
    ssetObj.Clear
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-12 22:05:08 | 显示全部楼层
Dim adCurSelSet As AcadSelectionSet
Dim fType(0 To 1) As Integer, fData(0 To 1)

On Error Resume Next
Set adCurSelSet = ThisDrawing.SelectionSets.Add("adcurselset")
If Err Then Set adCurSelSet = ThisDrawing.SelectionSets.Item("adcurselset")
err.clear
fType(0) = 0: fData(0) = "TEXT"
fType(1) = 8: fData(1) = "*"
adCurSelSet.Clear
adCurSelSet.Select acSelectionSetAll, , , fType, fData
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-21 21:35:24 | 显示全部楼层
5楼的方法是选择集的通常用法!我都是这样用咯!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-28 19:21 , Processed in 0.464221 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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