ADN Club > VBA

Показ промежуточной длины при выборе точки

(1/1)

ldfo:
Здравствуйте.

Создаю программу по вставке блоков (светильников). Суть следующая - есть динамический блок светильника, пользователь кликает по экрану, в этом месте вставляется светильник. Далее запрашивается следующая координата вставки блока и после того, как пользователь выбирает точку, вставляется следующий светильник, а между этими блоками отрисовывается линия.

Собственно, вопрос - каким образом можно показывать пользователю, какая длина будет у данной линии еще до момента выбора следующей точки вставки блока? По аналогии с тем, как это сделано в AutoCAD, например, при рисовании отрезков и прочих объектов (выбираем первую точку, а при перемещении курсора по экрану рисуется "прозрачный" отрезок и отображается его длина).
Надеюсь, понятно сформулировал, просто не знаю как про эти промежуточные размеры забить в Гугле (может, плохо искал).

На всякий случай прикрепляю основной метод.


--- Код - Visual Basic [Выбрать] ---Sub InsertBlock()     On Error GoTo ErrorHandler        Dim blockRef As AcadBlockReference    Dim name As String    Dim prevPoint, nextPoint As Variant    Dim tempNum As Integer        name = "Проба_1светильник"    prevPoint = Null        tempNum = InputBox("Введите номер")            Do While True         nextPoint = ThisDrawing.Utility.GetPoint(, "Укажите точку вставки")        Set blockRef = ThisDrawing.ModelSpace.InsertBlock(nextPoint, name, 1, 1, 1, 0)                        Call Increment(tempNum, blockRef)                        If (IsNull(prevPoint) = False) Then            Call DrawLine(prevPoint, nextPoint)        End If                prevPoint = nextPoint        tempNum = tempNum + 1    Loop        Exit Sub    ErrorHandler:    Exit Sub    End Sub

Александр Ривилис:
Для того, чтобы это сделать нужно отказаться от VBA. Только ObjectARX (C++) или AutoCAD .NET API позволяют это сделать (используя Jig).
На VBA можно попробовать:

--- Код - Visual Basic [Выбрать] ---nextPoint = ThisDrawing.Utility.GetPoint(prevPoint, "Укажите точку вставки")Но это конечно же не то.

ldfo:
Александр Ривилис, Большое спасибо!

На самом деле, предложенный Вами вариант для VBA отлично подходит конкретно для моей задачи, мне стоило бы внимательнее изучать документацию по GetPoint().

Однако, странно, что, познакомившись с программированием под AutoCAD на VBA буквально пару дней назад, я уже начинаю подходить к каким-то ограничениям в, казалось бы, простых вещах.

Александр Ривилис:

--- Цитата: ldfo от 18-03-2022, 21:52:01 ---Однако, странно, что, познакомившись с программированием под AutoCAD на VBA буквально пару дней назад, я уже начинаю подходить к каким-то ограничениям в, казалось бы, простых вещах.
--- Конец цитаты ---
Я бы рекомендовал изучать AutoCAD .NET API вместо VBA.

Навигация

[0] Главная страница сообщений

Перейти к полной версии