Угол между системами координат

Автор Тема: Угол между системами координат  (Прочитано 7006 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн ZailarАвтор темы

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Добрый день, есть ли способ через VBA получить угол между МСК и системой координат дисплея?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Угол между системами координат
« Ответ #1 : 28-05-2021, 18:43:27 »
Добрый день, есть ли способ через VBA получить угол между МСК и системой координат дисплея?
Что такое угол между системами координат?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ZailarАвтор темы

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Re: Угол между системами координат
« Ответ #2 : 28-05-2021, 19:17:29 »


В обоих видовых экранах оси  ХУ ориентированы одинаково, но при этом в одном видовом экране ось У ориентирована с востока на запад, а в другом с юга на север. В одном случае система координат дисплея не повернута относительно МСК, а во втором повернута, вот этот угол (поворота системы координат дисплея относительно МСК) можно определить через VBA?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Угол между системами координат
« Ответ #3 : 28-05-2021, 19:51:47 »
Понятнее мне не стало, но на всякий случай вот тебе код, с которым можно поиграться и который возвращает единичный вектор по оси X в МСК преобразованный в систему координат дисплея:

Код - Visual Basic [Выбрать]
  1. Sub Angle()
  2.  
  3.   Dim vX(0 To 2) As Double
  4.   vX(0) = 1: vX(1) = 0: vX(2) = 0
  5.   Dim v1 As Variant
  6.   v1 = ThisDrawing.Utility.TranslateCoordinates(vX, acWorld, acDisplayDCS, True)
  7.   MsgBox ("vX(X) :" & v1(0) & vbCrLf & "vX(Y) :" & v1(1) & vbCrLf & "vX(Z) :" & v1(2) & vbCrLf)
  8.  
  9. End Sub
Надеюсь это тебе поможет разобраться с тем, что тебя интересует.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Zailar 21-06-2021, 13:24:43

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Угол между системами координат
« Ответ #4 : 28-05-2021, 20:46:13 »
Пожалуй это то, что ты ищешь:

Код - Visual Basic [Выбрать]
  1. Sub Angle()
  2.  
  3.   Dim vX(0 To 2) As Double
  4.   vX(0) = 1#: vX(1) = 0#: vX(2) = 0#
  5.   Dim v1 As Variant
  6.   v1 = ThisDrawing.Utility.TranslateCoordinates(vX, acWorld, acDisplayDCS, True)
  7.   ' MsgBox ("vX(0): " & v1(0) & vbCrLf & "vX(1): " & v1(1) & vbCrLf & "vX(2): " & v1(2) & vbCrLf)
  8.    
  9.   Dim orig(0 To 2) As Double
  10.   orig(0) = 0#: orig(1) = 0#: orig(2) = 0#
  11.   Dim ang As Double
  12.   ang = ThisDrawing.Utility.AngleFromXAxis(orig, v1)
  13.   MsgBox ("Угол поворота оси X : " & ang / 3.14159265358979 * 180#)
  14.  
  15. End Sub
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение