乐筑天下

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

[求助]运行后选择集.count=0该怎么办

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2010-4-11 21:23:00 | 显示全部楼层 |阅读模式
大家好!最近编的程序含选择集的部分如下所示。有两个问题请教高人:
(1)调试过程是用一个正方形和4个孤立点的。case 1的调试过程中,设置了Sset.count为参数,发现一直为0,不知道哪里出错?
(2)case 2运行中,jh_dian.count正常,大方向没问题。但粗线部分该怎么写啊?就是说令Shy=该图元的类型该用何语句?
在此先多谢各位不吝指教了!
Dim Sset As AcadSelectionSet
Dim insPoint As Variant
Dim KeyWord As String
On Error Resume Next
Set Sset = ThisDrawing.SelectionSets.Add("mky")
If Err Then
        Err.Clear
        Set Sset = ThisDrawing.SelectionSets.Item("mky")
        Sset.Clear
End If
'新建空选择集
ThisDrawing.Utility.InitializeUserInput 0, "1 2"
KeyWord = ThisDrawing.Utility.GetKeyword(vbCrLf & "选择选点方式1)在屏幕上直接指点;(2)一次性框选点 ")
If KeyWord = "" Then KeyWord = "1"
Select Case KeyWord
    Case "1"
        Do
            insPoint = ThisDrawing.Utility.GetPoint(, "请在屏幕上指定点(右键退出):")
            If Not (Err.Number = 13 Or Err.Number = -2145320928) Then
                Sset.Add insPoint
            End If
        Loop Until Err.Number = 13 Or Err.Number = -2145320928
        Err.Clear
    Case "2"
        Dim PointOBj As AcadBlockReference
        Dim Point As AcadPoint
        Dim TemPnt(0 To 1) As Double
        Dim jh_dian As AcadSelectionSet
        Call Addselection(jh_dian, "JH_Dian")
        Dim FilterType(6) As Integer
        Dim FilterData(6) As Variant
        Dim layername As String
        layername = ThisDrawing.ActiveLayer.Name
        FilterType(0) = -4
        FilterData(0) = ""
        FilterType(5) = 8
        FilterData(5) = layername
        FilterType(6) = -4
        FilterData(6) = "and>"
        ThisDrawing.Utility.Prompt vbCrLf + "请从屏幕上选取点!" + vbCrLf
        jh_dian.SelectOnScreen FilterType, FilterData
        Dim Sty As String
        Dim i As Long
        For i = 0 To (jh_dian.Count - 1)
        Sty = jh_dian.Item(i).HasExtensionDictionary
            If Sty = "Point" Then
                Set Point = jh_dian.Item(i)
                TemPnt(0) = Point.Coordinates(0)
                TemPnt(1) = Point.Coordinates(1)
            Else
                Set PointOBj = jh_dian.Item(i)
                TemPnt(0) = PointOBj.InsertionPoint(0)
                TemPnt(1) = PointOBj.InsertionPoint(1)
        End If
            Sset.Add TemPnt
        Next
        jh_dian.Delete
End Select
If Sset.Count = 0 Then
       Sset.Delete
       MsgBox "已选取 0 个点,不能生成表格。", vbExclamation
       Exit Sub
End If
ThisDrawing.Utility.Prompt vbCrLf + "命令:你在屏上选定了" & Sset.Count & "个坐标点 " + vbCrLf
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-4-17 17:15:00 | 显示全部楼层
你的过滤器写的有问题,要选择的是什么样实体的?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-1 20:07 , Processed in 1.843674 second(s), 56 queries .

© 2020-2025 乐筑天下

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