ADN Open CIS
Сообщество программистов Autodesk в СНГ

15/05/2014

Внутри палитр инструментов в AutoCAD часть 3 - Удаление инструментов и палитр.

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

Для полноты картины сначала удалим инструмент средствами AutoCAD, потом отредактируем файл *.atc (удалив инструмент), потом удалим полностью палитру через AutoCAD - и проверим, что и когда меняется. Естественно, удаляем инструменты с дополнительных палитр, штатные не трогаем.

Начнем с удаления инструмента через AutoCAD. Что самое интересное, механизм удаления инструментов одинаков для всех версий AutoCAD.

При запущенном AutoCAD После закрытия AutoCAD
Удаляется рисунок (рисунки) из каталога Images, отвественный за отображение инструмента Из файлов Profile.aws (и для AutoCAD 2009 - FixedProfile.aws), а также файла соответствующей палитры (atc) удаляется запись об удаленном инструменте. Поиск данных об инструменте выполняется не по имени, а по следующему закону:
  • файл aws: поиск выполняется по имени узла Tool и значению атрибута ID, равному GUID удаляемого инструмента
  • файлы atc: поиск идет по имени узла ItemID и значению атрибута idValue (также равному GUID удаляемого инструмента)
При внесении изменений а файлы *.atc необходимо дополнительно внести изменения в узел Palettes -> Properties -> Time, изменив атрибуты createdUniversalDateTime, modifiedUniversalDateTime и refreshedUniversalDateTime по принципу "ГГГГ-ММ-ДДTЧЧ:ММ:СС". Символ "Т" пишется на английском языке и является обязательным.

Удаление палитры также происходит практически одинаково для всех версий AutoCAD:
При запущенном AutoCAD После закрытия AutoCAD
Удаляется рисунок (рисунки) из каталога Images, отвественный за отображение инструмента Вносятся изменения в FixedProfile.aws, Profile.aws. Уничтожаются упоминания об удаленной палитре из этих файлов, описаний групп и... И все! Файл *.atc не удаляется! Выполняется поиск узла с именем Palette и значением атрибута ID, равном GUID удаляемой палитры.


Теперь попробуем во время загрузки AutoCAD'a его притормозить - ну, например, внеся в файл acaddoc.lsp элементарную конструкцию вида И до тех пор, пока в AutoCAD'е висит это модальное окно, внесем принудительные изменения в файлы палитр и aws. И вот тут выяснится очень интересная особенность:
  1. Удаление записи об инструменте только из файла atc не ведет к изменению отображения соответствующей палитры (конечно, при условии, что она уже была "откеширована" в Profile.aws (и для AutoCAD 2009 - дополнительно в FixedProfile.aws)
  2. Если удалить запись об инструменте из aws (до момента показа палитр), то инструмент "исчезает" из палитры. Точнее, он не показывается пользователю


Автор: Алексей Кулик

Обсуждение: http://adn-cis.org/forum/index.php?topic=734

Опубликовано 15.05.2014