signllh 发表于 2003-11-15 16:30:00

多义线问题,如何结束循环

Public Sub fzpl()
Dim fzpl As AcadPolyline
Dim zbd As Variant
Dim i As Integer
Dim blist() As Variant

i = 0
AppActivate signmap.Caption
Do '用什么条件结束循环,请指教
signmap.ActiveDocument.Utility.InitializeUserInput 128
zbd = signmap.ActiveDocument.Utility.GetPoint(, "下一点:")
ReDim Preserve blist(3 * i + 2)

blist(3 * i) = zbd(0): blist(3 * i + 1) = zbd(1): blist(3 * i + 2) = zbd(2)
i = i + 1
Loop

signmap.ActiveDocument.ModelSpace.AddPolyline blist

End Sub

efan2000 发表于 2003-11-15 19:23:00

加上一个错误处理过程,一般情况下是采用按右键结束,而这时GetPoint会产生错误。
signmap.ActiveDocument.Utility.InitializeUserInput 128
on error resume next
Do
zbd = signmap.ActiveDocument.Utility.GetPoint(, "下一点:")
if err then
    err.clear
    exit do
end if
ReDim Preserve blist(3 * i + 2)
blist(3 * i) = zbd(0): blist(3 * i + 1) = zbd(1): blist(3 * i + 2) = zbd(2)
i = i + 1
Loop
执行完之后,还要判断blist是否为空,因为有可能第一次时用户就取消操作了。

signllh 发表于 2003-11-16 09:03:00

谢谢!我也试着这样处理,但好像不太完美。不知是否有更好的编程思路?

subtlation 发表于 2003-11-16 13:35:00

可以参考一下自定义函数中的GetEntityEx函数,里面有错误处理。应该会有用。
http://www.mjtd.com/function/list.asp?id=311&ordertype=byletter

mccad 发表于 2003-11-16 16:00:00

signllh发表于2003-11-16 9:03:00static/image/common/back.gif谢谢!我也试着这样处理,但好像不太完美。不知是否有更好的编程思路?


你学得什么才是最完美的?
其它通过捕获错误来判断是一种最简单最有效的方法。

myfreemind 发表于 2003-11-16 23:41:00

我现在很多程序也只能通过错误来退出,这个最简单!

今晚打老虎 发表于 2003-11-17 17:27:00

同5楼~~~~
页: [1]
查看完整版本: 多义线问题,如何结束循环