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

Вернуться   Форум 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.
Просмотров: 29342
 
Непрочитано 26.04.2012, 18:09
#61
Дима_

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


Короче - поверь на слово, если делать с учетом лиспа (а под автокад большинство "плагинов" все-же на нем), в том формате каком ты говоришь есть очень "слабое звено" с библиотечными функциями (либо сто раз продублировать, либо делать в КАЖДОЙ программе загрузчик с рекурсивным поиском по папкам автокада - ИХМО это еще хуже).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 26.04.2012, 18:25
#62
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от hwd Посмотреть сообщение
Тогда всё ещё проще.
Особо хитрые лисперы могут обходиться безо всяких там defun-ов, вам сионистам этого не понять
а загрузчик так вообще смешной получается
Код:
[Выделить все]
 (defun C:LISP ()
  (load (getstring "\nИмя подпрограммы: "))
)
gomer вне форума  
 
Автор темы   Непрочитано 26.04.2012, 19:30
#63
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
либо сто раз продублировать
для ста приложений так и будет - это своего рода "плата" за независимость.
Цитата:
Сообщение от Дима_ Посмотреть сообщение
либо делать в КАЖДОЙ программе загрузчик с рекурсивным поиском по папкам автокада - ИХМО это еще хуже
Ума не приложу, где это может потребоваться, особенно с учётом того, что имеется findfile. Элементарный пример (код) в студию...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 26.04.2012, 20:48
#64
Дима_

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


Цитата:
Сообщение от hwd Посмотреть сообщение
для ста приложений так и будет - это своего рода "плата" за независимость.
Только, если ВНЕЗАПНО, потребуется внести изменения в библиотечную функцию (для совместимости с х64, найденной ошибкой и пр.) - все сто надо как переделать создателю (а я не думаю что он это захочет делать), так обновить все администратору - собственно это и есть слабое звено твоего подхода "автономности плагинов".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 26.04.2012, 21:04
#65
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Только, если ВНЕЗАПНО, потребуется внести изменения в библиотечную функцию (для совместимости с х64, найденной ошибкой и пр.) - все сто надо как переделать создателю (а я не думаю что он это захочет делать), так обновить все администратору - собственно это и есть слабое звено твоего подхода "автономности плагинов".
А не нужно производить замены вручную - элементарный скрипт в пару-тройку строк моментально выполнит эту задачу, проанализировав все подкаталоги и заменив старые версии файлов на новые, причём сразу во всех имеющихся плагинах. Это не проблема, особенно для администратора.

мне всё же было бы интересно увидеть пример, соответствующий этой фразе:
Цитата:
либо делать в КАЖДОЙ программе загрузчик с рекурсивным поиском по папкам автокада - ИХМО это еще хуже
поскольку мне не удаётся представить такую ситуацию.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 26.04.2012 в 21:10.
hwd вне форума  
 
Непрочитано 26.04.2012, 21:18
#66
Дима_

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


не очень понял пример чего - программы которая не знает где ее библиотека?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 26.04.2012, 21:22
#67
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
не очень понял пример чего - программы которая не знает где ее библиотека?
если программа не знает где её библиотека - значит это не программа, а мусор. Интересен мне др. пример, где может потребоваться
Цитата:
загрузчик с рекурсивным поиском по папкам автокада
?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 26.04.2012, 21:36
#68
Дима_

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


Цитата:
Сообщение от hwd Посмотреть сообщение
если программа не знает где её библиотека - значит это не программа, а мусор.
Нет это значит, что Вы совсем не знакомы с автолиспом - ибо практически все лисп программы использующие библиотеки считают, что последние уже загруженны (то есть если она запущенна - значит установленна, соответственно вместе с библиотеками). А потребоваться он может - как раз если Вы хотите копировать лисп файл без установки бог весть куда и запускать его (он же не знает откуда вы его запустили, соответственно и не знает где он лежит).
з.ы. более того лисп программа может быть и не загруженна, а сгенерированна другой программой...
з.з.ы у лиспа мусором считаются как раз программы которые знают, где их библиотеки (ну или dcl описание) - где нибудь в c:\super_proga\...
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 26.04.2012, 21:52
#69
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


