22 ноября 2009 г.

Внедрение CAD Стандарта. 1 этап

20 ноябяря был год как я работаю в своей компании. Обычно по прошествии такого времени подводят какие-то итоги и намечают планы на следующий год. Поступлю так же...
Меня взяли на работу с тем, чтобы разработать и внедрить Стандарт предприятия и оказывать поддержу CAD пользователям. Опыта в этом деле у меня практически никакого не было, я просто хорошо знал наш любимый AutoCAD и мог решать некоторые каждодневные проблемы пользователей. Был разработан план моей деятельности в организации на ближайшие полгода.... я слишком много хотел... много и сразу... не удивительно что план провалился :) я понял что ни хрена ничего не знаю и начал вбирать в себя знания и опыт иностранных коллег...
За этот год я впитал в себя огромное количество информации, что-то взял на вооружение, что-то отложил в долгий ящик... Радует то, что всю эту информацию я искал сам, это была именно нужная мне информация, а не просто дерьмо, льющееся из телевизора и новостных сайтов, которое хочешь-не хочешь пропускаешь через себя. Хочется верить, что я стал чуточку умнее... :) Я многое узнал о том, как работают в иностранных компаниях, изучал их стандарты, Best Practices, штудировал блоги, в конце концов я понял что нужно сделать и какого результата хочу добиться.
Я начал разрабатывать Стандарт предприятия и ошибочно считал, что вот-вот допишу Стандарт, потом в одночасье внедрю его и все мне будут благодарны и вообще все будет шикарно. Написав его процентов на 30-40, я осознал что если его сразу внедрить, то это будет подобно революции, с кучей "жертв среди мирного населения", в том числе и с моей жертвой ;) Внедрять его целиком и сразу нельзя, т.к. это должна быть все таки эволюция, а не революция. Внедрение будет поэтопное, приблизительный промежуток времени между этапами - 1-2 месяца.
Итак, первый этап будет состоять из двух составляющих:
  1. Слои. Еще полгода тому назад мной были разработаны и введены в режиме бета-тестирования слои отделов ГП и ВК. Недавно пользователи других отделов стали просить разработать и для них слои. Вобщем результат был положительный.
  2. Листы (Layout'ы). В моей организации исторически так сложилось, что чертежи в формат PDF и DWF переводят системщики. Полной вздор! Недавняя практика срочного выпуска документации заставила меня заняться искоренением этого дела. Не барское это занятие в DWF чертежи перегонять по одному :) Вместе со слоями выйдет установка о оформлении всех чертежей в листах (Layout'ах) с тем, чтобы выпускать их с помощью команды PUBLISH.
Таким образом, план на ближайшую неделю намечен.
Все происходящее, буду здесь описывать.

27 октября 2009 г.

