Некоторые тонкости работы с внешними ссылками.

Сегодня в скайпе достаточно долго общались на предмет "много внешних ссылок большого объема, работать почти невозможно. Кто виноват, что делать и как дальше жить?"

Не претендуя на истину в последней инстанции, хочу попытаться рассмотреть некоторые вопросы настройки системы, сети и AutoCAD.

Ну, касательно сети много не скажешь - понятно, что никакого WiFi или (брррр!) коаксиала. Нормальная витая пара с пропускной способностью не ниже 100 мегабит.

ОС: места на системном диске - побольше, винты - побыстрее. Остальное - по вкусу. В нашем случае не это критично.

Осталась самая малость: настроить сам AutoCAD. Поехали!

Во избежание непредсказуемых вопросов предположим, что вся контора работает по крайней мере на одной версии AutoCAD. Неважно, на какой - 2005, 2008 или 2013. Главное, что черезполосицы нет.

Далее. Набор ПО одинаков: если у кого-то AutoCAD Architecture, то у остальных либо AA, либо (как минимум) установлены соответствующие ObjectEnabler'ы. Теоретически в настройках можно сделать так, чтобы AutoCAD пытался сам вылезти в интернет и скачать соответствующий ObjectEnbaler. Практически подобное, как правило, нереализуемо: всем подряд проектировщикам никто доступа в интернет не даст. Так что это головная боль местных сисадминов / сапровцев.

Теперь будет очень много копий со справки, с моими комментариями. Хотите - читайте, не хотите - сразу комментируйте :)

Системная переменная Описание Пояснение (с возможными рекомендациями)
proxynotice Показывает уведомление о наличии в файле прокси-объектов.

0 Окна не показывается
1 Окно показывается
Лично я ставлю в 1. Хотя бы для того, чтобы понимать, что в файле может "работать не так".
proxyshow Управляет показом прокси-объектов

0 Прокси не показываются
1 Прокси показываются полностью
2 Вместо прокси видим прямоугольники
Обычно ставлю в 1. В таком случае уже многократно упоминавшийся ExplodeAllProxy сработает нормально

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

Системная переменная Описание Пояснение (с возможными рекомендациями)
demandload Задает условия подгрузки приложений и ObjectEnabler'ов

0 Отключение подгрузки. Ничего не грузится и как будет отображаться и обрабатываться - одному богу известно
1 Подгружает соответствующее приложение или ObjectEnabler при открытии чертежа, но не при вызове команды
2 Подгружает приложение / ObjectEnabler только при вызове соответствующей команды
3 Приложение или ObjectEnabler грузится при открытии файла или при вызове команды
Ставлю равным 2. В таком случае при proxyshow = 1, proxynotice = 1 у меня:
а) не грузится ничего лишнего
б) файл более-менее нормально отображается
в) я в курсе того, что в файле есть "лишнее" и могу это очистить. Соответственно я готов к проблемам при печати файла или использования буфера обмена.

Прежде чем продолжим, немного теории в моем понимании.

Есть такой параметр, который мало кто трогает - индексы. Фактически индекс для dwg - это как содержание для книги. Работать удобнее, но хорошее содержание запросто утяжеляет книгу.

Индексов в dwg практически два: пространственный и слоевой.

Пространственный индекс организовывает объекты по их положению в трехмерном пространстве. Такой индекс может оказаться полезным при подгрузке подрезанной внешней ссылки: считываются только объекты внутри контура подрезки.

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

Индексы можно создавать как принудительно при сохранении файла, так и возложить эту высокую миссию на AutoCAD.

Для ручного создания индексов вызовем окно "Сохранить как" и в выпадающем списке "Сервис" (в английской версии - Tools) выберем Параметры (Options). А там напрямую указано, какой индекс создавать.

Но каждый раз туда не набегаешься, поэтому обратимся к справке:

Системная переменная Описание Пояснение (с возможными рекомендациями)
indexctl Управляет созданием индексов и их сохранением в файле

0 Индексы не создаются. Значение по умолчанию.
1 Создается только слоевой индекс
2 Только пространственный индекс
3 Создавать оба индекса
Обычно не трогаю, для больших файлов (благо их немного пока) предпочитаю создавать индексы принудительно

Сама по себе indexctl имеет весьма посредственное влияние. Для комфортной работы понадобится еще кое-что:

Системная переменная Описание Пояснение (с возможными рекомендациями)
treedepth Задает максимальное число ветвлений древовидного пространственного индекса.

0 Запрещает использование пространственного индекса. Теоретически позволяет работать с большими чертежами - порядок обработки объектов внешних ссылок неизменен и определяется положением объектов в базе подгружаемого dwg
>0 Включает пространственный индекс.
<0 Наплевав на индекс, все объекты рассматриваются как двумерные. Требуется только для 2D-чертежей
Системная переменная хранится в чертеже, поэтому либо меняем в шаблоне, либо используем соответствующие лиспы / arx / dll, меняющие эту переменную.
По умолчанию значение 3020. В картографии, например, можно попытаться использовать либо 0, либо отрицательное значение.
treemax Самая непонятная для меня переменная. С одной стороны, она ограничивает память компьютера на обработку индексов. С другой - позволяет обрабатывать чертежи, созданные на более мощных компьютерах. Не экспериментировал. Значение по умолчанию 10 000 000 не менял ни разу.

Так, с индексами вроде бы все. Осталась совсем мелюзга:

Системная переменная Описание Пояснение (с возможными рекомендациями)
xloadctl Регулирует режим подгрузки ссылок.

0 Отключает режим подгрузки; открывается весь чертеж.
1 Включает режим подгрузки. Открывается файл ссылки.
2 Включает режим подгрузки. Открываются и блокируются копии чертежей внешних ссылок; чертежи внешних ссылок не блокируются
По умолчанию значение 2. Т.е. файл ссылки копируется в каталог, установленный в xloadpath либо каталог расположения временных файлов AutoCAD и "подсасывается" уже оттуда.
Насколько я понял логику системной переменной: если установить xloadctl в 0, то ссылка будет проигнорирована. При 1 ссылка будет загружена оттуда, где она физически находится. При 2 файл копируется на локальную машину и подгружается уже с нее.

Теоретически при значении 2 работа на локальной машине будет наиболее быстрой, но при 0 можно будет просмотреть основной чертеж без попытки нахождения внешних ссылок. А при 1 на локальной машине ничего лишнего не будет появляться. Правда, и нагрузка на сервер / сеть будет аховая :(

Однозначной рекомендации дать не могу. Все зависит от конкретной ситуации.

xloadpath Папка для временных файлов внешних ссылок Имеет значение только для xloadctl = 2. По умолчанию совпадает с каталогом временных файлов AutoCAD.

В некоторых случаях (например, есть свободный HDD с увеличенным быстродействием) можно ее заменить. Да и чистить отдельный каталог, понимая, что в нем находится, всяко проще.

Пару раз для эксперимента менял значение, но заметного прироста производительности не обнаружил

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

Размещено в AutoCAD · Метки: , ,



Поделитесь своим мнением


Я не робот.