как то слишком запутанно все... у файла нпи есть вспомогательный mnl-"загрузчик", который загружается автоматически и подгружает необходимые лисп-библиотеки, в качестве ориентира служит файл меню, больше ничего не надо... такая вот рекурсия
gomer вне форума  
 
Автор темы   Непрочитано 26.04.2012, 22:06
#70
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Нет это значит, что Вы совсем не знакомы с автолиспом
это не так. Даже моих скромных познаний в лиспе хватает на то, чтобы видеть общепринятые грубые ошибки лиспописателей, о которых сейчас и пишу.
Цитата:
Сообщение от Дима_ Посмотреть сообщение
практически все лисп программы использующие библиотеки считают, что последние уже загруженны (то есть если она запущенна - значит установленна, соответственно вместе с библиотеками).
Сама по себе программа ничего не предполагает (считает) - это предположение программиста, пишущего код. И это его предположение - одна из наиболее часто встречающихся у LISP программистов грубейших ошибок.

Цитата:
Сообщение от Дима_ Посмотреть сообщение
то есть если она запущенна - значит установленна, соответственно вместе с библиотеками
"Установлена вместе с библиотеками" не подразумевает того, что эти библиотеки ещё не загружены кем-то и что их нужно обязательно грузить. Ты же сам ранее писал, что эти библиотеки часто пользуются др. лисп-программами. Так зачем тогда грузишь их, не убедившись предварительно в необходимости этого действия?

"Установлено" не то же самое что "Загружено". Разницу чувствуешь? Что (кроме лени) мешает программисту, прежде чем начать грузить лисп, выполнить предварительную проверку, мол а надо ли его грузить? Может он уже загружен др. лисп-программой? Зачем повторно грузить то, что уже загружено, выжирая тем самым оперативную память, которую автокад и так безжалостно расходует?
Цитата:
А потребоваться он может - как раз если Вы хотите копировать лисп файл без установки бог весть куда и запускать его (он же не знает откуда вы его запустили, соответственно и не знает где он лежит).
А не нужно "копировать лисп файл без установки бог весть куда и запускать его" - я именно для этого шаблон и написал, чтобы не было подобного хаоса.
Цитата:
он же не знает откуда вы его запустили, соответственно и не знает где он лежит
Стоп. Изначально речь шла о том, что лисп должен уметь находить нужные ему ресурсы - др. лисп файлы, для их загрузки, если это потребуется. Не шло разговора о том, что лиспу нужно узнать, откуда его запустили. Но, тем не менее, если лисп будет лежать в шаблоне, то он с лёгкостью сможет узнать каталог своего размещения. Я надеюсь, что мне нет необходимости разъяснять, как он это сможет сделать?
Цитата:
з.з.ы у лиспа мусором считаются как раз программы которые знают, где их библиотеки (ну или dcl описание) - где нибудь в c:\super_proga\...
программы, которые знают где искать свои ресурсы - работают. Программы, которые понятия не имеют, где искать свои ресурсы - не работают. Так что из этого можно отнести к категории "мусор"? Вопрос риторический.
Цитата:
c:\super_proga\
открой для себя использование системных переменных.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 26.04.2012, 22:43
#71
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от hwd Посмотреть сообщение
открой для себя использование системных переменных.
программа привязанная к системной переменной запросто откажется работать в другом месте, это не выход
gomer вне форума  
 
Автор темы   Непрочитано 26.04.2012, 22:45
#72
hwd

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


Цитата:
Сообщение от gomer Посмотреть сообщение
программа привязанная к системной переменной запросто откажется работать в другом месте, это не выход
без комментариев...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 26.04.2012, 23:23
#73
Дима_

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


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


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

