| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Шаблон оформления плагинов AutoCAD

Шаблон оформления плагинов AutoCAD

Ответ
Поиск в этой теме
Непрочитано 18.04.2012, 21:45 2 |
Шаблон оформления плагинов AutoCAD
hwd
 
C, C++, C#
 
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762

Выкладываю свой вариант шаблона оформления плагинов AutoCAD. В прикреплённом архиве находится упакованный архив чистого шаблона и CHM-файл, в котором подробно разжёвано всё, что касается работы с данным шаблоном. Если кратко, то в основу шаблона положены следующие моменты:
  • Ориентация на коллективную работу
  • Самодокументирование приложения
  • Автоматическая синхронизация содержимого документации в соответствии с состоянием настроек
  • Простая возможность расширения существующего перечня локализаций
  • Возможность программной/пакетной обработки плагинов
  • Получение исчерпывающей информации о приложении открытием файла readme.html
  • Управление сразу всеми имеющимися версиями приложения (скомпилированными под разные AutoCAD)
Если ещё более кратко, то шаблон построен на связке XML + XSD + XSLT.

Конструктивные замечания/пожелания приветствуются. Могу выложить примеры плагинов, упакованных в данный шаблон, но это уже не сегодня.

UPD. Обновил архив - исправил серьёзную опечатку и добавил пример группирования и отображения команд.

UPD2. Завернул в шаблон программу Александра Ривилиса. Прикреплён внизу как DwgConvert.zip. Нужно распаковать архив и открыть файл readme.html.

UPD3. Перезалил оба архива. Внёс в шаблон некоторые правки, касающиеся визуального отображения, добавил в оглавление readme.html ещё один раздел, с помощью которого можно попадать в каталог нужной версии программы. Внёс изменения в chm-файл мануала.

UPD4. Перезалил оба архива. Внёс в шаблон некоторые правки, касающиеся визуального отображения, а так же расширил логику динамического формирования панели навигации readme.html - теперь в него можно добавлять произвольное количество групп с произвольным количеством позиций (помимо уже существующих). Частично изменил структуру и содержимое каталогов, например - в каталоге ./support находится только то, что не требует изменения (т.е. разработчику туда можно не заглядывать). Внёс соответствующие изменения в chm-файл мануала. Соответственно изменённому шаблону модифицировал пример приложения, построенного в соответствии с шаблоном.

UPD5. Перезалил оба архива. В шаблоне внёс изменение в файл appinfo.xslt, чтобы в таблицах имена команд, каталогов и файлов выделялись жирным шрифтом (так их легче читать), а так же исправил одну опечатку. Во второй архив добавил ещё два примера. Всё, более примеров выкладывать не буду - достаточно трёх.

UPD6. Перезалил оба архива. В шаблонах внёс некоторые изменения в файлы XSD, а так же в файл versions.xml, для возможности корректного описания LISP-программ. В архив samples, по просьбам телезрителей добавил пример упаковки LISP-сборника. В тот же архив упаковал и ещё одно приложение от Александра Ривилиса. В примере упаковки LISP-программ я, в качестве опять же примера, в таблицу загрузок добавил несколько записей, указав, что загружать следует все файлы с расширениями lsp, fas и vlx, хотя на самом деле в примере имеются только lsp-файлы.

Вложения
Тип файла: zip template & manual.zip (952.3 Кб, 315 просмотров)
Тип файла: zip samples.zip (1.65 Мб, 343 просмотров)

__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 27.04.2012 в 13:37.
Просмотров: 29467
 
Автор темы   Непрочитано 03.05.2012, 17:04
#81
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


На основе того, что описывалось выше создана динамически формируемая справочная система (отдельное exe-приложение), которая выглядит следующим образом:



Логика такая: каталогов с плагинами (на скрине показан только один - "Песочница") может быть сколько угодно (на усмотрение администратора CAD). Например - в одном размещается то, что относится к нормоконтролю и стандарту предприятия, а в другом - дополнительные утилиты, полезные в работе. В GUI каждый такой каталог отображает вместо своего имени "человеческое" (например "Песочница" - это на самом деле каталог "sandbox"), понятное пользователю. Все плагины группируются по их авторам (инфа считывается из соответствующих XML-файлов и подставляется в нужных местах в GUI).

