Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Захаров Максим от 03-02-2017, 11:08:53

Название: Повернуть объекты в видовом экране
Отправлено: Захаров Максим от 03-02-2017, 11:08:53
Здравствуйте.
Подскажите пожалуйста, как в видовом экране развернуть объекты вычерченные в пространстве модели вокруг оси Z. Пытался создать свою ПСК. ПСК создалась, видовой куб тоже развернулся, а объекты модели не развернулись. Наверное иду не потому пути.
Название: Re: Повернуть объекты в видовом экране
Отправлено: Александр Пекшев aka Modis от 03-02-2017, 11:40:18
Оно? (https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-NET/files/GUID-FAC1A5EB-2D9E-497B-8FD9-E11D2FF87B93-htm.html)
Название: Re: Повернуть объекты в видовом экране
Отправлено: Захаров Максим от 03-02-2017, 12:06:13
Спасибо щас почитаю.
Не смог разобраться. Загрузил пример полностью в проект, но результат работы мне не понятен. Помогите пожалуйста как развернуть объекты в пространстве модели в видовом экране. Если делать в ручную то это команда Сервис-Новая ПСК-Z
Название: Re: Повернуть объекты в видовом экране
Отправлено: Александр Пекшев aka Modis от 03-02-2017, 12:08:21
Так а это что тогда?:
Код - 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);
Название: Re: Повернуть объекты в видовом экране
Отправлено: Захаров Максим от 03-02-2017, 13:31:48
А не могли бы вы прокомментировать работу этого кода. Я так понимаю создаем матрицу для разворота. А как ее присвоить видовому экрану? Я полностью запустил этот код, но результата нет
Название: Re: Повернуть объекты в видовом экране
Отправлено: Александр Ривилис от 03-02-2017, 15:09:37
Захаров Максим
Запиши видео (у меня в подписи написано как) того, что ты добиваешься. Я пока не смог понять кого ты хочешь развернуть. Изменяя ПСК ты никоим образом объекты не поворачиваешь.
Название: Re: Повернуть объекты в видовом экране
Отправлено: Захаров Максим от 03-02-2017, 17:02:36
В видовом экране поворачиваю видовой куб. Соответственно разворачивается вся ситуация. Еще это можно сделать с из меню (Сервис-Новая ПСК - Z)/
(https://s29.postimg.org/5du1w9jz7/image.png) (https://postimg.org/image/5du1w9jz7/)
Просто нет возможности видео записать пока.
Название: Re: Повернуть объекты в видовом экране
Отправлено: Александр Ривилис от 03-02-2017, 17:18:44
Захаров Максим
Судя по названию темы ты не понимаешь, что не объекты поворачиваются, а меняется направление взгляда. Да и ПСК никакого отношения к этому не имеет, просто за поворотом ПСК AutoCAD осуществляет поворот вида. Наверное UCSFOLLOW (https://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-Core/files/GUID-C07B8F08-8854-4A84-94A6-98C5B9A2522A-htm.html) установлена в 1
Название: Re: Повернуть объекты в видовом экране
Отправлено: Александр Ривилис от 03-02-2017, 17:52:33
Посмотри вот этот пример: 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)
Думаю, что это именно то, что тебе нужно.
Название: Re: Повернуть объекты в видовом экране
Отправлено: Захаров Максим от 04-02-2017, 11:47:51
Александр, с сконвертировал код на vb.net Я в нем работаю. Но вот одну строчку ни как не могу. Переменная var дает ошибку. Что это за тип данных?
var cam =  new Camera(Application.DocumentManager.MdiActiveDocument);
Название: Re: Повернуть объекты в видовом экране
Отправлено: Дмитрий Загорулькин от 04-02-2017, 19:36:07
var cam =  new Camera(Application.DocumentManager.MdiActiveDocument);
В данном случае, это то же самое, что и:
Код - C# [Выбрать]
  1. Camera cam =  new Camera(Application.DocumentManager.MdiActiveDocument);