Тема: Вернуть расстояние между двумя указываемыми точками
Здравствуйте!
Нужно на VBA выполнить действие, аналогичное функции (getdist) в AutoLISP.
Помогите пожалуйста!
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Вернуть расстояние между двумя указываемыми точками
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте!
Нужно на VBA выполнить действие, аналогичное функции (getdist) в AutoLISP.
Помогите пожалуйста!
ThisDrawing.Utility.GetDistance
> Nike
https://www.caduser.ru/forum/topic26445.html
'Определение расстояния
'Между двумя точками
Sub Distance()
Dim A, B As Variant
Dim x, y, z, D As Double
A = ThisDrawing.Utility.GetPoint(, "Укажите 1-ю точку: ")
B = ThisDrawing.Utility.GetPoint(A, "Укажите 2-ю точку: ")
x = A(0) - B(0)
y = A(1) - B(1)
z = A(2) - B(2)
D = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2))
MsgBox Str(D)
End Sub
> Дарья
А этот макрос работает?
> The Rust
Работает. А что в нем смущает?
> Vildar
Да вот:
x = A(0) — B(0) y = A(1) — B(1) z = A(2) — B(2)
пишет Syntax error.
p.s. Тестировал на MVB 6.3
> The Rust
А, есть такая фигня. Длинные тире, замени на минусики.
> Vildar
Да все так и есть.
Тире надо заменить на минусики.
> Дарья
Есть небольшие замечания:
1.Объявить A и B как массивы doubles
Dim A() As Double, B() As Double
2. x,y,z объявить тоже как double
Dim x As Double, y As Double, z As Double, D As Double
3. Зачем лишняя арифметика в формуле?
Sqr(x ^ 2 + y ^ 2 + z ^ 2)
Еще, по хорошему, нужно обработаль исключение переполнения overflow (но это если проектировать галактику Кин-дза-дза в спирали :)
Vildar (2009-02-11 07:54:39)
...Длинные тире, замени на минусики....
>
Теперь все в порядке. Спасибо.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Вернуть расстояние между двумя указываемыми точками
Форум работает на PunBB, при поддержке Informer Technologies, Inc