Как получить последовательный ввод точек в VBA
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить последовательный ввод точек в VBA

Как получить последовательный ввод точек в VBA

Ответ
Поиск в этой теме
Непрочитано 17.02.2013, 02:01 #1
Как получить последовательный ввод точек в VBA
Sevas1
 
Регистрация: 17.02.2013
Сообщений: 3

Здравствуйте, я только начинаю разбираться в VBA, касающегося Autocad.

Возникла такая необходимость, чтобы пользователь мог выбрать ряд точек последователь . Без известного изначально количества .
Что типа такого . Только как сделать так чтобы пользователю не приходилось каждый раз нажимать Enter. А просто вібирать точьку а по завершению набрать конец.
Код:
[Выделить все]
Sub a()
Dim p1 As Variant, p2 As Variant
Dim st As String
  p1 = ThisDrawing.Utility.GetPoint(, vbCrLf & "1-ая точка: ")
  ThisDrawing.Utility.InitializeUserInput 0, "конец точка"
Do
p2 = ThisDrawing.Utility.GetPoint(, vbCrLf & "следующая: ")
 st = ThisDrawing.Utility.GetKeyword(vbCrLf & "Введите (конец/[точка]): ")
Loop While sl <> "конец"
end sub
Просмотров: 4033
 
Непрочитано 17.02.2013, 02:04
#2
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,596


Вроде оно: http://forum.nanocad.ru/index.php?showtopic=5273
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Автор темы   Непрочитано 17.02.2013, 02:12
#3
Sevas1


 
Регистрация: 17.02.2013
Сообщений: 3


помоему не то
Sevas1 вне форума  
 
Непрочитано 17.02.2013, 03:24
#4
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Код:
[Выделить все]
Sub a()
    Dim p As Variant
    Dim pts As New Collection
    Dim i As Integer
    i = 1
    Do
      On Error GoTo Endget
      If i = 1 Then
        p = ThisDrawing.Utility.GetPoint(, vbCrLf & CStr(i) & "-ая точка (ENTER - завершение): ")
      Else
        p = ThisDrawing.Utility.GetPoint(p, vbCrLf & CStr(i) & "-ая точка (ENTER - завершение): ")
      End If
      i = i + 1
      pts.Add (p)
    Loop While True
Endget:
    If Err.Number = -2145320928 Then ' Нажато ENTER
     MsgBox "Введено " & CStr(i) & " точек"
    Else ' Нажато ESC
     MsgBox "Ввод точек прерван"
    End If
End Sub
P.S.: На VB/VBA/VB.NET не пишу.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 17.02.2013, 11:04
#5
Sevas1


 
Регистрация: 17.02.2013
Сообщений: 3


Огромное спасибо !!!
Sevas1 вне форума  
 
Непрочитано 17.02.2013, 15:39
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Я использую похожий метода для отрисовки поолилиний, попробуй
Код:
[Выделить все]
Option Explicit
' Notes:
' 1. requires settings: Tools -> Options -> General tab -> Error trapping field -> check "Break on Unhandled errors"

Public Sub DynPolyline()
' draw lwpolyline interactively
Dim pickPt As Variant
Dim dblCoors() As Double
Dim i As Long
Dim oPoly As AcadLWPolyline

i = 0
On Error Resume Next
pickPt = ThisDrawing.Utility.GetPoint(, vbCr & "First point: ")
If Err = 0 Then
    ReDim dblCoors(1)
    dblCoors(i) = pickPt(0): dblCoors(i + 1) = pickPt(1)
    Do Until Err.Number <> 0
        i = i + 2
        pickPt = ThisDrawing.Utility.GetPoint(pickPt, vbCr & "Pick next point or press Enter to stop: ")
        ReDim Preserve dblCoors(UBound(dblCoors) + 2)
        dblCoors(i) = pickPt(0): dblCoors(i + 1) = pickPt(1)
        If oPoly Is Nothing Then
            Set oPoly = ThisDrawing.ModelSpace.AddLightWeightPolyline(dblCoors)
        Else
            oPoly.Coordinates = dblCoors
        End If
    Loop
    Dim lngResp As Long
    lngResp = MsgBox("Do you want to close polyline?", vbYesNo, "Close Mode")
    If lngResp = 6 Then
    oPoly.Closed = True
    End If
End If
End Sub
Олег (jr.) вне форума  
 
Непрочитано 18.03.2015, 09:50
#7
Дмитрий Асташев

päällikön suunnittelijat
 
Регистрация: 04.12.2010
Pietari, Venäjä
Сообщений: 63


Маленькое, но важное дополнение к коду А. Ривилиса. Перед вызовом Utility.GetPoint, в самом начале функции нужно, скажем так, "деинициализировать" ключевые слова следующим вызовом:
Код:
[Выделить все]
 Dim kwordList As String = ""
doc.Utility.InitializeUserInput(128, kwordList)
Без такой деинициализации возможен случай, когда Utility.GetPoint не позволяет выйти из цикла Do...Loop по нажатию Enter в следствии того, что ключевые слова были инициализированы в какой-либо другой функции. При этом Utility.GetPoint выдает сообщение о неверном ключевом слове и снова запрашивает точку.
Дмитрий Асташев вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить последовательный ввод точек в VBA



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт координат выбранных точек в *.txt slan.ru Программирование 184 23.03.2023 08:17
Как получить Список файлов в директории (поддиректорий) VBA sf Программирование 2 17.12.2010 12:06
Как получить координаты точек отображенных на четеже в виде таблици?? nix-- AutoCAD 10 22.05.2009 13:41
Как получить доступ к вложенным блокам из VBA? vicont-s Программирование 3 25.04.2009 23:29
VBA. получить центр окружности HiddenM Программирование 2 24.10.2005 12:54