明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3309|回复: 14

用vba保存图形中所有直线坐标时的问题

  [复制链接]
发表于 2004-4-22 21:01:00 | 显示全部楼层 |阅读模式
是这样的,我的目的是用二维数组保存图形中所有直线的起点终点坐标。比如有10条直线
那我弄个10*4的数组
每行中前两个保存每条线的起点坐标,后两个保存
终点坐标。 程序在下面,程序太烂了,555。请高手帮忙看看啦。好郁闷 Private Sub CommandButton1_Click()
Dim myss As AcadSelectionSet
Set myss = ThisDrawing.SelectionSets.Add("125555553")
Dim llll As AcadLine
Dim gpcode(0) As Integer
Dim datavalue(0) As Variant
Dim linecount, i, j, q As Integer
Dim stpt, enpt As Variant
gpcode(0) = 0
datavalue(0) = "line"
myss.Select acSelectionSetAll, , , gpcode, datavalue
ReDim lineco(myss.count - 1, 3) As Variant
i = 0
For Each lll In myss
For j = 0 To 1
lineco(i, j) = lll.StartPoint(0)
lineco(i, j + 1) = lll.StartPoint(1)
Next
For q = 2 To 3
lineco(i, q) = lll.EndPoint(0)
lineco(i, q + 1) = lll.EndPoint(1)
Next
i = i + 1
Next
myss.Delete
End Sub
发表于 2004-4-22 21:42:00 | 显示全部楼层
Dim llll As AcadLine
For Each lll In myss
声明的和使用的变量名称不一致。
发表于 2004-4-22 22:05:00 | 显示全部楼层
lineco(i, j) = lll.StartPoint(0)
lineco(i, j + 1) = lll.StartPoint(1)
不能直接引用StartPoint 必须先定义 dim vst as variant vst=lll.StartPoint vst=lineco(i, j)
发表于 2004-4-22 22:09:00 | 显示全部楼层
2楼发现的问题应该是笔误,一运行就可以发现


3楼发现的问题很关键,不能直接取insertionpoint(0),要先pnt=insertionpoint ,然后x=pnt(0)
发表于 2004-4-22 22:14:00 | 显示全部楼层
bluemoon发表于2004-4-22 22:05:00lineco(i, j) = lll.StartPoint(0) lineco(i, j + 1) = lll.StartPoint(1)不能直接引用StartPoint 必须先定义 dim vst as variant vst=ll...

没有这回事,我从来都是这么干的
发表于 2004-4-22 22:20:00 | 显示全部楼层
lll.StartPoint(0)
这种用法分两种情况,一种是lll确定了对象类型,如上例的为AcadLine,可以这样使用,而另一种是不确定类型,比如lll为Object,则必须先保存到一个Variant类型的变量中,再检索其中的数据。 dim vst as variant vst=lll.StartPoint lineco(i, j)=vst
发表于 2004-4-22 22:26:00 | 显示全部楼层
选择集必须要通过其它变量取得点坐标.


5楼能不能发个你直接取点坐标的代码?
发表于 2004-4-22 22:28:00 | 显示全部楼层
算了,不用猜谜了,实际是这里:


ReDim lineco(myss.count - 1, 3) As Variant


多维数组只能改变最后一维
 楼主| 发表于 2004-4-23 15:51:00 | 显示全部楼层
呵呵,现在程序可以了 是 llll --lll 的问题 还有像lzh741206说的,startpoint可以直接用的 不过有一点,就是用ReDim直接定义数组前面的好象可以改前面的
发表于 2004-4-23 16:34:00 | 显示全部楼层
是我搞错了,哈哈,我想到Preserve 关键字上去了 如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。例如,如果数组就是一维的,则可以重定义该维的大小,因为它是最末维,也是仅有的一维。不过,如果数组是二维或更多维时,则只有改变其最末维才能同时仍保留数组中的内容。下面的示例介绍了如何在为已有的动态数组增加其最末维大小的同时而不清除其中所含的任何数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-22 05:22 , Processed in 0.176873 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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