Turned Off All Viewport

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

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

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 108
  • Карма: 0
Re: Turned Off All Viewport
« Ответ #75 : 23-09-2020, 18:23:11 »
Вот что у меня получилось  в Autocad 2021eng x64 Windows7: наличие трех layout, два раза сохранить/закрыть, изменить количество vp в одной из вкладок, не переключаться во второй сессии по вкладкам, запустить код c методом layout.Initialize().


 
но... в 2021 такой алгоритм выключает vp не во всех 100% случаев. в 16 и 20 кадах  близок к 100%. детально тестировать не было времени. надеюсь видео покажет что собственно я имею ввиду

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

  • Administrator
  • *****
  • Сообщений: 11745
  • Карма: 1534
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #76 : 23-09-2020, 20:31:14 »
pavka_97,
Мне кажется что ты нашел баг, но не тот, о котором говоришь. То что ты видишь - это следствие, а не причина. Причина в том, что после сохранения dwg-файла и повторного его открытия Layout.GetViewports возвращает пустой список для неактивного листа.
Это хорошо видно на этом видео:



В общем чтобы его обойти придётся таки переключаться на нужный лист, а затем уже проверять Layout.GetViewports
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 11745
  • Карма: 1534
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #77 : 23-09-2020, 20:46:04 »
Я отправил в ADN DevHelp эту информацию. Если это баг, то есть шанс, что будет исправлено в следующей версии. В противном случае надеюсь на их корректное объяснение такого поведения.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 108
  • Карма: 0
Re: Turned Off All Viewport
« Ответ #78 : 23-09-2020, 21:24:06 »
Layout.GetViewports возвращает пустой список для неактивного листа.

В самом деле. Я забыл что до initialize был похожий результат  .я решил что это нормально, просто не проинициализировал. А потом зациклился на initialize.


придётся таки переключаться на нужный лист, а затем уже проверять Layout.GetViewports

Именно поэтому я и полез во все это,чтобы избежать переключений.

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 108
  • Карма: 0
Re: Turned Off All Viewport
« Ответ #79 : 23-09-2020, 22:19:41 »
Не грузится mgd...(:
загрузилось. некоторые файлы, не все, но самые нужные, были заблокированы.
Off-Topic: показать

узнал об этом, прочитав соответствующую тему:). а перед этим посносил автокады, студию. поигрался с фреймворками, uac, сертификатами и прочими обновлениями. веселился как мог вобщем. ну хоть комп теперь почище стал.:)

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

  • Administrator
  • *****
  • Сообщений: 11745
  • Карма: 1534
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #80 : 23-09-2020, 22:23:12 »
узнал об этом, прочитав соответствующую тему:).
Сочувствую. Но теперь думаю, что надолго это запомнишь. Кстати, тоже самое касается не только dll, но и arx/dbx/crx и т.д.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 108
  • Карма: 0
Re: Turned Off All Viewport
« Ответ #81 : 23-09-2020, 22:41:12 »
надолго это запомнишь
Off-Topic: показать

о, да. иногда читать по теме и документацию полезно.. но я вчера что то выбился из сил, да и  грешил на загаженность компьютора.


В связи с вышеобозначенной ситуацией, если не использовать layout.GetVieports и проходить обычным циклом по пространству листа, первый попавшийся id vieport-а, это 0-й vp и далее следущие попадающиеся vp, совпадают с vp.Number или не факт?

 

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

  • Administrator
  • *****
  • Сообщений: 11745
  • Карма: 1534
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #82 : 23-09-2020, 22:43:25 »
В связи с вышеобозначенной ситуацией, если не использовать layout.GetVieports и проходить обычным циклом по пространству листа, первый попавшийся id vieport-а, это 0-й vp и далее следущие попадающиеся vp, совпадают с vp.Number или не факт?
Увы, но это не факт.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 108
  • Карма: 0
Re: Turned Off All Viewport
« Ответ #83 : 23-09-2020, 22:45:58 »
То есть номер viewport -а без layout.GetViewports никак не получить? 

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

  • Administrator
  • *****
  • Сообщений: 11745
  • Карма: 1534
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #84 : 23-09-2020, 22:49:55 »
То есть номер viewport -а без layout.GetViewports никак не получить? 
Фактически номер у него возникает только тогда, когда Layout становится активным:



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 108
  • Карма: 0
Re: Turned Off All Viewport
« Ответ #85 : 23-09-2020, 23:03:07 »
номер у него возникает только тогда, когда Layout становится активным

да, это я читал, разочаровался и надеялся, что время и порядок создания objectid vp-та, будет равно vp number.

Я еще один вопрос тут задам, если решите что нужна новая тема, то создам.

Мне нужно добраться до конкретных -vp.
Я вижу два варианта:
1. через его номер,cоответственно переключаясь во вкладки
2. через его ранее сохраненный в другой сессии handle. GetObjectId(..., handle,...)

Я понимаю конечно, что все будет зависит от размера файла,но все же..(вдруг опять подводные камни какие то есть)

Какой способ будет предпочтительней при прочих равных? Насколько быстро ищет по базе handle's?


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

  • Administrator
  • *****
  • Сообщений: 11745
  • Карма: 1534
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #86 : 23-09-2020, 23:05:19 »
Какой способ будет предпочтительней при прочих равных?
Handle
Насколько быстро ищет по базе handle's?
Практически моментально. Только лучше вместо GetObjectId использовать метод TryGetObjectId. Это обсуждалось у нас на форуме.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 108
  • Карма: 0
Re: Turned Off All Viewport
« Ответ #87 : 23-09-2020, 23:10:50 »
Это обсуждалось у нас на форуме
Ага, мелькало где то.
Спасибо, буду пробовать.

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

  • Administrator
  • *****
  • Сообщений: 11745
  • Карма: 1534
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Turned Off All Viewport
« Ответ #88 : 29-09-2020, 15:14:50 »
В ADN DevHelp мне подтвердили, что Layout.GetViewports возвращает непустой список Viewport'ов только если этот лист был или активирован или инициализирован в текущей сессии AutoCAD, так как этот список не сохраняется в чертеже при его сохранении, а вычисляется при активации листа или его инициализации.
Для неактивного листа рекомендуют при помощи Database.GetViewports(true) получить все Viewport'ы листов чертежа, затем используя для них метод OwnerId получить BlockTableRecord листа, которому они принадлежат, а затем по свойству LayoutId получить и сам лист. Таким образом можно найти все Viewport'ы конкретного листа без использования Layout.GetViewports.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 108
  • Карма: 0
Re: Turned Off All Viewport
« Ответ #89 : 01-10-2020, 18:18:08 »
ADN DevHelp спасибо за новый для меня метод (Database.GetViewports(true)), но каким образом получить из коллекции вьюпортов конкретного листа, к примеру, 0-й вьюпорт этого листа? Он ведь не факт, что первый в коллекции? Или его ObjectId можно чему-то сопоставить/приравнять?