здравствуйте.
подскажите, пожалуйста, как дополнить код, чтобы появился обработчик ошибки на клавишу Esc и была возможность завершить цикл без всплывающего окошка?
сам код цикла:
Do While UBound(pp1) > 0
pp2(0) = pp1(0): pp2(1) = pp1(1) - 15 * MyScale: pp2(2) = pp1(2)
Set Line1 = ThisDrawing.ModelSpace.AddLine(pp1, pp2)
'Добавляем мультитекст
insertPoint(0) = pp1(0) - 1.25 * MyScale
insertPoint(1) = pp1(1) - 7.5 * MyScale
insertPoint(2) = 0
width = 2.5 * MyScale
If numberString = 0 Then
textString = "ПК0"
ElseIf numberString Mod 100 = 0 Then
a = CStr(numberString \ 100)
textString = "ПК" + a
Else
textString = CStr(numberString)
End If
' Create a text Object in model space
Set mtextObj = ThisDrawing.ModelSpace.AddMText(insertPoint, width, textString)
mtextObj.Rotation = 3.14 / 2
mtextObj.BackgroundFill = True
mtextObj.AttachmentPoint = acAttachmentPointMiddleCenter
pp1 = ThisDrawing.Utility.GetPoint(, "Укажите точку начала пикетирования (верхнию):")
numberString = numberString + 0.5 * (pp1(0) - pp2(0)) / MyScale
Loop
необходимо чтобы при запросе автокадом очередной точки при нажатии эскейпа цикл завершался без окошка дебага
весь код:
Sub Piket()
Dim pp1 As Variant
Dim pp2(0 To 2) As Double
Dim insertPoint(0 To 2) As Double
Dim ПКначало As Double
Dim mtextObj As AcadMText
Dim width As Double
'Dim textString As Variant
Dim numberString As Double
ПКначало = InputBox("Введите значение начального пикетажа в метрах (разделитель ТОЧКА):")
pp1 = ThisDrawing.Utility.GetPoint(, "Укажите точку начала пикетирования (верхнию):")
textString = 0: numberString = ПКначало
Do While UBound(pp1) > 0
pp2(0) = pp1(0): pp2(1) = pp1(1) - 15 * MyScale: pp2(2) = pp1(2)
Set Line1 = ThisDrawing.ModelSpace.AddLine(pp1, pp2)
'Добавляем мультитекст
insertPoint(0) = pp1(0) - 1.25 * MyScale
insertPoint(1) = pp1(1) - 7.5 * MyScale
insertPoint(2) = 0
width = 2.5 * MyScale
If numberString = 0 Then
textString = "ПК0"
ElseIf numberString Mod 100 = 0 Then
a = CStr(numberString \ 100)
textString = "ПК" + a
Else
textString = CStr(numberString)
End If
' Create a text Object in model space
Set mtextObj = ThisDrawing.ModelSpace.AddMText(insertPoint, width, textString)
mtextObj.Rotation = 3.14 / 2
mtextObj.BackgroundFill = True
mtextObj.AttachmentPoint = acAttachmentPointMiddleCenter
pp1 = ThisDrawing.Utility.GetPoint(, "Укажите точку начала пикетирования (верхнию):")
numberString = numberString + 0.5 * (pp1(0) - pp2(0)) / MyScale
Loop
End Sub