Сравнение значений системных переменных на нескольких компьютерах

Наверняка каждый сталкивался с ситуацией, когда один компьютер файл dwg обрабатывает легко и просто, а второй - еле шевелится. Понятно, что "вроде бы все одинаково". А что "неодинаково"?

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

Список переменных взят как результат обработки файла acadinfo.txt, генерируемого командой acadinfo из AutoCAD (команда выполнялась на AutoCAD 2015 и 2016) и по результатам команды sysvdlg (также AutoCAD 2015/2016). Некоторые переменные (такие, например, как CDATE) обрабатывать нет никакого смысла - они закомментированы и не удалены из общего списка только "для истории".

Код импортирует в AutoCAD 2 команды:
sysvarexport : выполняет опрос заявленных переменных и выводит результат в txt-файл.
sysvardiff : запрашивает txt-файл, сгенерированный командой sysvarexport, анализирует его, получает значения соответствующих переменных и сравнивает их текущие значения с "эталонными" значениями. Результаты сравнения выводятся в html-отчет, который и открывается в браузере. В отчете указываются только переменные, значения которых отличаются от "эталонных".

Код можно брать здесь.
---
Добавлено: по результатам обсуждений с Андреем (и статьи Перечень системных переменных AutoCAD) в качестве первого обновления - расширен список системных переменных. Исправленный код здесь: sysvar-operations

Version 0.0.2 : код, дополненный переменными ACAD2017, можно тестировать. Забираем прямо отсюда.

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



Комментарии

Есть 9 коммент. к “Сравнение значений системных переменных на нескольких компьютерах”
  1. Андрей пишет:

    Возможно ссылок "лишних" переменных следует расширить... http://s7.hostingkartinok.com/uploads/images/2015/09/f12256c5f691e199f1f31848014c6ab9.png

  2. Андрей пишет:

    >Наверняка каждый сталкивался с ситуацией, когда один компьютер файл dwg обрабатывает легко и просто, а второй – еле шевелится. Понятно, что “вроде бы все одинаково”. А что “неодинаково”?

    Дело может не ограничиваться настройками. Например, если с DWG работают через подшивки, то на скорость работы может СУЩЕСТВЕННО влиять тот факт, имеет ли юзер административные права. Так что сравнивание переменных - это не "серебрянная пуля"...

  3. Кулик Алексей aka kpblc пишет:

    Ага. Только не сегодня :)

  4. Кулик Алексей aka kpblc пишет:

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

  5. Андрей пишет:

    Если бы надёжно сравнивать состояние системных переменных можно было и в 2009-2014, то это бы существенно повысило карму твоего кода :) Состав переменных у 2009 и 2015 отличается. Кроме того, например, в 2013-м присутствовали переменные, которых нет в др. версиях. это переменные, связанные с безопасностью. Эти переменные появились в 2013-м и исчезли тут же в 2014-м. Кстати, если бы в отчёте сразу присутствовала инфа и о том, работает ли текущий юзер с правами админа - это было бы не лишним, когда DWG редактируется через подшивки :)

    Далее, не забывай, что часть переменных хранится в самом чертеже... В отчёте, наверное, лучше предупредить о том, что бездумная правка свойств может выйти боком. Например, редактирование переменной PROJECTNAME может очень неприятно удивить пользователя, не имеющего представления о том, как она работает... Т.о. имеет смысл (имхо) в отчёте переменнные разбивать по группам: общие для AutoCAD и индивидуальные для чертежа.

  6. skkkk пишет:

    Когда-то давно я мечтал о подобном инструменте, до тех пор, пока не обнаружил команду sysvdlg из ExpressTools. Ей я создаю пару txt-файлов с перечнем переменных и их значением, а затем с помощью плагина Compare для Notepad++ отправляю их на сравнение. Они показываются рядом друг с другом, при этом различия вполне понятно подсвечиваются. Правда, указанная команда почему-то не импортирует в файл переменные "только для чтения", на чем я лично пару раз минимум споткнулся.

    Сейчас не возьмусь судить, какой из вариантов считаю более удобным.

    Однако, у твоей программы, Алексей, есть неоспоримый плюс - гибкость в модернизации и улучшении. Например, можно добавить в конце выполнения кода запрос типа: "Назначить переменным в текущем файле "эталонные" значения? [Да/Нет]". И в идеале выводить DCL-диалог с их перечнем и предложить расставить пользователю галочки напротив тех переменных, которые он хотел бы восстановить или наоборот, убрать те, которые восстанавливать не стоит. Конечно, это можно сделать и другими путями, возможно более удобными, но мысль возникла, и почему бы не поделиться, подумал я :).

  7. Сергей пишет:

    Супер код, очень нужный!
    Жаль только что уже имеется AutoCAD 2017 в котором таблицы ведут себя по разному, в отличие от работы в этих же файлах например в AutoCAD 2014.
    Видимо опять добавлены новые системные переменные которые этот код не обрабатывает...
    Но код реально супер. Почти полностью можно решить проблему почему в одном файле команды работают одним образом а в другом - совсем по другому (файлы сторонние - присланные смежниками, заказчиками и т.д.)

  8. Кулик Алексей aka kpblc пишет:

    Список переменных дополнил (по крайней мере тем, что смог быстро найти в стандартных командах; по справке особо не ползал). Код сравнения не тестировал - просто не успеваю :( Если получится, сегодня попробую поиграться.

  9. Кулик Алексей aka kpblc пишет:

    Переменные для 2017 вбил в код. Ссылка в начале топика. Скачайте, пожалуйста, проверьте (у меня просто физически сейчас нет времени на нормальное тестирование).

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


Я не робот.