明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5809|回复: 20

SelectOnScreen的问题

  [复制链接]
发表于 2003-10-29 11:01:00 | 显示全部楼层 |阅读模式
我想把某一图层上的所有entity的加入到我定义的一个选择集中,我该怎么办呢?
我试用了以下语句:
       ssetobj.SelectOnScreen 8, “Layler1”
没成功,提示我有错误:Error#-2147467259 ACADProject方法'SelectOnScreen'作用于对象'IAcadSelectionSet'时失败,这是为什么呢?
发表于 2003-10-29 11:38:00 | 显示全部楼层
  1. Sub SelOnScrLayer()
  2.     Dim ssetobj As AcadSelectionSet
  3.     Dim FilterType(0) As Integer
  4.     Dim FilterData(0) As Variant
  5.    
  6.     On Error Resume Next
  7.     Set ssetobj = ThisDrawing.SelectionSets.Add("a")
  8.     If Err Then
  9.         Err.Clear
  10.         Set ssetobj = ThisDrawing.SelectionSets.Item("a")
  11.     End If
  12.     ssetobj.Clear
  13.     FilterType(0) = 8
  14.     FilterData(0) = "Layler1"
  15.     ssetobj.SelectOnScreen FilterType, FilterData
  16.     Debug.Print ssetobj.Count
  17.     Debug.Print ssetobj.Item(0).ObjectName
  18. End Sub
发表于 2003-10-29 11:45:00 | 显示全部楼层
ssetobj.SelectOnScreen 后面的参数是数组变量,否则会出错;
有不少的问题贴子,很多情况下是没有仔细查看对象模型中函数的使用规则.
 楼主| 发表于 2003-10-29 17:27:00 | 显示全部楼层
还是不行呀,还是作用在IAcadSelectionSetf对象时失败
发表于 2003-10-29 18:17:00 | 显示全部楼层
程序是正确的,而且在2002及2004中都能正常运行。
你需要看看其它方面的,把你的程序贴出来。
 楼主| 发表于 2003-10-30 08:55:00 | 显示全部楼层
我用的是ACAD2000,这是不是原因呢?
 楼主| 发表于 2003-10-30 09:00:00 | 显示全部楼层
这是我程序中用到SelectOnScreen的那一段:

If (nPaperType = 3) Then

    Dim ssetobj As AcadSelectionSet '设置选择对象
  Set ssetobj = ThisDrawing.SelectionSets.Add("pmbj_SSET")
    ssetobj.Clear
 
    MsgBox "ssetobj的名字是:" & ssetobj.Name
    MsgBox "当前图层是:" & ThisDrawing.ActiveLayer.Name'当前图层就是PMBJ
    Dim stype(0) As Integer
    Dim sdata(0) As Variant
    stype(0) = 8
    sdata(0) = "MBJ"
    ssetobj.SelectOnScreen stype, sdata'当程序执行到这儿时,就提示出错:作用失败,无法再继续下去,why???

    ssetobj.Update
    point1(0) = BaseX + constLeftWidth
    point1(1) = BaseY - constTopLen
    Dim entry As AcadEntity
 For Each entry In ssetobj
   entry.Color = 5
   entry.Rotate point1, 1.5707962 '旋转90度
  entry.Update
    Next entry

End If




[em00][em00]
发表于 2003-10-30 11:44:00 | 显示全部楼层
dim ssetobj as acadselectionset '设置选择对象
set ssetobj = thisdrawing.selectionsets.add("pmbj_sset")
ssetobj.clear
 
之前有没有使用 On Error Resume Next,因为不能创建同名的选择集,所以如果名称为pmbj_sset的选择集已经存在。那么set ssetobj = thisdrawing.selectionsets.add("pmbj_sset")这句就发生错误了,后面的当然也都是错的了。
 楼主| 发表于 2003-10-30 16:32:00 | 显示全部楼层
我也用版主zeng29的方法做过,也就是在调用方法selectonscreen之前,加了下面这段语句:
On Error Resume Next
    Set ssetobj = ThisDrawing.SelectionSets.Add("pmbj_SSET")
    If Err Then
        Err.Clear
        Set ssetobj = ThisDrawing.SelectionSets.Item("pmbj_SSET")
    End If
结果我用ssetobj.count一测试,ssetobj.count=0也就是说选择集中有0个元素
这是为什么?真的无可救要了吗?
发表于 2003-10-30 18:37:00 | 显示全部楼层
选择时选中的实体有没有出现高亮的状态,选择也跟层的设置状态有关,像冻结之类的可能就不能选择。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 12:41 , Processed in 0.179099 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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