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 
basePnt=ThisDrawing.Utility。GetPoint(,“选择要标记的位置:”)
对齐。点位置basePnt(0)、basePnt(1)、testStax、testStay对齐。StationOffset basePnt(0)、BasePnt1、StatValue、OffValue   
strOFF=格式(OffValue,strFormat)
strStation=o对齐。GetStationStringWithEquations(StaValue)
 
strText=";STA:&;(车站)&引用;\P“_
     &&引用;关闭:“0”&;(斯特罗夫)&引用;\P“_
如果StaValue<&燃气轮机;0,然后设置mtxtLabel=ThisDrawing.ModelSpace。AddMText(basePnt、dblWidth、strText)
mtxtLabel。高度=dblHeight。旋转=dblRot,如果mtxtLabel,则结束。更新   
回路
也许这样的事情会让你朝着正确的方向前进…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
马特,谢谢你的帮助 
如果我添加if Err。编号(<)&燃气轮机;然后为0     ;退出Do如果它标记了一个标签,则结束,然后重新加载表单,然后它标记了尽可能多的拾取位置,但从未退出循环而不崩溃
约翰 您还可以使用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#039;s或jgr#039;s post
只看jgr';s我想这可能有一段时间不适合我了,谢谢大家,约翰
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 马特,
好的……我想我是从这篇帖子上读到的 ;有趣的是……我发现了一个旧的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="#0.00“
 ;strOffFormat="#0.00“
 ;strSta=左(格式(dblSta,strStaFormat),Len(格式(dblSta,strStaFormat))-5)     &&引用+&引用&;右(格式(dblSta,strStaFormat),5) 
 ;如果dblOff>;然后为0  ;strOff=格式(dblOff,strOffFormat)&&引用' RT“
 ;其他  ;strOff=右(格式(dblOff,strOffFormat),(Len(格式(dblOff,strOffFormat))-1))\u   &&引用' LT"
 ;如果结束  
 ;strText=";STA:&;(strSta)和&引用;\P“_
     &&引用;关闭:“0”&;(斯特罗夫)&引用;\P“_
 
 ;设置mtxtLabel=ThisDrawing.ModelSpace。AddMText(varDataPnt1、dblWidth、strText) ;mtxtLabel。高度=dblHeight ;mtxtLabel。旋转=dblRot ;mtxtLabel。更新循环,再见:显示 我能够添加一些来自马特的信息;s post to work with my small例程。我调整了一个现有的简单的x,y标签例程,该例程运行良好,在右键单击或esc上生成了一个错误,并按我的意愿重新加载了表单,但我仍然无法';t使civil 3D对齐例程在出现错误时esc到用户窗体,而不会使图形崩溃。今天早上从飓风中回来工作后,我又看了一遍
I添加
如果StaValue=0,则转到Bye(再见),如果结束,则产生错误,因为所选位置不在对齐范围内,它会像我需要的那样重新加载表单。谢谢你的帮助,Matt W
页:
[1]