з.з.ы Я все к чему это говорю - ты предлагаешь "универсальный" шаблон описания акад модулей, и с точки зрения нет модулей ты все продумал (версии, локализацию и пр) - молодец, но я как "немножко листописатель" вижу "явный" прокол - "стандартные" библиотеки в твоем варианте предлагаешь добавлять в каждый модуль (это все равно что тебе предложить с каждой длл-кой класть соответствующею версию дотнета). А чтобы мне сложить все в одну библиотеку и грузить по надобности из нее - мне с точки зрения лиспа в КАЖДОЙ программе надо левой пяткой правое ухо чесать - подходы в функциональных и императивных языках разные и то что логично в одной технологии, кажется бредом в другой (видимо по этому мы с тобой тут такой срач и развели) - я просто к тому что с таким подходом "лисповики" к твоей технологии вряд-ли потянутся - "кривая" она для них - хотя я естественно могу ошибаться.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 26.04.2012 в 23:54.
Дима_ вне форума  
 
Непрочитано 27.04.2012, 00:03
#74
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Дима_ Посмотреть сообщение
только тем самым поиском
и совсем не факт, что это сработает, яркий тому пример программы прокат и болты от культового автора, которые работать вместе не умеют
gomer вне форума  
 
Непрочитано 27.04.2012, 11:52
#75
Boxa

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


Я так понимаю, что шаблон в первую очередь создавался под DLL и ARX приложения, для них, все что описано в шаблоне, вполне корректно и замечаний не вызывает. Может стоит повременить пока с добавлением в шаблон Lisp программ и посмотреть как это все заработает с dll?
Boxa вне форума  
 
Автор темы   Непрочитано 27.04.2012, 12:12
#76
hwd

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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Я так понимаю, что шаблон в первую очередь создавался под DLL и ARX приложения, для них, все что описано в шаблоне, вполне корректно и замечаний не вызывает. Может стоит повременить пока с добавлением в шаблон Lisp программ и посмотреть как это все заработает с dll?
нет, я ориентируюсь и на lisp. уже внёс для этого необходимые изменения в некоторые XSD-файлы. Имеется пример упаковки в шаблон одного пользовательского lisp-сборника (мусора, ибо написано в нём всё через одно место). Чуть позже могу выложить обновлённый шаблон, с внесёнными в XSD изменениями и пример упаковки lisp-контента, если это интересует...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 27.04.2012, 13:11
#77
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Это, как раз-таки, больше всего интересует! Я имею в виду как будут выглядеть вписанные в этот шаблон лиспы.
Do$ вне форума  
 
Автор темы   Непрочитано 27.04.2012, 13:38
#78
hwd

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Это, как раз-таки, больше всего интересует! Я имею в виду как будут выглядеть вписанные в этот шаблон лиспы.
Перезалил оба архива. В шаблонах внёс некоторые изменения в файлы XSD, а так же в файл versions.xml, для возможности корректного описания LISP-программ. В архив samples.zip, по просьбам телезрителей добавил пример упаковки LISP-сборника. В тот же архив упаковал и ещё одно приложение от Александра Ривилиса (SelSim). В примере упаковки LISP-программ я, в качестве опять же примера, в таблицу загрузок добавил несколько записей, указав, что загружать следует все файлы с расширениями lsp, fas и vlx, хотя на самом деле в примере имеются только lsp-файлы.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 27.04.2012, 15:17
#79
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
в таблицу загрузок добавил несколько записей
Это просто таблица в хелп-файле?
Do$ вне форума  
 
Автор темы   Непрочитано 27.04.2012, 15:24
#80
hwd

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Это просто таблица в хелп-файле?
что подразумевается под "просто таблицей"? что мешает кликнуть мышью на странице и из контекстного меню выбрать пункт "посмотреть исходный код страницы"?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :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