Setting up AutoCAD Enterprise Environment. Part 2 (Настройка AutoCAD'a для корпоративной среды. Часть 2)

Недавно я описывал свой метод настройки AutoCAD'ов пользователей для работы в корпоративной сети. С того времени прошло более чем полгода и, надо признать, что метод хранения файлов кастомизации в сети не является наилучшим решением (по крайней мере в моей организации).
Изучив подходы иностранных коллег пришел к выводу что наиболее оптимальным решением является метод, который предлагает STEVE BENNETT в серии постов How to deal with 300 users that all want it their way. Метод основан на банальном импорте настроенного профиля AutoCAD на рабочем компьютере пользователя.
Вкратце суть такова:
  1. Настраиваем AutoCAD на своем комьютере так как хотим чтоб он был настроен на компьютерах пользователей.
  2. Экспортируем настроенный профиль.
  3. Создаем дистрибутив при помощи Inno Setup куда помещаем все впомогательные файлы, необходимые для работы с настроенным профилем, в том числе и настроенный профиль.
  4. Распространяем программу по рабочим компьютерам пользователей.
Пока не решил еще как обновлять файлы кастомизации: отдельным файлом обновлений или посредством скрипта, выполняемого при входе пользователя в домен, который бы сверял версии файлы у пользователей с последними файлами на сервере....

21 апреля 2009 г.

Tool Palettes. Enterprise Level

Созданные и размещенные в сетевом окружении Tool Palettes представляют собой довольно таки мощный инструмент для поддержания корпоративного стандарта предприятия. Они позволяют всем пользователям использовать одни и те же блоки, типы линий, штриховок и т.д. и т.п.. Но есть и свои минусы. Например, не получится сгруппировать должным образом палетки так, как мы привыкли их группировать, имея их на локальном диске. Поэтому приходится идти на кое-какие ухищрения, подробно расписанные неким John'ом из Австралии, здесь и здесь ;)
Итак, групировать будем просто раскидав палетки по папкам:
Имеем главную папку на сервере, например, \\Server\CADMAN\Toolpalettes. А в ней следующие папки, которые будут служить группами (рекомендую всегда называть папки на английском или использовать транслит, но для данной статьи оставляю имена на русском):
  • Генплан
  • Конструкторские
  • Архитектурные
  • ОВ и ВК
  • Электрика
  • и др.
В общем, создаем в каждой папке соответствующие palettes. Для этого в AutoCAD'е заходим в Options -> Files -> Tool Palettes File Locations и временно указываем ту папку, palettes которой в данный момент будем создавать. Проделываем все это для каждой из папок.
А теперь создадим быстрое переключение между Tool Palettes. Мы же в конце концов не так жестоки к пользователям чтоб принуждать их всякий раз заходить в Options и менять Tool Palettes File Locations на нужную в данный момент папку ;) Не знаю как у вас, но метод John'а, описанный во второй статье под названием Toolpalette Swapping у меня не сработал, но принцип остался тем же.
Вместо переключения папок с palettes посредством макроса типа "^C^C_ToolPalettesClose *_toolpalettepath "S:/!_ToolPalettes/ToolPalette" я использовал lisp-routine ToolPalettesPathSwapping.lsp следующего содержания:

;;;Глобальная перменная #CADMAN# назначается в acad.lsp
;;;и указывает на расположение главного каталога с файлами
;;;кастомизации на сервере (например "\\\\Server\\CADMAN")
;;;
;;;Загрузка ToolPalettes из папки "Конструкторские"
(defun C:TP_Structural (/ path)
(command "_ToolPalettesClose")
(setq path
(strcat
#CADMAN# "\\ToolPalettes\\Конструкторские"
)
)
(vla-put-ToolPalettePath
(vla-get-files (vla-get-preferences (vlax-get-acad-object)))
path
)
(command "_ToolPalettes")
)
;;;
;;;Загрузка ToolPalettes из папки "Архитектурные"
(defun C:TP_Architect (/ path)
(command "_ToolPalettesClose")
(setq path
(strcat
#CADMAN# \\ToolPalettes\\Архитектурные
)
)
(vla-put-ToolPalettePath
(vla-get-files (vla-get-preferences (vlax-get-acad-object)))
path
)
(command "_ToolPalettes")
)
;;;Я думаю суть ясна, проделываем то же самое для остальных папок.
;;;Естественно, что этот файл должен находится в соответствующей папке,
;;;путь к которой прописан в Support Files Search Paths AutoCAD'a.

Создаем панель инструментов, называем соответствующим образом, располагаем на ней кнопки, обозначающие группы palettes. К кнопкам прикручиваем макрос вида: ^C^C(if (not C:TP_Structural) (load "ToolPalettesPathSwapping"));TP_Structural;
Можно также последовать примеру John'а и сделать кнопку для загрузки локальных пользовательских palettes с таким макросом: ^C^C(command "ToolPalettesClose" "*_toolpalettepath" (strcat (getvar "ROAMABLEROOTPREFIX") "Support/ToolPalette") "ToolPalettes")
В итоге должно получиться что-то в этом роде ;-D

18 апреля 2009 г.

AutoCAD 2010 Express Icons

