Повернуть объекты в видовом экране

Автор Тема: Повернуть объекты в видовом экране  (Прочитано 9639 раз)

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

Оффлайн Захаров МаксимАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 141
  • Карма: 3
Здравствуйте.
Подскажите пожалуйста, как в видовом экране развернуть объекты вычерченные в пространстве модели вокруг оси Z. Пытался создать свою ПСК. ПСК создалась, видовой куб тоже развернулся, а объекты модели не развернулись. Наверное иду не потому пути.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus

Оффлайн Захаров МаксимАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 141
  • Карма: 3
Спасибо щас почитаю.
Не смог разобраться. Загрузил пример полностью в проект, но результат работы мне не понятен. Помогите пожалуйста как развернуть объекты в пространстве модели в видовом экране. Если делать в ручную то это команда Сервис-Новая ПСК-Z

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Так а это что тогда?:
Код - C# [Выбрать]
  1. // Translate WCS coordinates to DCS
  2.             Matrix3d matWCS2DCS;
  3.             matWCS2DCS = Matrix3d.PlaneToWorld(acView.ViewDirection);
  4.             matWCS2DCS = Matrix3d.Displacement(acView.Target - Point3d.Origin) * matWCS2DCS;
  5.             matWCS2DCS = Matrix3d.Rotation(-acView.ViewTwist,
  6.                                             acView.ViewDirection,
  7.                                             acView.Target) * matWCS2DCS;
  8. // If a center point is specified, define the min and max
  9.             // point of the extents
  10.             // for Center and Scale modes
  11.             if (pCenter.DistanceTo(Point3d.Origin) != 0)
  12.             {
  13.                 pMin = new Point3d(pCenter.X - (acView.Width / 2),
  14.                                     pCenter.Y - (acView.Height / 2), 0);
  15.  
  16.                 pMax = new Point3d((acView.Width / 2) + pCenter.X,
  17.                                     (acView.Height / 2) + pCenter.Y, 0);
  18.             }
  19. //......
  20. // Tranform the extents of the view
  21.             matWCS2DCS = matWCS2DCS.Inverse();
  22.             eExtents.TransformBy(matWCS2DCS);

Оффлайн Захаров МаксимАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 141
  • Карма: 3
А не могли бы вы прокомментировать работу этого кода. Я так понимаю создаем матрицу для разворота. А как ее присвоить видовому экрану? Я полностью запустил этот код, но результата нет

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Захаров Максим
Запиши видео (у меня в подписи написано как) того, что ты добиваешься. Я пока не смог понять кого ты хочешь развернуть. Изменяя ПСК ты никоим образом объекты не поворачиваешь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Захаров МаксимАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 141
  • Карма: 3
В видовом экране поворачиваю видовой куб. Соответственно разворачивается вся ситуация. Еще это можно сделать с из меню (Сервис-Новая ПСК - Z)/

Просто нет возможности видео записать пока.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Захаров Максим
Судя по названию темы ты не понимаешь, что не объекты поворачиваются, а меняется направление взгляда. Да и ПСК никакого отношения к этому не имеет, просто за поворотом ПСК AutoCAD осуществляет поворот вида. Наверное UCSFOLLOW установлена в 1
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Посмотри вот этот пример: http://through-the-interface.typepad.com/through_the_interface/2012/12/zooming-panning-and-orbiting-the-current-autocad-view-using-net.html
Там есть метод:
Код - C# [Выбрать]
  1.  public void Orbit(Vector3d axis, double angle)
Думаю, что это именно то, что тебе нужно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Захаров МаксимАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 141
  • Карма: 3
Александр, с сконвертировал код на vb.net Я в нем работаю. Но вот одну строчку ни как не могу. Переменная var дает ошибку. Что это за тип данных?
var cam =  new Camera(Application.DocumentManager.MdiActiveDocument);

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Повернуть объекты в видовом экране
« Ответ #10 : 04-02-2017, 19:36:07 »
var cam =  new Camera(Application.DocumentManager.MdiActiveDocument);
В данном случае, это то же самое, что и:
Код - C# [Выбрать]
  1. Camera cam =  new Camera(Application.DocumentManager.MdiActiveDocument);