No Image

Как обновить чертеж в автокаде

СОДЕРЖАНИЕ
13 просмотров
04 мая 2020

Во время работы в AutoCAD для навигации по чертежу мы, как правило, пользуемся мышью. Иногда возникают ситуации, когда при вращении колеса мыши, чертеж как бы «заедает» — он отказывается отдаляться или приближаться. Иная ситуация подобного рода — когда дуговые элементы и окружности выглядят «угловатыми» — они становятся ломаными линиями. Для решения этих проблем смотрите наш урок. Мы расскажем, как следует использовать команду «Регенерировать все» (всереген или _regenall в командной строке) и как вывести кнопку регенерации на Панель быстрого доступа.

Комментарии приветствуются! Уже 4 🙂

В классическом виде AutoCAD была команда обновить в меню Вид.

Спасибо, Михаил. Инструкция по регенерации простая и доступная. Всё получилось.

Андрей , подскажите пожалуйста, на домашнем компьютере виснет файл рабочий, планы архитектурные, много блоков и заливок. долго открывает, на переходе в лист вообще зависает. на рабочем он не виснет. Какая характеристика компьютера на это влияет? или это зависит от лицензированного автокада?

Я не знаю, к какому Андрею Вы обращались. =) Если к автору сайта, то я — Михаил.

Влияет больше всего оперативная память.

Но на самом деле влияет все — и процессор, и видеокарта — если компьютер совсем старый, тут уже ничем не поможешь. Особенно медленно все это на ноутбуках.

Дополнительно попробуйте очистить файл командой «Очистка» (удалит все неиспользуемые стили, слои, блоки) и проверьте его на ошибки — команда _audit

Во время работы в AutoCAD для навигации по чертежу мы, как правило, пользуемся мышью. Иногда возникают ситуации, когда при вращении колеса мыши, чертеж как бы «заедает» — он отказывается отдаляться или приближаться. Иная ситуация подобного рода — когда дуговые элементы и окружности выглядят «угловатыми» — они становятся ломаными линиями. Для решения этих проблем смотрите наш урок. Мы расскажем, как следует использовать команду «Регенерировать все» (всереген или _regenall в командной строке) и как вывести кнопку регенерации на Панель быстрого доступа.

Читайте также:  Как создать дробь в ворде

Комментарии приветствуются! Уже 4 🙂

В классическом виде AutoCAD была команда обновить в меню Вид.

Спасибо, Михаил. Инструкция по регенерации простая и доступная. Всё получилось.

Андрей , подскажите пожалуйста, на домашнем компьютере виснет файл рабочий, планы архитектурные, много блоков и заливок. долго открывает, на переходе в лист вообще зависает. на рабочем он не виснет. Какая характеристика компьютера на это влияет? или это зависит от лицензированного автокада?

Я не знаю, к какому Андрею Вы обращались. =) Если к автору сайта, то я — Михаил.

Влияет больше всего оперативная память.

Но на самом деле влияет все — и процессор, и видеокарта — если компьютер совсем старый, тут уже ничем не поможешь. Особенно медленно все это на ноутбуках.

Дополнительно попробуйте очистить файл командой «Очистка» (удалит все неиспользуемые стили, слои, блоки) и проверьте его на ошибки — команда _audit

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

Идея, казалось бы, проста и незатейлива: отключаем REGENMODE, выполняем что хотим и потом восстанавливаем значение переменной. Ну, для гарантии выполняем обновление – хоть командой _.regenall, хоть функцией (redraw), хоть через (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport).

Но, к сожалению, не все так просто и прозрачно, как хотелось бы.

Регенерация чертежа, насколько я понял, в обязательном порядке производится при использовании командных методов. Команда завершена – чертеж обновлен. Особенно это касается использования команд редактирования блоков и внешних ссылок. REGENMODE в таком случае игнорируется.

Если в коде используется вывод в ком.строку каких-либо сообщений, в этот момент управление из-под лиспа передается AutoCAD’у. Да, это иногда необходимо. Но все же стоит помнить, что AutoCAD может решить именно в этот момент обновить чертеж. Явной и четкой связи я не обнаружил, но с некоторых пор стараюсь минимизировать вывод в ком.строку.