Да я все-таки сделал это, было не легко, а точнее скучно, но я справился! Искал в интернете их, но нигде не нашел, поэтому пришлось повозиться самому:)  А делал следующим образом. AutoCAD хранит свои иконки в файле acadbtn.xmx, который можно найти в папке "C:\Program Files\AutoCAD 2010". Открываем его с помощью утилитки Resource Hacker 3.4.0. Потом Actions -> Save all Resources, далее выбираем папку куда будут сохранены все иконки. После завершения процесса в выбранной папке появятся иконки с расширением bin и файл с расширением res. Открываем Paint и кидаем в него нужный файл bin, затем сохраняем как BMP. Возможно есть способ быстрее, но я его не нашел. Если вам он известен, то буду рад узнать:)
Далее, в сохраненных BMP фон иконок почему-то стал черным. Пришлось менять его в Photoshop'е инструментом Replace Color. Даже после того как я все это проделал, я остался неудовлетворен результатом, потому что какой только цвет фона я не подбирал, все равно мои иконки в AutoCAD'е появлялись на сером фоне, т.е. отличным от того какой фон подбирает AutoCAD  для своих родных иконок. Порывшись в интернете я узнал что цвет 192,192,192 AutoCAD воспринимает как прозрачный и что именно его нужно было использовать для фона моих иконок. Опять значит Photoshop и Replace Color на 192,192,192. Наконец-то нужный результат был получен, иконки выглядят словно родные AutoCAD'овские. Но меня не хватило на изменение цвета больших иконок, поэтому оставлю это занятие но то время, когда мне будет нечего делать...
Итак, что мы имеем:
  • измененный мною Express'овский acetmain.cui  с добавленными Ribbon Tabs и Panels как в AutoCAD 2010
  • ну и acetmain.dll к нему

13 апреля 2009 г.

Setting up AutoCAD Enterprise Environment. Part 1 (Настройка AutoCAD'a для корпоративной среды. Часть 1)

Долго искал оптимальный вариант для получения желаемого результата и в итоге остановился на связке программы Acad Install и небольшой lisp-routine под названием Enterprise_setup.lsp.
Итак схема такова:
1. Acad Install прописывает папки в Support Folders Search Paths AutoCAD'a, и первой в этом списке папок идет папка Admin, в которой лежат файлы acad.lsp и acaddoc.lsp. Он также устанавливает custom.cui пользователя в качестве Main CUI и создает новый профайл.
2. В acad.lsp есть строка на запуск Enterprise_setup.lsp. Routine устанавливает Enterprise.cui или Enterprise172.cui в качестве Enterprise CUI для версий AutoCAD'a 2008 и 2009 соответственно и подгружает остальные Partial CUI если необходимы.

Собственно Enterprise_setup.lsp:
;;;Глобальная перменная #CADMAN# назначается в acad.lsp
;;;и указывает на расположение главного каталога с файлами
;;;кастомизации на сервере (например "\\\\Server\\CADMAN")
;;;
;;;УСТАНОВКА КОРПОРАТИВНОГО CUI
;;;
(vl-load-com)
(defun whatAcadVer ()
(if (= 17.2 (atof (substr (getvar "ACADVER") 1 4)))
(vla-put-EnterpriseMenuFile
(vla-get-files (vla-get-Preferences (vlax-get-acad-object)))
(strcat #CADMAN# "\\CUI\\Enterprise172")
)
(vla-put-EnterpriseMenuFile
(vla-get-files (vla-get-Preferences (vlax-get-acad-object)))
(strcat #CADMAN# "\\CUI\\Enterprise")
)
)
)
;;;
(defun c:whatAcadVer ()
(WhatAcadVer)
(princ)
) ;_ end of defun
(whatAcadVer)
;;;
;;;УСТАНОВКА ДОПОЛНИТЕЛЬНЫХ PARTIAL МЕНЮ
;;;
(and (not (menugroup "PARTIAL1"))
(setq #fil_Partial1 (findfile "Partial1.cui"))
(command "menuload"
#fil_Partial1
)
)
(and (not (menugroup "PARTIAL2"))
(setq #fil_Partial2 (findfile "Partial2.cui"))
(command "menuload"
#fil_Partial2
)
)
(and (not (menugroup "PARTIAL3"))
(setq #fil_ Partial3 (findfile "Partial3.mnu"))
(command "menuload"
#fil_Partial3
)
)
(and (not (menugroup "EXPRESS"))
(setq #fil_acetmain (findfile "acetmain.cui"))
(command "menuload"
#fil_acetmain
)
)