Тема: Вернуть расстояние между двумя указываемыми точками

Здравствуйте!
Нужно на VBA выполнить действие, аналогичное функции (getdist) в AutoLISP.
Помогите пожалуйста!

Re: Вернуть расстояние между двумя указываемыми точками

ThisDrawing.Utility.GetDistance

Re: Вернуть расстояние между двумя указываемыми точками

> 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

Re: Вернуть расстояние между двумя указываемыми точками

Спасибо!

Re: Вернуть расстояние между двумя указываемыми точками

> Дарья
А этот макрос работает?

Re: Вернуть расстояние между двумя указываемыми точками

> The Rust
Работает. А что в нем смущает?

Re: Вернуть расстояние между двумя указываемыми точками

> Vildar
Да вот:

x = A(0) — B(0)
y = A(1) — B(1)
z = A(2) — B(2)

пишет Syntax error.
p.s. Тестировал на MVB 6.3

Re: Вернуть расстояние между двумя указываемыми точками

> The Rust
А, есть такая фигня. Длинные тире, замени на минусики.

Re: Вернуть расстояние между двумя указываемыми точками

> Vildar
Да все так и есть.
Тире надо заменить на минусики.

Re: Вернуть расстояние между двумя указываемыми точками

> Дарья
Есть небольшие замечания:
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 (но это если проектировать галактику Кин-дза-дза в спирали :)

Re: Вернуть расстояние между двумя указываемыми точками

Vildar (2009-02-11 07:54:39)

...Длинные тире, замени на минусики....

>
Теперь все в порядке. Спасибо.