Читайте также:  Приложение для сохранения паролей

Допустим, мы добавляем в чертеж примитив. И добавляем в текущее пространство, используя entmake или entmakex. В таком случае регенерация, как правило, не выполняется, но примитив отображается сразу. При добавлении примитива в описание какого-либо блока (т.е. указывается группа 330) по окончании обновления блока, насколько я помню, регенерация будет выполняться обязательно. Ставил подобные эксперименты уже очень давно, да и ActiveX мне нравится больше – поэтому здесь могу ошибаться.

Если нам надо добавлять большое количество примитивов в чертеж, то entmake внутри текущего пространства в данном случае может сыграть плохую шутку: AutoCAD будет понимать, что база все обновляется, обновляется, обновляется. А регенерации все нет и нет. В один не самый прекрасный момент ACAD может решить, что "все, парни, с меня хватит" – и начать регенерацию.

Если надо менять большое количество примитивов, то entmod тоже не самое лучшее решение, как мне кажется. Насколько я помню, после entmod использование entupd практически обязательно – в противном случае примитив может быть "полностью обновлен" только после перезапуска чертежа. То есть – здравствуй, регенерация по примитиву. Опять же, могу ошибаться.

Добавление примитива в чертеж через ActiveX не вызывает регенерацию по каждому чиху. Но если выполняется добавление нескольких сотен примитивов, то регенерация может быть вызвана в любой момент. То же самое касается и изменения примитивов. И на REGENMODE в подавляющем большинстве случаев AutoCAD’у плевать.

Если задача состоит именно в том, чтобы в текущий чертеж добавить сотни или тысячи примитивов, или выполнить многократное изменение какого-либо примитива (например, надо подогнать высоту и ширину многострочного текста так, чтобы он вписывался в определенные рамки), то наиболее быстрым вариантом, с моей точки зрения, является реализация примерно следующего алгоритма:

  1. Создание большого количества примитивов
    • Создание описания анонимного блока
    • Создание внутри этого анонимного блока всех нужных примитивов
    • Вставка анонимного блока, его разбитие и уничтожение вхождения
    Читайте также:  Фильм с умой турман про школу

    Вариант плох тем, что база чертежа становится достаточно сильно фрагментированной: хендл описания блока, хендлы объектов внутри описания блока, хендл вхождения блока – и все это на выброс. Теоретически можно превысить предел хендлов (он хотя и велик, но не бесконечен). Но метод хорош тем, что вся работа выполняется абсолютно не затрагивая графическую область чертежа. И лишь в самом конце – вставка и разбитие.

  2. Изменение (подгонка) примитивов
    • Создание описания анонимного блока
    • Создание внутри этого анонимного блока нового примитива или копирование в него существующего
    • Изменение созданного (или скопированного) примитива
    • Получение нужных характеристик из созданного (скопированного) примитива
    • Необязательное отключение REGENMODE
    • Изменение реального примитива на основе полученных данных
    • Восстановление REGENMODE
        Этот вариант тоже не без недостатков. И они те же, что и у первого: ненужная фрагментация базы чертежа, хотя и не такая глобальная.
    • Конечно, можно выкрутиться: создать новый документ (чтобы в него не переключиться, создавать наверняка придется через ObjectDBX), в нем все делать, а потом просто импортировать соответствующие элементы. Но на моей практике такого пока еще не требовалось.

      Как таковая регенерация с точки зрения пользователя – благо. С точки зрения программиста-лиспописателя – зло. В последних версиях AutoCAD вроде бы научился корректно обрабатывать текущее значение REGENMODE, но я в этом совсем не уверен. Поэтому сейчас я использую один из двух показанных вариантов. Скорее всего, есть третий, четвертый и т.д. (про .NET только не рассказывайте, ладно? :)) – но до них я пока не дошел.

      Комментировать
      13 просмотров
      Комментариев нет, будьте первым кто его оставит

      Это интересно
      No Image Компьютеры
      0 комментариев
      No Image Компьютеры
      0 комментариев
      No Image Компьютеры
      0 комментариев
      Adblock
      detector