Те плагины, напротив которых юзер устанавливает галочки, будут автоматом загружаться в автокад (если под запущенную версию автокада имеется соответствующая версия плагина). На скрине видно, что одна из галочек включена и заблокирована - значит этот плагин установлен администратором CAD в автозагрузку для некоторой доменной группы, в состав которой входит текущий юзер). На основе снятия/установки галочек формируется XML-файл, содержащий в себе инфу о том, что следует грузить в автокад. Этой инфой пользуется загрузчик. Загрузчик сам определит нужно ли добавлять в Support Search Path какие-либо каталоги (если нужно - добавит их), а так же определит, нужно ли выполнять загрузку приложения, или же оно уже зарегистрировано в реестре с этой целью. Вся инфа считывается из соответствующих XML-файлов оболочек плагинов.

При выборе в древовидной структуре интересующего плагина, в правом контроле (WebBrowser) отображается содержимое файла readme.html выбранного плагина. Если в каталог плагинов добавить новый плагин - он автоматом появится в динамически формируемой справочной системе. Ну и, конечно же присутствует поиск по ключевым словам, который выполняется по всем доступным плагинам...

Я выдернул из плагинов инфу о том, пользователям каких доменных групп нужно грузить плагин - эта инфа теперь содержится в отдельном XML-файле, управляемым админом CAD (так будет правильней).
Миниатюры
Нажмите на изображение для увеличения
Название: 03.05.png
Просмотров: 621
Размер:	45.7 Кб
ID:	79607  
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 03.05.2012 в 17:33.
hwd вне форума  
 
