поместить содержимое видового экрана в центр

Автор Тема: поместить содержимое видового экрана в центр  (Прочитано 3672 раз)

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

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Добрый день!

Пишу через COM следующий код
Код - C# [Выбрать]
  1. var vp = doc.PaperSpace.AddPViewport(new[] { 0.0, 0.0, 0.0 }, 200, 200);
  2. vp.Target = new[] { 0.0, 0.0, 0.0 };
  3. vp.Direction = new[] { 0.0, 0.0, 0.0 };

и получается что центр фигуры (координаты ее центра в модели 0,0,0) не совпадает с центром видового экрана, при чем смещение непостоянное
возможно проблема с системами координат?
как все таки поместить фигуру в центр видового экрана?

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9

Отмечено как Решение simson43 14-08-2019, 14:36:19

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

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

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Спасибо большое!

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
vp.Direction = new[] { 0.0, 0.0, 0.0 };
Это как? Нулевой вектор?
Ну и думаю, что нужно задать vp.Center
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Это может быть интересным (особенно метод ZoomCenter):
Код - C# [Выбрать]
  1. // using System.Reflection;
  2. public class Zoom
  3. {
  4.     public static void ZoomWindow(Point3d p1, Point3d p2)
  5.     {
  6.         object acad = Application.AcadApplication;
  7.         object[] pts = { p1.ToArray(), p2.ToArray() };
  8.         acad.GetType().InvokeMember("ZoomWindow", BindingFlags.DeclaredOnly | BindingFlags.Public |
  9.              BindingFlags.Instance | BindingFlags.InvokeMethod, null, acad, pts);
  10.     }
  11.     public static void ZoomExtents()
  12.     {
  13.         object acad = Application.AcadApplication;
  14.         acad.GetType().InvokeMember("ZoomExtents", BindingFlags.DeclaredOnly | BindingFlags.Public |
  15.              BindingFlags.Instance | BindingFlags.InvokeMethod, null, acad, null);
  16.     }
  17.     public static void ZoomScaled(double scale, int zoomScaleType)
  18.     {
  19.         // zoomScaleType :
  20.         //    acZoomScaledAbsolute  = 0
  21.         //    acZoomScaledRelative  = 1
  22.         //    acZoomScaledRelativePSpace  = 2
  23.         object acad = Application.AcadApplication;
  24.         acad.GetType().InvokeMember("ZoomScaled", BindingFlags.DeclaredOnly | BindingFlags.Public |
  25.              BindingFlags.Instance | BindingFlags.InvokeMethod, null, acad, new object[] { scale, zoomScaleType });
  26.     }
  27.     public static void ZoomCenter(Point3d pt, double magnitude)
  28.     {
  29.         object acad = Application.AcadApplication;
  30.         acad.GetType().InvokeMember("ZoomCenter", BindingFlags.DeclaredOnly | BindingFlags.Public |
  31.              BindingFlags.Instance | BindingFlags.InvokeMethod, null, acad, new object[] { pt.ToArray(), magnitude });
  32.     }
  33. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
vp.Direction = new[] { 0.0, 0.0, 0.0 };
Это как? Нулевой вектор?
Ну и думаю, что нужно задать vp.Center
Это я экспериментировал. Разницы не заметил между этим и 0,0,1
А центр ведь в конструкторе задается