乐筑天下

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

选择集遍历问题,运行不了求解释。

[复制链接]

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2012-6-4 08:48:00 | 显示全部楼层 |阅读模式
Sub test()
Dim sset As AcadSelectionSet
Dim fType(0) As Integer
Dim fData(0) As Variant
Dim mj As String
Dim element As AcadEntity
Dim dd As Variant

On Error Resume Next
If Not IsNull(ThisDrawing.SelectionSets.Item("example")) Then
   Set sset = ThisDrawing.SelectionSets.Item("example")
   sset.Delete
End If
Set sset = ThisDrawing.SelectionSets.Add("example")
fType(0) = 8
fData(0) = "test"
sset.Select acSelectionSetAll, , , fType, fData
Dim ptArrsX() As Double                '建立一个动态数组
ReDim ptArrsX((UBound(element.Coordinates) + 1) / 2 - 1)
Dim j As Integer
For Each element In sset
  For j = 0 To ((UBound(element.Coordinates) + 1) / 2 - 1)
  ptArrsX(j) = element.Coordinates(2 * j)   '用ptArrsX储存每个坐标的X值
  Next j
  dd = ptArrsX()
mj = element.Area
MsgBox mj & "," & dd(0)
Next
End Sub
上面的代码运行不了,请教高手指出错误在哪!
回复

使用道具 举报

0

主题

6

帖子

2

银币

初来乍到

Rank: 1

铜币
6
发表于 2012-6-6 07:21:00 | 显示全部楼层
你要调试看是什么问题啊
回复

使用道具 举报

0

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
2
发表于 2012-9-27 13:04:00 | 显示全部楼层
Dim ptArrsX() As Double                '建立一个动态数组
ReDim ptArrsX((UBound(element.Coordinates) + 1) / 2 - 1)  这句出错
没有给 element 赋值
修改下 应该是这样
Sub test()
Dim sset As AcadSelectionSet
Dim fType(0) As Integer
Dim fData(0) As Variant
Dim mj As String
Dim element As AcadEntity
Dim dd As Variant
On Error Resume Next
If Not IsNull(ThisDrawing.SelectionSets.Item("example")) Then
   Set sset = ThisDrawing.SelectionSets.Item("example")
   sset.Delete
End If
Set sset = ThisDrawing.SelectionSets.Add("example")
fType(0) = 8
fData(0) = "test"
sset.Select acSelectionSetAll, , , fType, fData
dim SSNum as integer
ssnum = sset.number
Dim ptArrsX() As Double                '建立一个动态数组
ReDim ptArrsX(1 to ssnum,10)
Dim j As Integer,k As Integer
For Each element In sset
  k =0
  For j = 0 To ((UBound(element.Coordinates) + 1) / 2 - 1) step 2
          ptArrsX(j,k) = element.Coordinates(j)   '用ptArrsX储存每个坐标的X值
          k=k+1
  Next j
  dd = ptArrsX()
mj = element.Area
MsgBox mj & "," & dd(0)
Next
End Sub
说明一下 数组 ReDim ptArrsX((UBound(element.Coordinates) + 1) / 2 - 1)
的 第二维 定义成这样是错误的 你的本意应该是 根据获取的实体 多义线 多段线之内的
的坐标点个数 来确定数组个数   建议先定义个最大值 避免出错
上面的代码没有调试 你试下
回复

使用道具 举报

0

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
16
发表于 2012-10-3 23:19:00 | 显示全部楼层
我记得element.Coordinates好像不能直接利用(印象中)
上次我先将element.Coordinates丢给varCoord再利用他来作运算...

dim varCord as variant
varCord=element.Coordinates
.......
回复

使用道具 举报

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2012-10-29 00:13:00 | 显示全部楼层
四楼正解,谢了。前段时间忙,好久没逛乐筑天下了,谢谢大家的解答哈。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-29 23:11 , Processed in 1.577100 second(s), 63 queries .

© 2020-2025 乐筑天下

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