Turned Off All Viewport

Автор Тема: Turned Off All Viewport  (Прочитано 24586 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #30 : 28-01-2019, 13:33:59 »
Дмитрий Загорулькин,
LAYOUTREGENCTL не влияет?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Turned Off All Viewport
« Ответ #31 : 28-01-2019, 13:41:28 »
вот так отрабатывает без ошибок,
Код - C# [Выбрать]
  1.         [Rtm.CommandMethod("TurnedOffAllViewport")]
  2.         static public void TurnedOff()
  3.         {
  4.             App.Document acDoc = App.Application.DocumentManager.MdiActiveDocument;
  5.             if (acDoc == null) return;
  6.             Db.Database acCurDb = acDoc.Database;
  7.  
  8.             List<Db.ObjectId> lll = new List<Db.ObjectId>();
  9.             using (Db.DBDictionary lays = acCurDb.LayoutDictionaryId.Open(Db.OpenMode.ForRead) as Db.DBDictionary)
  10.             {
  11.                 foreach (Db.DBDictionaryEntry item in lays)
  12.                    lll.Add(item.Value);
  13.             }
  14.             List<Db.ObjectId> vps = new List<Db.ObjectId>();
  15.             foreach (Db.ObjectId item in lll)
  16.             {
  17.                 using (Db.Layout layout = item.Open(Db.OpenMode.ForWrite) as Db.Layout)
  18.                 {
  19.                     if (!layout.ModelType)
  20.                     {
  21.                         var list = layout.GetViewports();
  22.                         if (list.Count == 0)
  23.                         {
  24.                             layout.Initialize();
  25.                             list = layout.GetViewports();
  26.                         }
  27.                         if (list.Count > 1)
  28.                             for (int i = 1; i < list.Count; i++)
  29.                             {
  30.                                 vps.Add(list[i]);
  31.                             }
  32.                     }
  33.                 }
  34.             }
  35.             int a = 1;
  36.             foreach (Db.ObjectId item in vps)
  37.             {
  38.                  using (Db.Viewport vp = item.Open(Db.OpenMode.ForWrite) as Db.Viewport)
  39.                 {
  40.                     acDoc.Editor.WriteMessage($"\n {a++}- {vp.Handle}");
  41.                     vp.On = false;
  42.                 }
  43.             }
  44.         }
НО... для листов, которые были принудительно инициализированны, каким то чудом становятся видимыми ВЭ (те которые под номером 0) и выключаются.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Turned Off All Viewport
« Ответ #32 : 28-01-2019, 13:51:12 »
LAYOUTREGENCTL не влияет?
Влияет! Если 0 - то всё ок. Если 2 - то как я описывал ранее.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Turned Off All Viewport
« Ответ #33 : 28-01-2019, 13:57:55 »
вот так отрабатывает без ошибок
Вот тут я перестал понимать...
Если раньше работу рушили ВЭ на неинициализированных листах, то как теперь выполняется условие в строке 22? То есть, на неинициализированных листах не выдаёт ВЭ, тогда откуда в предыдущем варианте взялись ВЭ, которые выдавали ошибку? Мистика...

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Turned Off All Viewport
« Ответ #34 : 28-01-2019, 14:45:15 »
Кроме Layout1 никакие листы не инициализированы:
т.е. до тех пор, пока не будет инициирован лист, ВЭ не будет записано ID владельца или владельцу не будет установлено свойство, что он -  лист?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #35 : 28-01-2019, 16:20:09 »
т.е. до тех пор, пока не будет инициирован лист, ВЭ не будет записано ID владельца или владельцу не будет установлено свойство, что он -  лист?
До тех пор у листа не будет Viewport'ов. На тех картинках, которые я привёл видно, что GetViewports для неинициализированных листов возвращает пустой список. Меня удивило другое. Такое впечатление, что лист "Корпус 1. Секция 3. Стены подвала." (впрочем как и многие другие) был создан и не инициализирован (возможно программно?) и в него были добавлены Viewport'ы до инициализации. Вручную, как я понимаю это сделать нельзя - при переключении на лист он инциализируется.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Turned Off All Viewport
« Ответ #36 : 28-01-2019, 16:27:08 »
Такое впечатление, что лист "Корпус 1. Секция 3. Стены подвала." (впрочем как и многие другие) был создан и не инициализирован (возможно программно?) и в него были добавлены Viewport'ы до инициализации. Вручную, как я понимаю это сделать нельзя - при переключении на лист он инциализируется.
Нет. Эти листы делались либо из шаблона (другой файл), либо просто добавлялись руками, ВЭ создавались руками.
Layout1, Layout2 ... делал точно руками в процессе тестирования кода из первого сообщения в этой теме.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #37 : 28-01-2019, 16:30:50 »
Layout1, Layout2 ... делал точно руками в процессе тестирования кода из первого сообщения в этой теме.
Посмотри значение переменной LAYOUTCREATEVIEWPORT.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Turned Off All Viewport
« Ответ #38 : 28-01-2019, 16:42:04 »

 LAYOUTCREATEVIEWPORT=0
я сам делал ВЭ командой  _-vports

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #39 : 28-01-2019, 16:45:03 »
LAYOUTCREATEVIEWPORT=0
я сам делал ВЭ командой  _-vports
Вот поэтому что-то и не срослось.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 150
  • Карма: 3
Re: Turned Off All Viewport
« Ответ #40 : 21-09-2020, 18:03:55 »
НО... для листов, которые были принудительно инициализированны, каким то чудом становятся видимыми ВЭ (те которые под номером 0) и выключаются.
Похожая ситуация. Метод layout. Inizialise вдобавок выключают и существующие vp на некоторых  других  layouts или вообще на всех. Все vp делались руками в различных вариантах(обычный, подрезанный,полигональный,по примитиву).Возможно ли избежать создания видимого , но выключенного vp[0]  и выключения существующих vp без переключений на каждый layout ?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #41 : 21-09-2020, 19:31:27 »
Метод layout. Inizialise вдобавок выключают и существующие vp на некоторых  других  layouts или вообще на всех.
Это или баг в AutoCAD или в конкретном чертеже.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 150
  • Карма: 3
Re: Turned Off All Viewport
« Ответ #42 : 21-09-2020, 23:40:26 »
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.DatabaseServices;
  4.  
  5. namespace pavtest
  6. {
  7.     public class PavTest
  8.     {
  9.  
  10.         [CommandMethod("PAVTEST")]
  11.         public void PAVTEST()
  12.         {
  13.             Document doc = Application.DocumentManager.MdiActiveDocument;
  14.             Database db = doc.Database;
  15.  
  16.             //проходим по layouts
  17.             using (DBDictionary dict = (DBDictionary)db.LayoutDictionaryId.Open(OpenMode.ForRead))
  18.             {
  19.                 foreach (DBDictionaryEntry eDict in dict)
  20.                 {
  21.                     using (Layout layout = (Layout)eDict.Value.Open(OpenMode.ForRead))
  22.                     {
  23.                         if (!layout.ModelType)
  24.                         {
  25.                             //если неинициализирован, то vp.count = 0, инициализируем
  26.                             if (layout.GetViewports().Count == 0)
  27.                             {
  28.  
  29.                                 layout.UpgradeOpen();
  30.                                 layout.Initialize();
  31.                                 layout.DowngradeOpen();
  32.  
  33.                             }
  34.                         }
  35.  
  36.                     }
  37.                 }
  38.  
  39.             }
  40.         }
  41.     }
  42. }
  43.  
  44.  
  45.  

Появляется в 13,16,20 кадах, в других не проверял. Появляется во вкладке в которую не переключаешься в сессии и то не всегда. Но единожды то переключение (руками) во время создания листа и vp было когда то. Как вариант для устранения проблемы нужно переключится во вкладку еще раз после создания.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #43 : 22-09-2020, 10:44:56 »
pavka_97,
Увы, но я ничего не понял. Что появляется? Код внешне выглядит вполне корректным.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 150
  • Карма: 3
Re: Turned Off All Viewport
« Ответ #44 : 22-09-2020, 11:41:18 »

в layout1 и layaout2 включенные vp. если мы запускаем код из layout4, предварительно не переключаясь в layout1 или 2, то видим что на видео. Т.е. выключенные vp плюс видимый выключенный контур "старого" о-го vp