Проблема с координатами во вновь созданной UCS

Автор Тема: Проблема с координатами во вновь созданной UCS  (Прочитано 9007 раз)

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

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

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Проблема в следующем:

- создаю новую UCS со смещением по оси Х на -20.
- рисую две одинаковые линии:

Код - Auto/Visual Lisp [Выбрать]
  1. (command "_line" '(10 10 0) '(20 20 0) "")                                             
  2. (setq lineTMP (vla-AddLine model_space (vlax-3D-point 10 10 0) (vlax-3D-point 20 20 0)))
  3.  

Линия по автокадовской комманде рисуется в новой UCS, а методом ActiveX - в мировой UCS (смю рис). Почему? И как добится, чтобы метод рисовал в новой UCS?

Заранее благодарен.

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Линия по автокадовской комманде рисуется в новой UCS, а методом ActiveX - в мировой UCS (смю рис). Почему?
Так и должно быть. Чтобы получилось то, что ты хочешь нужно преобразовать координаты из ПСК в МСК.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Преобразовать = пересчитать? Но тогда зачем нужна новая UCS? Или я чего-то  не так понимаю?

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Преобразовать = пересчитать? Но тогда зачем нужна новая UCS? Или я чего-то  не так понимаю?
Видимо не понимаешь. С ПСК(UCS) работают команды AutoCAD, а COM/ActiveX работает (в большинстве случаев) с МСК(WCS).
Преобразовать = пересчитать?
Да. Хотя наверное лучше поступить иначе:
1) Получить матрицу преобразования ПСК->МСК
2) Создать примитив (в данном случае LINE) в МСК
3) Воспользоваться методом TransformBy для трансформации примитива из одной системы координат в другую.
Примеры смотри в документации ActiveX Reference Guide: http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-A809CD71-4655-44E2-B674-1FE200B9FE30
http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-2FAE4C13-06F2-47A2-B213-8A9A6958B799
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Балиев 31-07-2016, 17:24:02

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Матрицу преобразования UCS->WCS можно получить при помощи метода GetUCSMatrix:
http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-85495614-C788-45C7-8E26-2BC8A2C3A490
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
То, что нужно. Спасибо!