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

ADN Club => AutoCAD .NET API => Тема начата: Judas от 05-02-2018, 19:45:01

Название: Управление Viewport
Отправлено: Judas от 05-02-2018, 19:45:01
Поступила такая задача.
Допустим есть очень протяженный объект от 5 до 120 км. Объект создан в модели и разбит на отдельные листы в листах. (соответственно все с ориентировано по направлению трассы).
А теперь, так сложились обстоятельства, модель линейно сдвигается по двум координатам (параметры сдвига известны) и, как следствие, в листах Viewport ничего не показывает.
Как сделать так:
Зная смещение XY, сместить Viewport (или лучше создать новый - дубликат) на это же расстояние. (учитывая сто во Viewport система координат из модели отображается повернутой).

Поделитесь опытом.
Может ссылками на инфу.
Пока только получить вектор ViewDirection получилось.
Название: Re: Управление Viewport
Отправлено: Дмитрий Загорулькин от 05-02-2018, 19:56:36
Да вроде бы, навскидку, никаких сложностей с этим быть не должно. С чем конкретно проблемы?
Название: Re: Управление Viewport
Отправлено: Александр Пекшев aka Modis от 05-02-2018, 19:56:52
Получить вектор смещения, создать Transform смещения и сместить все ViewPort используя этот Transform
Название: Re: Управление Viewport
Отправлено: Judas от 05-02-2018, 20:01:46
В идеале Viewport на месте т.к. он уже оформлен как чертеж.
Но надо подвинуть пространство (войдя во Viewport).
Может ссылки какие есть? Почитать? Коды посмотреть.
Название: Re: Управление Viewport
Отправлено: Александр Ривилис от 05-02-2018, 21:01:16
Как сделать так:
Зная смещение XY, сместить Viewport (или лучше создать новый - дубликат) на это же расстояние. (учитывая сто во Viewport система координат из модели отображается повернутой).
Может просто ViewTarget нужно трансформировать на XY?
По хорошему нужен пример чертежа и объяснение как вручную (без программирования) добиться нужного результата.
Название: Re: Управление Viewport
Отправлено: Judas от 05-02-2018, 21:16:15
Фаил прикладываю.
Описание:
- в моделе два отрезка - белый (условно старое положение) и красный (условно новое положение);
- смещение в модели двух отрезков X=300, Y=300;
- в Лист1 создан вьпорт, который показывает белый отрезок, а нужно что бы он в тех же границах показал красный отрезочек.
Другими словами исходную видимую область модели он бы перенес на X=300, Y=300 ед.
Название: Re: Управление Viewport
Отправлено: Judas от 05-02-2018, 21:21:26
Код - C# [Выбрать]
  1. Vector3d V = new Vector3d(300, 300, 0);
  2. acVport.TransformBy(Matrix3d.Displacement(V));
  3.  
Данный код просто переносит Viewport - это не то нужно перенести границы отображения.
Название: Re: Управление Viewport
Отправлено: Александр Ривилис от 05-02-2018, 21:30:07
До ручного переноса:
(https://farm5.staticflickr.com/4662/25230521197_1a648ab102_o.png)
После:
(https://farm5.staticflickr.com/4720/26228430038_6f48821108_o.png)

Вывод: менять следует ViewCenter

Как-то так наверное:
Код - C# [Выбрать]
  1. Vector2d V = new Vector2d(300, 300);
  2. acVport.ViewCenter = acVport.ViewCenter + V;
Название: Re: Управление Viewport
Отправлено: Judas от 05-02-2018, 21:53:53
Решено!
Александр и снова я ваш должник!
Благодарю.
Название: Re: Управление Viewport
Отправлено: Александр Ривилис от 05-02-2018, 21:55:20
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение
Название: Re: Управление Viewport
Отправлено: Judas от 06-02-2018, 18:15:20
Новенький.
Буду знать.