乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 143|回复: 9

SelectOnScreen的问题

[复制链接]

4

主题

20

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 2003-10-29 11:01:00 | 显示全部楼层 |阅读模式
我想把某一图层上的所有entity的加入到我定义的一个选择集中,我该怎么办呢?
我试用了以下语句:
       ssetobj.SelectOnScreen 8, “Layler1”
没成功,提示我有错误:Error#-2147467259 ACADProject方法'SelectOnScreen'作用于对象'IAcadSelectionSet'时失败,这是为什么呢?
回复

使用道具 举报

2

主题

77

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 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
回复

使用道具 举报

2

主题

77

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2003-10-29 11:45:00 | 显示全部楼层
ssetobj.SelectOnScreen 后面的参数是数组变量,否则会出错;
有不少的问题贴子,很多情况下是没有仔细查看对象模型中函数的使用规则.
回复

使用道具 举报

4

主题

20

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 2003-10-29 17:27:00 | 显示全部楼层
还是不行呀,还是作用在IAcadSelectionSetf对象时失败
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-10-29 18:17:00 | 显示全部楼层
程序是正确的,而且在2002及2004中都能正常运行。
你需要看看其它方面的,把你的程序贴出来。
回复

使用道具 举报

4

主题

20

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 2003-10-30 08:55:00 | 显示全部楼层
我用的是ACAD2000,这是不是原因呢?
回复

使用道具 举报

4

主题

20

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 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) = &quotMBJ"
    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]
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 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")这句就发生错误了,后面的当然也都是错的了。
回复

使用道具 举报

4

主题

20

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 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个元素
这是为什么?真的无可救要了吗?
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2003-10-30 18:37:00 | 显示全部楼层
选择时选中的实体有没有出现高亮的状态,选择也跟层的设置状态有关,像冻结之类的可能就不能选择。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 12:15 , Processed in 1.919146 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表