Установить ПСК в видовом экране

Автор Тема: Установить ПСК в видовом экране  (Прочитано 7381 раз)

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

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Друзья, а как назначить ПСК в видовом экране? Казалось бы, задача простая и для ее решения есть метод Viewport.SetUcs(Point3d origin, Vector3d x, Vector3d y), но он не дает желаемого результата, точнее вообще не даёт результата. При изменении Viewport.ViewCenter и Viewport.ViewHeight представление видового экрана меняется (т.е. изменения в видовом экране применяются), а вот при изменении ПСК результата нет - постоянно остается МСК. Причём, параметры ПСК сохраняются, а вот в самом видовом экране никаких ихменений.

Вот тестируемый код:
Код - C# [Выбрать]
  1. [CommandMethod("_test1")]
  2. public void test1()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     Database db = doc.Database;
  6.     Editor ed = doc.Editor;
  7.  
  8.     using (Transaction trans = db.TransactionManager.StartTransaction())
  9.     {
  10.         Viewport vp = (Viewport)trans.GetObject(ed.GetEntity("\nviewport:").ObjectId, OpenMode.ForWrite);
  11.         Vector3d v = Point3d.Origin.GetVectorTo(new Point3d(1.0, 1.0, 0.0));
  12.  
  13.         //определение параметров исходной ПСК
  14.         Point3d p0 = new Point3d();
  15.         Vector3d vX = new Vector3d();
  16.         Vector3d vY = new Vector3d();
  17.         vp.GetUcs(ref p0, ref vX, ref vY);
  18.  
  19.         vp.SetUcs(Point3d.Origin, v.GetNormal(), v.GetPerpendicularVector());
  20.  
  21.         vp.ViewTarget = new Point3d(0.0, 0.0, 0.0);
  22.         vp.ViewCenter = new Point2d(50.0, 50.0);
  23.         vp.ViewHeight = 110;
  24.  
  25.         vp.UpdateDisplay();
  26.  
  27.         trans.Commit();
  28.     }
  29. }
  30.  

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

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Установить ПСК в видовом экране
« Ответ #1 : 18-11-2020, 16:12:54 »
https://forums.autodesk.com/t5/net/c-set-ucs-by-object/m-p/3694074#M31920
Оттуда цитата:


Цитировать
There is a known issue in setting the UCS for a Viewport using its SetUCS method. As a workaround, set it using the COM API as shown in the sample code. You can modify it based on ECS value.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение