Запрет обновления листов

Автор Тема: Запрет обновления листов  (Прочитано 2007 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Запрет обновления листов
« : 18-05-2022, 11:34:13 »
Здравствуйте, проблема следующая - создаю новый лист (а документ обрастает 60 км водопроводной сети, весит более 50мб).
В общем создаю новый лист, жду пока он прорисуется пару минут, затем быстренько форматирую и всё по новой.
Вопрос, я в начале ввожу все эти переменные

Код - vb.net [Выбрать]
  1.              CadDoc.Utility.Prompt("Начало создания листов")
  2.              CadDoc.SetVariable("SAVETIME", 0) ' отключаю автосохранение
  3.              CadDoc.SetVariable("REGENMODE", 0) ' отключаю обновление модели
  4.              CadDoc.SetVariable("FIELDEVAL", 0) ' отключаю обновление полей
  5.  

но в командной строке вижу:

Команда: Начало создания листов
Выполняется регенерация листов.
Выполняется регенерация листов.
Выполняется регенерация модели.
        -//-
Команда: Выполняется регенерация листов.
Команда: Выполняется регенерация модели.
Команда: Выполняется регенерация модели.
Команда: Выполняется регенерация модели.
Команда: Листы успешно созданы

Переменные устанавливаются, так как я потом проверял в AutoCade. Что я делаю не так или какие переменные не учёл, если приложение AutoCad использовать в фоновом режиме то он отказывается выполнять команды по созданию листа. Как вариант подскажите как создать лист без видового экрана, либо как минимизировать содержимое видового экрана. Понятно что последнее больше вопрос чертёжникам, а не программистам, но можете вполне столкнуться, так как листы в пустом файле создаются мигом, а вот в файле с примитивами - в разы дольше.

Отмечено как Решение D_TRex 18-05-2022, 13:52:13

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Запрет обновления листов
« Ответ #1 : 18-05-2022, 11:44:36 »
LAYOUTREGENCTL
LAYOUTCREATEVIEWPORT
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Запрет обновления листов
« Ответ #2 : 18-05-2022, 12:00:10 »
LAYOUTCREATEVIEWPORT это по ходу то что надо. Спасибо.
Код - vb.net [Выбрать]
  1. CadDoc.SetVariable("LAYOUTCREATEVIEWPORT", 0)
А синтаксис не подскажите, так как в кад сперва идёт ввод команды, а потом значение

Вот так оказывается прошло
Код - vb.net [Выбрать]
  1. CadDoc.Utility.Prompt("LAYOUTCREATEVIEWPORT" & vbCrLf)
  2. CadDoc.Utility.Prompt(0 & vbCrLf)

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Запрет обновления листов
« Ответ #3 : 18-05-2022, 16:01:55 »
Вот так оказывается прошло
Код - vb.net [Выбрать]
CadDoc.Utility.Prompt("LAYOUTCREATEVIEWPORT" & vbCrLf)
CadDoc.Utility.Prompt(0 & vbCrLf)
Это что такое??? Указанное мною выше - это не команды, а системные переменные. Поэтому их устанавливают через SetVariable. А Utility.Prompt - это просто печать в командной строке без передачи команды/системной переменной в AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Запрет обновления листов
« Ответ #4 : 18-05-2022, 19:06:30 »
В каде сперва пишется команда "LAYOUTCREATEVIEWPORT" потом надо нажать Enter, то есть она сразу не ждёт значения, поэтому зашёл через Promt. Предыдущие что я указал в листинге, да одной строкой работают.
Проблема другая как создать Pview до его отображения, либо что отключить, так как отрисовка каждого последующего листа занимает ещё больше времени чем предыдущего и в результате вылет ошибкой. Я отключил вообще все слои, отключил указанные выше синхронизации, но всё равно время отнимается на отрисовку. На работе "камень i7" и поколение посвежее, а вот дома i5 старенький, а я с работы отпросился с понтом буду разбивать листы 190 штук как ни как.

Civil как бы умеет создавать листы в фоне, я не пробовал, но они разработчики и у них все карты, но разбивает только на протяжении трассы, мне этот метод для вспомогательных чертежей не подходит. Но про теневое создание надо подумать.

Сделали бы на основе СПДС рамки, которые потом идут в листы, я так и сделал (динамический блок рамок с сохранением параметров в атрибутах) я их считываю и создаю листы, но вот проблема на больших файлах, часть попробую конечно разделить, но это не скоро (малый опыт в многопоточности).