понедельник, 25 марта 2013 г.

Палитры инструментов AutoCAD и версия Windows

В нашей организации на сервере хранится общий набор палитр инструментов  (tool palettes), тех, что открываются/закрываются в AutoCAD по нажатию Ctrl + 3. Палитры созданы "родными" средствами AutoCAD 2009 SP3 и в нём же они и используются. На локальных машинах находятся локальные копии того, что находится на сервере. Если возникает необходимость внести изменения в общие палитры инструментов, то я делаю это на своей локальной машине, после чего удаляю серверный набор палитр, заменяя его отредактированной мною локальной версией. Затем с сервера все выполненные мною изменения автоматически распространяются по всем локальным машинам. Такой подход успешно работал на протяжении нескольких лет, до недавнего времени...

Изначально, на всех локальных машинах, в т.ч. и на моей, была установлена операционная система Windows XP SP3 x86 Rus. Однако в настоящее время мы постепенно переходим на Windows 7 x64 SP1 Rus. Около полугода назад на 7-ку был переведён и мой компьютер. В то время я не заметил каких-либо проблем, связанных с этим переходом. 

Недавно мне понадобилось внести некоторые правки в уже существующие на палитре инструментов кнопки, а так же добавить ряд вкладок с дополнительными кнопками. Я выполнил все изменения и обновил палитры на сервере. Через некоторое время от пользователей стали поступать жалобы на то, что при нажатии некоторых кнопок на палитре инструментов, либо при попытке просмотра их свойств (из контекстного меню) происходит моментальное обрушение AutoCAD. Самое неприятное в этом явлении то, что происходит всё мгновенно, без каких либо предупреждений и окошек с сообщениями (не появляется даже всем хорошо известный Fatal Error с последующим за ним вопросом о необходимости сохранения чертежа). Т.о. пользователи теряют все изменения, выполненные в чертежах с момента их последнего сохранения. 

С обозначенной проблемой ко мне обратилось сразу несколько пользователей. На своём компьютере я не смог воспроизвести проблему. Однако у меня под рукой всегда имеется несколько виртуальных машинок, работающих под управлением Windows XP x86 SP3 Rus, предназначенных для различного рода тестов. На тестовых машинках проблема воспроизвелась. Сразу же бросилось в глаза то, что обрушения происходили при обращении к кнопкам, которые я недавно либо отредактировал, либо добавил. Все прочие кнопки, расположенные на палитре работали нормально.

Я протестировал работу палитры на компьютерах нескольких пользователей, и выяснил, что проблема воспроизводится только на машинах, работающих под управлением Windows XP x86 SP3 Rus, а на компьютерах с Windows 7 x64 Rus никаких проблем не возникало.

Если палитра инструментов AutoCAD 2009 SP3 создана или отредактирована средствами указанного AutoCAD, работающего под управлением Windows XP x86 SP3, то такая палитра успешно работает и в AutoCAD 2009 SP3 x64, работающий под управлением Windows 7 x64 SP1 . Однако если эту палитру отредактировать в AutoCAD 2009 SP3, работающем под управлением Windows 7 x64 SP1, то при попытке обращения к отредактированным элементам (именно к изменённым или добавленным, а не ко всем) с компьютера, работающего под управлением Windows XP SP3 x86 мы получаем мгновенное обрушение AutoCAD 2009 SP3 x86 на этом компьютере.

Решение:
Я удалил все элементы, ранее отредактированные или добавленные мною в Windows 7 x64  и заново создал их, но в Windows XP SP3 x86. Как следствие - проблема исчезла.

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

4 комментария:

Андрей Строитель комментирует...

Возможно палитры, созданные на 64bit AutoCAD, не перевариваются 32bit-ными. Я не стал рисковать, пока все машины не переведены на единую систему, настройки забираются раздельно. Для систем 64bit - одни файлы, для 32-bit - другие. Неудобно конечно, отнимает время, но зато точно знаю, что не будет неожиданностей.

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

Andrey Bushman комментирует...

@Андрей Фазлеев
Файлы палитр инструментов - это обычные текстовые файлы - XML если быть точнее. Такие файлы совершенно не привязаны к разрядности софта. Налицо явный баг API самого AutoCAD, с помощью которого эти файлы редактируются.

Анонимный комментирует...

Андрей здравствуйте.
Подскажите, у Вас в компании палитры AutoCad хранятся на сервере и периодически копируются на локальные компьютеры пользователей? AutoCad каждого конкретного пользователя использует в качестве рабочего каталога с палитрами - локальный каталог?
Каким образом удается сохранять настройки оформления палитр?-(имеется ввиду текстовые пометки, разделители, и самое главное принадлежность палитр к определенным группам)?

В моей организации эта проблема решена немного криво. Файлы палитр (atc - файлы и изображения к ним) выложены на сервер, периодически они заменяются у каждого конкретного пользователя на компьютере. И одновременно с этим заменяется профиль, с текущего - на профиль "настройщика" палитр.
Получается, что пользователям бесполезно настраивать AutoCad под себя,- так как в любой момент может придти этот инженер-настройщик и экспортировать всю свою среду работы. Если не заменять профиль, то слетают настройки палитр- все палитры вываливаются в общую кучу, что делает их использование не удобным.

Andrey Bushman комментирует...

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

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

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

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