Как обновить чертеж в автокаде
При открытии чертежа все вхождения DWG (внешние ссылки) автоматически обновляются. Можно также обновить внешние ссылки, чтобы убедиться, что на главном чертеже отображаются самые последние версии чертежей внешних ссылок. При открытии чертежа все внешние ссылки автоматически обновляются. Для обновления внешних ссылок используется команда обновления палитры «Внешние ссылки», если требуется гарантировать отображение на чертеже самых последних версий внешних ссылок.
После сохранения отредактированного чертежа внешней ссылки в локальной сети любой другой можно отобразить изменения на своем чертеже, обновив внешнюю ссылку.
Уведомление об изменении внешних ссылок При вставке в чертеж внешних ссылок программа периодически проверяет, не изменились ли файлы, на которые они ссылаются с момента последней загрузки или обновления чертежей. Уведомлениями о состоянии внешних ссылок управляет системная переменная XREFNOTIFY. По умолчанию при изменении файла, на который есть ссылка, рядом со значком внешней ссылки в правом нижнем углу окна приложения (в строке состояния) появляется всплывающее уведомление. Необходимо нажать ссылку в уведомлении, чтобы обновить все изменившиеся внешние ссылки.

Если закрыть всплывающее уведомление, не обновив ссылку, на значке внешней ссылки появится восклицательный знак. При нажатии на значке внешних ссылок открывается палитра «Внешние ссылки». По умолчанию программа проверяет изменение файлов внешних ссылок каждые пять минут. Интервал времени между проверками можно изменить, установив значение переменной реестра XNOTIFYTIME(setenv «XNOTIFYTIME» «n«), где n — количество минут от 1 до 10080 (семь дней).
Примечание При изменении значения переменной XNOTIFYTIME необходимо ввестиXNOTIFYTIME заглавными буквами, как показано.
- Если для системной переменной XLOADCTL установлено значение 1, чертеж внешней ссылки будет оставаться открытым в заблокированном состоянии. Никто, кроме открывшего его пользователя, не сможет изменить чертеж внешней ссылки.
- Если для системной переменной XLOADCTL установлено значение 2, то будет открыта и заблокирована временная копия последней сохраненной версии файла внешней ссылки. Другие пользователи могут открывать и изменять чертеж внешней ссылки.
- Архивные чертежи, содержащие внешние чертежи (внедрение)
- Вложенные и наложенные внешние чертежи.
Как обновить чертеж в автокаде
Обновление вставленных внешних чертежей
Обновление вставленной внешней ссылки
- Выберите пункт меню «Вставить» «Внешние ссылки» . В командной строке введите «внссылки».
- На палитре «Внешние ссылки» выберите имя вхождения, которое требуется обновить.
- Нажмите правую кнопку мыши и выберите «Обновить».
Примечание Если чертеж выбранной ссылки был изменен уже после открытия основного чертежа, то внешняя ссылка обновляется.
Панель: Справочная информация
Ввод команды: ВНССЫЛКИ
Сайт создан в системе uCoz
Регенерация чертежа в AutoCAD или что делать если «не отъезжает колесиком»? (видео)
Во время работы в AutoCAD для навигации по чертежу мы, как правило, пользуемся мышью. Иногда возникают ситуации, когда при вращении колеса мыши, чертеж как бы «заедает» — он отказывается отдаляться или приближаться. Иная ситуация подобного рода — когда дуговые элементы и окружности выглядят «угловатыми» — они становятся ломаными линиями. Для решения этих проблем смотрите наш урок. Мы расскажем, как следует использовать команду «Регенерировать все» (всереген или _regenall в командной строке) и как вывести кнопку регенерации на Панель быстрого доступа.
Опубликовано в: интерфейс и настройки
Отключение и включение регенерации
Разрабатывая различные коды для 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’у плевать.
Если задача состоит именно в том, чтобы в текущий чертеж добавить сотни или тысячи примитивов, или выполнить многократное изменение какого-либо примитива (например, надо подогнать высоту и ширину многострочного текста так, чтобы он вписывался в определенные рамки), то наиболее быстрым вариантом, с моей точки зрения, является реализация примерно следующего алгоритма:
- Создание большого количества примитивов
- Создание описания анонимного блока
- Создание внутри этого анонимного блока всех нужных примитивов
- Вставка анонимного блока, его разбитие и уничтожение вхождения
Вариант плох тем, что база чертежа становится достаточно сильно фрагментированной: хендл описания блока, хендлы объектов внутри описания блока, хендл вхождения блока — и все это на выброс. Теоретически можно превысить предел хендлов (он хотя и велик, но не бесконечен). Но метод хорош тем, что вся работа выполняется абсолютно не затрагивая графическую область чертежа. И лишь в самом конце — вставка и разбитие.
- Создание описания анонимного блока
- Создание внутри этого анонимного блока нового примитива или копирование в него существующего
- Изменение созданного (или скопированного) примитива
- Получение нужных характеристик из созданного (скопированного) примитива
- Необязательное отключение REGENMODE
- Изменение реального примитива на основе полученных данных
- Восстановление REGENMODE
-
Этот вариант тоже не без недостатков. И они те же, что и у первого: ненужная фрагментация базы чертежа, хотя и не такая глобальная.
Конечно, можно выкрутиться: создать новый документ (чтобы в него не переключиться, создавать наверняка придется через ObjectDBX), в нем все делать, а потом просто импортировать соответствующие элементы. Но на моей практике такого пока еще не требовалось.
Как таковая регенерация с точки зрения пользователя — благо. С точки зрения программиста-лиспописателя — зло. В последних версиях AutoCAD вроде бы научился корректно обрабатывать текущее значение REGENMODE, но я в этом совсем не уверен. Поэтому сейчас я использую один из двух показанных вариантов. Скорее всего, есть третий, четвертый и т.д. (про .NET только не рассказывайте, ладно? :)) — но до них я пока не дошел.