Непрочитано 03.05.2012, 17:55
#82
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от hwd Посмотреть сообщение
если под запущенную версию автокада имеется соответствующая версия плагина
Все последующее - мысли вслух:
Скажу честно, я хоть и сам делал "установщики" плагинов используя данный алгоритм (установка под "запущенную версию"), но все-же данный метод ИХМО "кривоват" и скажем так для ленивых, (особенно, для Вашего проекта - так сказать "с претензией"), если настройка под запущенную версию, то она и должна запускаться непосредственно изнутри (перекомпилировать и собрать в твой-же сверток помеченный администратором + setup'ка для автозапуска, либо (startapp exe)) - в общем не суть, как реализовать. А если "отдельный exe" (что в общем правильно) - то типо выбрать все доступные версии (с предупреждением, если для некоторых нет плагинов), либо поддерево галочек из установленных&доступных в "свертке" версий автокада. Ведь это-же не инсталяшка 1-го плагина - а целая "система".
p.s. А в общем весьма красиво.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 03.05.2012, 18:19
#83
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
все-же данный метод ИХМО "кривоват"
у меня другое мнение на этот счёт. Метод избавляет юзера от необходимости изучения того, какие манипуляции от него требуются для того, чтобы плагин заработал. Наличие данной программы не является обязательным, поскольку плагины самодостаточны и самодокументированы - любой юзер, прочитав readme.html узнает, для каких версий автокада плагин будет работать, а так же что следует для этого сделать.
Цитата:
Сообщение от Дима_ Посмотреть сообщение
если настройка под запущенную версию, то она и должна запускаться непосредственно изнутри (перекомпилировать и собрать в твой-же сверток помеченный администратором + setup'ка для автозапуска, либо (startapp exe)) - в общем не суть, как реализовать.
этой фразы я не понял. Загрузчик плагинов, конечно же и сам является плагином автокада, а динамическая справка, показанная выше - отдельное exe-приложение, о чём я уже писал выше. для плагинов автокада создание msi-пакетов считаю нецелесообразным и даже неправильным решением.

Цитата:
Сообщение от Дима_ Посмотреть сообщение
А если "отдельный exe" (что в общем правильно) - то типо выбрать все доступные версии (с предупреждением, если для некоторых нет плагинов), либо поддерево галочек из установленных&доступных в "свертке" версий автокада.
выборка доступных версий - это лишние, не нужные телодвижения. сегодня доступны одни версии, завтра другие. Наличие галочек указывает на изъявление желения о подгрузке. Если под нужную версию автокада нет откомпилированной сборки - загрузка производиться не будет, но если со временем она появится - за счёт наличия галочки этот плагин автоматом попадёт в автозагрузку. Юзер прекрасно понимает, будет ли плагин грузиться в тот или иной автокад, поскольку в readme.html перечислены все системные требования, для которых плагин сможет работать.
Цитата:
Сообщение от Дима_ Посмотреть сообщение
Ведь это-же не инсталяшка 1-го плагина - а целая "система".
дин. справка - отдельное, не обязательное приложение. загрузчик плагинов ориентирован на работу с плагинами, построенными на основе шаблона (т.е. загрузчик имеет зависимость от структуры плагинов). В то же время плагины, построенные на базе шаблона независимы ни от чего (за исключением версии автокада) - их можно грузить вручную, не имея на руках загрузчик или дин. справку.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 03.05.2012 в 18:27.
hwd вне форума  
 
Автор темы   Непрочитано 05.05.2012, 10:51
#84
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


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

1. Убрал из обёртки информацию о доменных группах, которым грузится плагин (об этом уже писал выше). Эта информация теперь хранится в одном общем файле, чтобы с ней было удобней работать администратору CAD.
2. Добавил в оглавление новую страницу - "Программирование", в которой разработчикам размещается информация о vba и lisp-функциях (не путать с пользовательскими командами), предоставляемых библиотекой. Блок содержит полную информацию о каждой функции, с детальным описанием её назначения, а так же всех её параметров и результата работы. Помимо этого каждое описание функции содержит произвольное количество примеров, демонстрирующих работу функции с подробными примечаниями. Так же каждой функции имеется блок информации, предназначенный для размещения в нём произвольного количества важных примечаний, касающихся работы функции. С каждой функцией ассоциируется произвольное количество ключевых слов, как это сделано для команд, чтобы в динамической справке (скрин показан выше в топике) можно было искать не только команды, но и функции.
3. Помимо информации, относящейся непосредственно к функциям, имеется блок произвольных примеров, написанных на LISP, VBA, ObjectARX и .NET (на усмотрение разработчика).
4. Добавил возможность назначения ключевых слов плагину в целом. Это сделано для того, чтобы по ключевым словам можно было искать такие плагины, которые не содержат лисп-функций и команд, а работают в фоновом режиме (например программы нормоконтроля).
5. Добавил блок, сообщающий о наличии файлов меню доступных для плагина, их описании и расположении (рекомендуется хранить в ./settings).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 05.05.2012 в 17:38.
hwd вне форума  
 
Автор темы   Непрочитано 23.05.2012, 00:05
#85
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Релиз-кандидат. Пара скринов:

Первый


Второй


Ну и, на YouTube видео по теме, т.к. скринами много не покажешь: http://www.youtube.com/watch?v=M8Mk9VHC9Yc
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 950
Размер:	152.4 Кб
ID:	80769  Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 875
Размер:	160.5 Кб
ID:	80770  
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.05.2012, 01:25
#86
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Красиво ничего не скажешь, поясни пож. еще разок (я чуток уплыл по теме), твоя гуишка настраивает конфигурационный файл для твоего "основного корпаративного загрузчика", или вносит изменения напрямую в автозагрузку соответствующего автокада? (ну и если второе - то выкладывай что-ли).
Offtop: Прошу прощения за брюзжание, но всплывающие окошко со списком всех версий, это ИХМО совсем не айс, ну добавляй "нерабочие" как ReadOnly флажки в конец каждой ветки (с пунктом в контекстном меню - типо показывать все/рабочие или крыжиком), ну или еще как - а то это окошко смотриться как инородное тело (да и пункт в котором может не оказаться ни одной версии под установленные акады - тоже как-то не очень будет гармонировать).
p.s. про то что настраиваеться увидел на видео - жаль что не самостоятельная - но оно понятно.
p.p.s. просмотрев видео ВДРУГ понял, что совсем не учтено (системно так сказать) возможные отличия функционала в плагинах под различные версии (кроме как написать все в кучу или в доп. информацию по версии) - хотя это конечно не "большая беда" но продумать явно стоит.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 23.05.2012 в 02:03.
Дима_ вне форума  
 
Автор темы   Непрочитано 23.05.2012, 08:28
#87
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
твоя гуишка настраивает конфигурационный файл для твоего "основного корпаративного загрузчика", или вносит изменения напрямую в автозагрузку соответствующего автокада?
первый вариант верен - загрузчик идёт отдельным плагином. Он считывает информацию из двух, обозначенных мною на видео файлов и на основе этого делает всё, что от него требуется.
Цитата:
Сообщение от Дима_ Посмотреть сообщение
всплывающие окошко со списком всех версий, это ИХМО совсем не айс, ну добавляй "нерабочие" как ReadOnly флажки в конец каждой ветки (с пунктом в контекстном меню - типо показывать все/рабочие или крыжиком), ну или еще как - а то это окошко смотриться как инородное тело (да и пункт в котором может не оказаться ни одной версии под установленные акады - тоже как-то не очень будет гармонировать).
Это не всплывающее окошко, а модальное окно, вызванное из контекстного меню плагина. Если отображать всё, как ты предлагаешь, используя ReadOnly для отсутствующих версий, то иерархия существенно разрастается за счёт лишней информации. Юзер хочет видеть то, что может применить на своей машине. Если он захочет узнать о полном перечне доступных версий - вызовет соответствующий пункт контекстного меню и посмотрит информацию, которая будет показана ему в "инородном теле"(с). Изначально я отображал все версии, но затем отказался от этой идеи - текущий вариант мне нравится больше.

Цитата:
Сообщение от Дима_ Посмотреть сообщение
p.s. про то что настраиваеться увидел на видео - жаль что не самостоятельная - но оно понятно.
Не понял, это ты о чём?
Цитата:
Сообщение от Дима_ Посмотреть сообщение
p.p.s. просмотрев видео ВДРУГ понял, что совсем не учтено (системно так сказать) возможные отличия функционала в плагинах под различные версии (кроме как написать все в кучу или в доп. информацию по версии) - хотя это конечно не "большая беда" но продумать явно стоит.
Я исхожу из того, что под разные версии AutoCAD компилируется одна и та же версия плагина. Если разработчик создаёт новую версию плагина - он сразу компилирует её под разные (нужные его пользователям) версии AutoCAD. Если пытаться учитывать и разные версии AutoCAD, и разные версии плагинов - это усложнит как саму программу (я о той, что показывал), так и её использование. Чем проще - тем лучше, поэтому я отказался от учёта различных версий плагина - в репозитории должна находиться самая последняя версия, скомпилированная под нужные версии AutoCAD.

п.с. шаблон, документацию и примеры в первом посте я пока не обновляю, т.к. документацию ещё не подкорректировал.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 23.05.2012 в 08:46.
hwd вне форума  
 
Непрочитано 23.05.2012, 12:17
#88
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от hwd Посмотреть сообщение
Не понял, это ты о чём?
Про первый вопрос - что настройки применяються не сразу а меняется конфиг загрузчика.
Цитата:
Сообщение от hwd Посмотреть сообщение
в репозитории должна находиться самая последняя версия, скомпилированная под нужные версии AutoCAD.
все верно - просто упускаеться момент что НОВЫЙ плагин может иметь частично ограниченный функционал для СТАРЫХ версий автокада - то есть используеться например аннатотивность или параметризация - понятное дело что она может быть не во всех версиях - но это мелочи - и для учета всего загрузчик действительно "разрастется".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 23.05.2012, 12:25
#89
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Про первый вопрос - что настройки применяються не сразу а меняется конфиг загрузчика.
как раз текущий вариант решения - самый верный (на мой взгляд), т.к. прежде чем что-то грузить, загрузчик должен убедиться в том, что выполнены все необходимые предварительные действия (если таковые требуются). Банальная регистрация через реестр этого не даёт.
Цитата:
Сообщение от Дима_ Посмотреть сообщение
все верно - просто упускаеться момент что НОВЫЙ плагин может иметь частично ограниченный функционал для СТАРЫХ версий автокада - то есть используеться например аннатотивность или параметризация - понятное дело что она может быть не во всех версиях - но это мелочи - и для учета всего загрузчик действительно "разрастется".
да, такой момент вероятен. Однако я исхожу из предположения, что в рамках одной организации имеется утверждённая к использованию версия AutoCAD - именно с ней и работают все проектировщики. Обозначенное приложение работает с любой версией AutoCAD - это задел на тот случай, если компания решит переходить на использование более новой версии AutoCAD, постепенно докупая лицензии. На самом деле, при желании можно заморочиться с решением обозначенного вопроса, однако я пока не вижу в этом особой нужды.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 28.05.2012, 15:10
#90
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


ИМХО, все баги, неудобства и излишества всплывут при тестирование как пользователями, так и разработчиками.
Пока же все выглядит здорово.
Boxa вне форума  
 
Автор темы   Непрочитано 28.05.2012, 15:26
#91
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
ИМХО, все баги, неудобства и излишества всплывут при тестирование как пользователями, так и разработчиками.
Пока же все выглядит здорово.
Пользователям (на которых тестировал) понравилось - с их стороны претензий не было... Доделываю .Net API.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Шаблон оформления плагинов AutoCAD

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с запуском AutoCad This AutoCAD 22 15.02.2016 20:07
AUTOCAD 2010 перестал переключаться в многооконный режим. Проблемы с переменными Андрей Х. AutoCAD 24 27.05.2015 10:17
Autocad MEP Выбери итересующую тему! VitalyAF Вертикальные решения на базе AutoCAD 13 14.09.2012 11:40
Превратить AutoCAD Map 3D в обычный AutoCAD (по панелям) gizmo_zx Вертикальные решения на базе AutoCAD 3 24.08.2011 11:25
Где в реестре хранится информация о том, что в системе когда-то был установлен AutoCAD? Archeo AutoCAD 12 14.10.2009 15:24