Сообщество программистов Autodesk в СНГ

ADN Club => VBA => Тема начата: ldfo от 18-03-2022, 21:08:05

Название: Показ промежуточной длины при выборе точки
Отправлено: ldfo от 18-03-2022, 21:08:05
Здравствуйте.

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

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

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

Код - Visual Basic [Выбрать]
  1. Sub InsertBlock()
  2.  
  3.     On Error GoTo ErrorHandler
  4.    
  5.     Dim blockRef As AcadBlockReference
  6.     Dim name As String
  7.     Dim prevPoint, nextPoint As Variant
  8.     Dim tempNum As Integer
  9.    
  10.     name = "Проба_1светильник"
  11.     prevPoint = Null
  12.    
  13.     tempNum = InputBox("Введите номер")
  14.        
  15.     Do While True
  16.  
  17.         nextPoint = ThisDrawing.Utility.GetPoint(, "Укажите точку вставки")
  18.         Set blockRef = ThisDrawing.ModelSpace.InsertBlock(nextPoint, name, 1, 1, 1, 0)
  19.                
  20.         Call Increment(tempNum, blockRef)
  21.                
  22.         If (IsNull(prevPoint) = False) Then
  23.             Call DrawLine(prevPoint, nextPoint)
  24.         End If
  25.        
  26.         prevPoint = nextPoint
  27.         tempNum = tempNum + 1
  28.     Loop
  29.    
  30.     Exit Sub
  31.    
  32. ErrorHandler:
  33.     Exit Sub
  34.    
  35. End Sub
Название: Re: Показ промежуточной длины при выборе точки
Отправлено: Александр Ривилис от 18-03-2022, 21:12:33
Для того, чтобы это сделать нужно отказаться от VBA. Только ObjectARX (C++) или AutoCAD .NET API позволяют это сделать (используя Jig).
На VBA можно попробовать:
Код - Visual Basic [Выбрать]
  1. nextPoint = ThisDrawing.Utility.GetPoint(prevPoint, "Укажите точку вставки")
Но это конечно же не то.
Название: Re: Показ промежуточной длины при выборе точки
Отправлено: ldfo от 18-03-2022, 21:52:01
Александр Ривилис, Большое спасибо!

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

Однако, странно, что, познакомившись с программированием под AutoCAD на VBA буквально пару дней назад, я уже начинаю подходить к каким-то ограничениям в, казалось бы, простых вещах.
Название: Re: Показ промежуточной длины при выборе точки
Отправлено: Александр Ривилис от 19-03-2022, 03:02:19
Однако, странно, что, познакомившись с программированием под AutoCAD на VBA буквально пару дней назад, я уже начинаю подходить к каким-то ограничениям в, казалось бы, простых вещах.
Я бы рекомендовал изучать AutoCAD .NET API вместо VBA.