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.
Навигация
Перейти к полной версии