明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1703|回复: 6

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

[复制链接]
发表于 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
发表于 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是否为空,因为有可能第一次时用户就取消操作了。
 楼主| 发表于 2003-11-16 09:03:00 | 显示全部楼层
谢谢!我也试着这样处理,但好像不太完美。不知是否有更好的编程思路?
发表于 2003-11-16 13:35:00 | 显示全部楼层
可以参考一下自定义函数中的GetEntityEx函数,里面有错误处理。应该会有用。
http://www.mjtd.com/function/list.asp?id=311&ordertype=byletter
发表于 2003-11-16 16:00:00 | 显示全部楼层
signllh发表于2003-11-16 9:03:00谢谢!我也试着这样处理,但好像不太完美。不知是否有更好的编程思路?


你学得什么才是最完美的?
其它通过捕获错误来判断是一种最简单最有效的方法。
发表于 2003-11-16 23:41:00 | 显示全部楼层
我现在很多程序也只能通过错误来退出,这个最简单!
发表于 2003-11-17 17:27:00 | 显示全部楼层
同5楼~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 13:45 , Processed in 0.189267 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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