jcoon 发表于 2011-8-24 09:36:33

esc键结束循环?

我有一个简单的sta/off多行文字标签测试,我可以#039;t似乎可以通过转义键或空格键重新加载表单。测试标签从路线中选择了拾取的点。我能做的事't get to work是如何点击escape键或scape栏退出循环并重新加载表单,以便我可以从另一条路线标记新点
有没有人有链接显示我如何点击esc键或空格键来结束循环;显示表格;ve#039;如果Chr(vbKeyEscape)=27,则
&039;此图纸。SendCommand“;ESC“&vbCr;退出Do;用户窗体1.Show;如果结束,谢谢John Coon&nbsp
basePnt=ThisDrawing.Utility。GetPoint(,“选择要标记的位置:”)
对齐。点位置basePnt(0)、basePnt(1)、testStax、testStay对齐。StationOffset basePnt(0)、BasePnt1、StatValue、OffValue&nbsp&nbsp&nbsp
strOFF=格式(OffValue,strFormat)
strStation=o对齐。GetStationStringWithEquations(StaValue)
&nbsp
strText="STA:&(车站)&引用;\P“_
&nbsp&nbsp&nbsp&nbsp&nbsp&amp&引用;关闭:“0”&(斯特罗夫)&引用;\P“_
如果StaValue&lt&燃气轮机;0,然后设置mtxtLabel=ThisDrawing.ModelSpace。AddMText(basePnt、dblWidth、strText)
mtxtLabel。高度=dblHeight。旋转=dblRot,如果mtxtLabel,则结束。更新&nbsp&nbsp&nbsp

回路

Matt__W 发表于 2011-8-24 09:50:40

也许这样的事情会让你朝着正确的方向前进…Public Sub GetPointLoop()
    Dim SomePoint As Variant
   
    On Error Resume Next
    Do
      SomePoint = ThisDrawing.Utility.GetPoint(, "Select a point...")
      If Err.Number0 Then
            Exit Do
      Else
            ThisDrawing.Utility.Prompt "Do something here..."
      End If
    Loop
   
    MsgBox "Show form"
End Sub

jcoon 发表于 2011-8-24 10:33:37

马特,谢谢你的帮助&nbsp
如果我添加if Err。编号(&lt)&燃气轮机;然后为0&nbsp&nbsp&nbsp&nbsp 退出Do如果它标记了一个标签,则结束,然后重新加载表单,然后它标记了尽可能多的拾取位置,但从未退出循环而不崩溃
约翰

jcoon 发表于 2011-8-24 10:46:19

您还可以使用GetAsyncKeyStatehttp://www.theswamp.org/index.php?topic=9301.msg119833#msg119833http://www.theswamp.org/index.php?topic=26302.msg317417#msg317417http://www.theswamp.org/index.php?topic=18104.msg219595#msg219595。。。

Matt__W 发表于 2011-8-24 11:09:19

本人'我看看能否合并Matt#039;s或jgr#039;s post
只看jgr's我想这可能有一段时间不适合我了,谢谢大家,约翰

jcoon 发表于 2011-8-24 11:43:17


Option Explicit
Dim SomePoint As Variant
Public Sub GetPointLoop()
    On Error Resume Next
    Do
      SomePoint = ThisDrawing.Utility.GetPoint(, "Select a point...")
      If Err.Number0 Then
            Exit Do
      Else
            AddText
      End If
    Loop
   
    MsgBox "Show form"
End Sub
Private Sub AddText()
    Dim ptEN(0 To 2) As Double
    Dim objText As AcadText
   
    ptEN(0) = SomePoint(0)
    ptEN(1) = SomePoint(1)
    ptEN(2) = 0
   
    Set objText = ThisDrawing.ModelSpace.AddText("THIS IS A TEST", ptEN, "12")
    objText.Update
End Sub

jcoon 发表于 2011-8-24 11:56:56

马特,
好的……我想我是从这篇帖子上读到的 有趣的是……我发现了一个旧的land桌面例程,它与C3D做了基本相同的事情,并且工作正常,它所拥有的只是错误的GoTo Bye
I'我将更改为添加上一篇文章的格式
谢谢你的帮助
约翰;old land desktop 出错时转到Bye;Do Dim varDataPnt1作为变体;varDataPnt1=ThisDrawing.Utility。GetPoint(提示:=vbCrLf“选择要标记的下一个点:”)
;objAlign。统计偏移varDataPnt1(0)、varDataPnt1(1)、dblSta、dblOff、dblDir

 strStaFormat=&quot#0.00“
 strOffFormat=&quot#0.00“
 strSta=左(格式(dblSta,strStaFormat),Len(格式(dblSta,strStaFormat))-5)&nbsp&nbsp&nbsp&nbsp&nbsp&amp&引用+&引用&右(格式(dblSta,strStaFormat),5)&nbsp
 如果dblOff>然后为0&nbsp strOff=格式(dblOff,strOffFormat)&amp&引用' RT“
 其他&nbsp strOff=右(格式(dblOff,strOffFormat),(Len(格式(dblOff,strOffFormat))-1))\u&nbsp&nbsp&nbsp&amp&引用' LT&quot
 如果结束&nbsp&nbsp
 strText="STA:&(strSta)和&引用;\P“_
&nbsp&nbsp&nbsp&nbsp&nbsp&amp&引用;关闭:“0”&(斯特罗夫)&引用;\P“_
&nbsp
 设置mtxtLabel=ThisDrawing.ModelSpace。AddMText(varDataPnt1、dblWidth、strText) mtxtLabel。高度=dblHeight mtxtLabel。旋转=dblRot mtxtLabel。更新循环,再见:显示

Matt__W 发表于 2011-8-30 16:33:45

我能够添加一些来自马特的信息;s post to work with my small例程。我调整了一个现有的简单的x,y标签例程,该例程运行良好,在右键单击或esc上生成了一个错误,并按我的意愿重新加载了表单,但我仍然无法't使civil 3D对齐例程在出现错误时esc到用户窗体,而不会使图形崩溃。今天早上从飓风中回来工作后,我又看了一遍
I添加
如果StaValue=0,则转到Bye(再见),如果结束,则产生错误,因为所选位置不在对齐范围内,它会像我需要的那样重新加载表单。谢谢你的帮助,Matt W
页: [1]
查看完整版本: esc键结束循环?