Тема: Количество точек в полилинии
Есть ли какое-нибудь свойство у полилинии, которое содержит информацию о количестве точек ее составляющих? А также какими сегментами они соединены?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Количество точек в полилинии
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Есть ли какое-нибудь свойство у полилинии, которое содержит информацию о количестве точек ее составляющих? А также какими сегментами они соединены?
в зависимоти от типа полилаина
(Ubound (obj.coordinates) +1) / 2 ' для LWPolyline
(Ubound (obj.coordinates) +1) / 3 'для Polyline
вернет кол-во точек
сегменты вычисляешь сам :(
' Calculate distance between two points
Public Function distance(sp As Variant, ep As Variant) _
As Double
Dim X As Double
Dim Y As Double
Dim z As Double
X = sp(0) - ep(0)
Y = sp(1) - ep(1)
z = sp(2) - ep(2)
distance = Sqr((Sqr((X ^ 2) + (Y ^ 2)) ^ 2) + (z ^ 2))
End Function
А не можешь подсказать: Как обнулить\очистить весь массив элементов одной командой?
Для одномерного массива:
Dim MyArray() As Integer ' Declare dynamic array.
Redim MyArray(5) ' Allocate 5 elements.
For I = 1 To 5 ' Loop 5 times.
MyArray(I) = I ' Initialize array.
Next I
The next statement resizes the array and erases the elements.
Redim MyArray(10) ' Resize to 10 elements.
For I = 1 To 10 ' Loop 10 times.
MyArray(I) = I ' Initialize array.
Next I
The following statement resizes the array but does not erase elements.
Redim Preserve MyArray(15) ' Resize to 15 elements.
А если двумерный массив?
А в первом вопросе я имел ввиду не расстояние между точками, а какая линия их соединяет (прямая или дуга).?
Я не очень понимаю что значит обнулить.
Примеры которые ты привел как раз инициализируют масив а не очищают.
самый простой вариант ето Redim MyArray(10) Или MyArray(2,10) для двухмерного. Ето не только ресайз но и обнуляет масив.
Но можно и пошагово
Redim MyArray(3,5) ' Allocate 5 elements.' Помоему всеже 6.
никогда не не делаите итератор i = 1. Очень вредная практика, знаете ли, особенно при работе с масивами.
В вашем поримере
MyArray(I) = I в первыь раз засунет единицу во второй елемент,
а на последнем шаге свалится
Для многомерного масива
ReDim a(2, 4)
For i = 0 To 2 ' Loop 3 times.
For j = 0 To 4 ' Loop 5 times.
a(i, j) = j * i
Next j
Next i
По поводу полилинии. У нее есть метод GetBulge, который возвращает 0 если ето прямая. Кстати, есть еще и SetBulge.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Количество точек в полилинии
Форум работает на PunBB, при поддержке Informer Technologies, Inc