ADN Club > VBA
Угол между системами координат
(1/1)
Zailar:
Добрый день, есть ли способ через VBA получить угол между МСК и системой координат дисплея?
Александр Ривилис:
--- Цитата: Zailar от 28-05-2021, 18:20:33 ---Добрый день, есть ли способ через VBA получить угол между МСК и системой координат дисплея?
--- Конец цитаты ---
Что такое угол между системами координат?
Zailar:
В обоих видовых экранах оси ХУ ориентированы одинаково, но при этом в одном видовом экране ось У ориентирована с востока на запад, а в другом с юга на север. В одном случае система координат дисплея не повернута относительно МСК, а во втором повернута, вот этот угол (поворота системы координат дисплея относительно МСК) можно определить через VBA?
Александр Ривилис:
Понятнее мне не стало, но на всякий случай вот тебе код, с которым можно поиграться и который возвращает единичный вектор по оси X в МСК преобразованный в систему координат дисплея:
--- Код - Visual Basic [Выбрать] ---Sub Angle() Dim vX(0 To 2) As Double vX(0) = 1: vX(1) = 0: vX(2) = 0 Dim v1 As Variant v1 = ThisDrawing.Utility.TranslateCoordinates(vX, acWorld, acDisplayDCS, True) MsgBox ("vX(X) :" & v1(0) & vbCrLf & "vX(Y) :" & v1(1) & vbCrLf & "vX(Z) :" & v1(2) & vbCrLf) End SubНадеюсь это тебе поможет разобраться с тем, что тебя интересует.
Александр Ривилис:
Пожалуй это то, что ты ищешь:
--- Код - Visual Basic [Выбрать] ---Sub Angle() Dim vX(0 To 2) As Double vX(0) = 1#: vX(1) = 0#: vX(2) = 0# Dim v1 As Variant v1 = ThisDrawing.Utility.TranslateCoordinates(vX, acWorld, acDisplayDCS, True) ' MsgBox ("vX(0): " & v1(0) & vbCrLf & "vX(1): " & v1(1) & vbCrLf & "vX(2): " & v1(2) & vbCrLf) Dim orig(0 To 2) As Double orig(0) = 0#: orig(1) = 0#: orig(2) = 0# Dim ang As Double ang = ThisDrawing.Utility.AngleFromXAxis(orig, v1) MsgBox ("Угол поворота оси X : " & ang / 3.14159265358979 * 180#) End Sub
Навигация
Перейти к полной версии