Создание и интеграция Help файла с меню (лентой) Autocad

Автор Тема: Создание и интеграция Help файла с меню (лентой) Autocad  (Прочитано 25047 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Как конвертировать doc в html (какой программой). Как связать help файл плагина с меню Автокада, чтобы на клавишу F1 при наведении на команду в ленте (меню) вызывался текст справки плагина.
« Последнее редактирование: 11-03-2015, 15:04:48 от Виталий »

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Нужно руководство как это делать для Автокада

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Как конвертировать doc в html (какой программой).
Какое это имеет отношение к теме форума? Вообще-то сам Microsoft Word позволят сохранить doc/docx-файл в html-файл.

Как связать help файл плагина с меню Автокада, чтобы на клавишу F1 при наведении на команду в ленте (меню) вызывался текст справки плагина.
Почитай: http://adn-cis.org/forum/index.php?topic=1693.0
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
« Последнее редактирование: 12-03-2015, 09:30:22 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Спасибо, почитал - полная каша. Если в живую нельзя пообщаться задам ряд вопросов.
1 Какое расширение должно быть у help файла стороннего плагина к Автокаду?
2 Как связать help файл с cuix файлом плагина? Если это вопрос переменных регистра, то как они называются, куда прописать путь? Только не хотелось бы получить ответ где предлагается изучить новый язык программирования, для решения этого вопроса.
3 Какой ссылкой связывается команда cuix плагина со своей справкой (страницей) внутри help файла?  Поясняю - Это TITLE в html? Какое название поля данной ссылки для команды в cuix?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Спасибо, почитал - полная каша.
Где?
1 Какое расширение должно быть у help файла стороннего плагина к Автокаду?
html или chm

2 Как связать help файл с cuix файлом плагина? Если это вопрос переменных регистра, то как они называются, куда прописать путь? Только не хотелось бы получить ответ где предлагается изучить новый язык программирования, для решения этого вопроса.
Начни с того, что укажи на каком языке программирования ты пишешь и под какую (или какие) версию AutoCAD.

Какой ссылкой связывается команда cuix плагина со своей справкой (страницей) внутри help файла?
Что такое "команда cuix плагина"? cuix - это файл меню, а не файл плагина.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Александр, плагин создан давно. 4 месяца уже идет аттестация для публикации в магазине. Осталось одно требование на F1 вывести справку к команде. У меня установка выполнена в старом стиле, плагин устанавливается и появляется для 2013-2015 Автокад, все сделано идеально. Нашел вчера даже первоисточник http://adndevblog.typepad.com/autocad/2013/01/autodesk-autoloader-white-paper.html
там есть такая фраза, цитирую:
If the Autoloader doesn’t do what you need, feel free to use the old style of deployment.   
Я не знаю новые технологии установки Autoloader, что делать и как редактировать во время установки файл PackageContents.xml. Думаю ты сам никогда это не делал, хоть и программист с большим стажем. Обмениваться ссылками на форуме, типа где-то пролетало, на посмотри - это просто – пользы не приносит.
Вопрос в том можно ли выполнить данное требование F1 без PackageContents.xml и Autoloader и как.
Старый стиль это когда setup.exe меняет и добавляет регистры, копирует файлы плагина на диск, а при запуске Автокада в лиспе происходят загрузки arx, cuix, dcl и другие установки для запуска плагина.
Как, когда и какой, при этом, менять или редактировать PackageContents.xml для меня не мыслимо. Ни одна ваша ссылка об этом не говорит, т.е. если я это не умею, сам не делал, то объяснять не возьмусь. Вышлите пример – листинг в лиспе+cuix+html (тоже листинг), который сами сделали (всех касается), тогда поговорим.
Команда в cuix это запускаешь _cui в окне cui выбираешь свой cuiх и видишь команды в панелях ленты, как еще объяснить?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я правильно понимаю, что ты не будешь делать PackageContents.xml для Autoloader?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Мои исследования привели к следующим результатам. Я вижу два варианта:
1) Динамическое добавление команд на Ленту и соотвественно возможность указания файла и раздела помощи:
http://adndevblog.typepad.com/autocad/2012/09/associating-f1-help-with-ribbon-button.html
2) Создание Расширенной справки (Extended Help) при помощи xaml-файла и ручное подключение его в cuix при помощи команды _CUI. Пара примеров:
http://autodesk.blogs.com/between_the_lines/2008/03/autocad-team-ti.html
http://streamlined-design.blogspot.com/2014/08/create-and-add-extended-help-to-custom.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вариант 3. Если arx-приложение уже загружено, то можно воспользоваться функцией acedSetFunHelp (описание смотри в справке ObjectARX), которая позволит назначить команде соотвествующую справку. Естественно, что acedSetFunHelp должна вызваться в момент инициализации arx-файла.
Пример использования: http://adn-cis.org/forum/index.php?topic=1099.msg5358#msg5358
Возможно это будет самым простым вариантом.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
3 варианта - тьма. в документации 280 справок/топиков/команд, пока неизвестно как сделать даже на одну. Есть команды лиспа help, setfunhelp, которые хоть что то делают, но даже с ними до конца не понятно.
Приведен пример (help "achelp.chm" "mycommand") что такое "mycommand" внутри "achelp.chm" не объясняется. Можно ли объяснить хоть это? Показать где в chm стоит текст "mycommand" это же касается и функции setfunhelp, ее последний аргумент. Как можно начинать что-то делать когда нет полного примера, хотя бы на одну команду в chm файле. Как сделать правильно сам CHM, что такое Topic, откуда его брать, который должен ставиться в конце данных функций? Подскажите гуру.

Также отвечаю, что если для редактирования PackageContents.xml нужно сесть и писать новый setup на си и т.п. - Нет и накладно и непонятно, из-за одной F1 из Ленты, нужно быть сумашедшим впутываться в такую аферу.  Просто исключено, пока нет полных объяснений и примеров.
При этом уверен, что существует другой более простой способ, зная Автокад 15 лет, может и даже с PackageContents.xml.

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Autoloader не подходит в принципе со своей примитивной установкой. У нас достаточно большой плагин со своей специфической установкой.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Также отвечаю, что если для редактирования PackageContents.xml нужно сесть и писать новый setup на си и т.п.
А зачем его редактировать? Вот этого я понять не могу. Вручную его создал один раз и устанавливаешь (распаковываешь) из setup'а

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Ладно. Показываю простейший вариант.
1) В MS Word я создал 4 файла и сохранил их в формате htm:
test.htm
test1.htm
test2.htm
test3.htm
2) Установил (он у меня уже был) HTML Help Workshop: http://www.microsoft.com/en-us/download/confirmation.aspx?id=21138
3) Создал в HTML Help Workshop новый проект и добавил в него все 4 файла.
4) Создал Contents
5) Создал Index
(п 4) и 5) необязательны
6) Выполнил компиляцию в chm
Итак файл справки готов.
В AutoCAD создаю команду средствами lisp:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun C:test1 (/)
  2.   (getreal "\nКоманда Test1: ")
  3.   (princ)
  4. )
Выполняю в командной строке AutoCAD:
Код - Auto/Visual Lisp [Выбрать]
  1. (setfunhelp "C:test1" "c:/test_chm/mytest.chm" "test1")
Запускаю команду TEST1 и нажимаю F1 - вижу мою справку по команде TEST1

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Виталий 15-03-2015, 19:40:17

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Теперь разберёмся с командами в Ленте.
1) Я создал отдельное cuix-меню с именем test_chm.cuix, в котором только одна вкладка в Ленте, и на ней три наши команды Test1, Test2, Test3.
2) Создадим одноимённый mnl-файл, в котором определим эти команды и назначим им файл помощи:
Код - Auto/Visual Lisp [Выбрать]
  1. (progn
  2.   (setfunhelp "C:TEST1" "C:/TEST_CHM/TEST_CHM.CHM" "TEST1")
  3.   (setfunhelp "C:TEST2" "C:/TEST_CHM/TEST_CHM.CHM" "TEST2")
  4.   (setfunhelp "C:TEST3" "C:/TEST_CHM/TEST_CHM.CHM" "TEST3")
  5.   (princ)
  6. )
  7. (defun C:Test1 (/)
  8.   (getreal "\nTEST1: Укажите число или нажмите F1: ")
  9. )
  10. (defun C:Test2 (/)
  11.   (alert "TEST2: Нажмите F1: ")
  12. )
  13. (defun C:Test3 (/)
  14.   (entsel "\nTEST3: Выберите примитив или нажмите F1: ")
  15. )
  16.  

3) Загружаем наше меню
Что получилось смотрим на видео: http://autode.sk/1Effe7L
Всё тоже самое можно реализовать и при помощи ObjectARX и средствами AutoCAD .NET API

Все необходимые файлы я добавил. Изучай.

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
(setfunhelp "C:test1" "c:/test_chm/mytest.chm" "test1")Запускаю команду TEST1 и нажимаю F1 - вижу мою справку по команде TEST1[/quote]
Спасибо, я хоть понял, что то же самое делаю, что и ты мне здесь написал. Но у меня проводник Справка пишет - "Не удается загрузить эту страницу". Делаю абсолютно тоже самое, т.е. даже в этой чепухе сдвинутся с места неизвестно как. Пробую это на русском Автокаде 2015. Даже если это и пробить, то при наведении на ленту F1 работать не будет. Но вот почему не работает никаких идей. Сам файл справки открывает, но страницу для отдельной команды не может.

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
(setfunhelp "C:test1" "c:/test_chm/mytest.chm" "test1")
А зачем его редактировать? Вот этого я понять не могу. Вручную его создал один раз и устанавливаешь (распаковываешь) из setup'а
Пожалуйста попунктно.  1 На основе чего его создать? Пример. 2. Куда его копировать? Его же Автокад должен читать? где к нему путь прописывать для автокада, если это нужно? 3 Как вообще Автокад с такими файлами работает? 4 Их этих файлов много или он один, в плане если несколько плагинов одновременно установлены, каждый со своим хелпом и xml что ли. 5. может еще куча нюансов, которые я просто не знаю. Общеизвестно что xml это файл с произвольными тегами, Автодеск может его использовать как угодно.
Раньше как то все понятно объяснялось, например, если в путях Автокад увидит наличие файла ACAD.LSP, то он выполняет его в первую очередь, ну и так далее.   

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Так, по пунктам...
Для создания справки лично я использую Help&Manual как наиболее удобный инструмент. Каждая страница в справке имеет свое название. При вызове из лиспа setfunhelp сначала указывается команда, для которой определяется справка, потом файл справки (файл справки должен находиться в путях доступа либо придется указывать его полное имя. Файл в обязательном порядке должен находиться на локальной машине), и в последнюю очередь - имя той страницы (ну или тэг), которую надо активировать.
Запускается команда, пользователь нажимает F1 - справка открывается и автоматически активируется соответствующая страница.
>> если в путях Автокад увидит наличие файла ACAD.LSP, то он выполняет его в первую очередь, ну и так далее
Вообще-то не совсем так: см.статьи на сайте http://adn-cis.org/posledovatelnost-zagruzki-prilozhenij-v-autocad.html + http://adn-cis.org/autocad-autoload-security.html

P.S. Дальше отвечу позже: сейчас надо примерно часа два побегать по пользователям, работы многовато нарисовалось.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Для создания справки лично я использую Help&Manual как наиболее удобный инструмент. Каждая страница в справке имеет свое название.
Алексадр, добавь еще в свое объяснение: что для "Html help Workshop" файл проекта и htm файлы обязательно должны находится в одной папке, из-за этого у меня не появлялась справка к команде.  Поэтому я и говорю, что нужно своими руками что-то сделать и высылать примеры. Спасибо. эта чепуха пробита, но это не решение, так разминка. Представляю сколько с xml будет еще проблем.

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Теперь разберёмся с командами в Ленте. 1) Я создал отдельное cuix-меню с именем test_chm.cuix, в котором только одна вкладка в Ленте, и на ней три наши команды Test1, Test2, Test3.2) Создадим одноимённый mnl-файл, в котором определим эти команды и назначим им файл помощи:
Да работает, но не без нюансов. В cui окне в поле "Макросы" команды должно стоять только имя команды. Если между "^C^C^P;" и командой что-то записано (а может быть записано любое лисп выражение и т.п.) то F1 будет высвечивать help Автокада. Вывод - это решение, но требующее изменений кода запуска плагина. Если учесть, что у нас в cuix на вскидку в поле "Макросы" на половине команд что-то записано. Подожду, что скажешь на запрос по xml. 
Вообще вспомнить про mnl это круто, спасибо за совет! 

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Подожду, что скажешь на запрос по xml. 
Ничего не скажу в контексте того, что если имеется лисп-выражение в меню, то в Ленте по F1 вызывается не та справка. Значит так сделано.
xml работает точно по тому же принципу, что и (setfunhelp ...). Точнее он именно эту функцию и использует для назначения справки команде. А еще точнее - её arx-аквивалент.
По поводу Bundle есть только два известных мне документа. Основной в документации:
http://help.autodesk.com/cloudhelp/2015/ENU/AutoCAD-Customization/files/GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008.htm
(ну и пройтись по всем сопутствующим ссылкам), в первую очередь о структуре каталога Bundle и формате файла PackageContents.xml, а также примеры использования.
Ну и http://adndevblog.typepad.com/autocad/2013/01/autodesk-autoloader-white-paper.html, который ты уже видел.
Скачиваешь из Магазина Приложений Autodesk любое приложение и смотришь как оно устроено. Ничего лучше я не предложу.


« Последнее редактирование: 13-03-2015, 21:13:37 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Алексадр, добавь еще в свое объяснение: что для "Html help Workshop" файл проекта и htm файлы обязательно должны находится в одной папке, из-за этого у меня не появлялась справка к команде.
Необязательно. Завел отдельную папку, туда переместил те же htm-файлы, пересоздал hрp-файл, настроил TOC, пересобрал chm-файл. Всё работает. Справка показывается из него.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Я думаю остановлюсь на mnl на том, что я сейчас понимаю, с остальным судя по твоим ответам меньше работы не будет даже если и разобраться. Единственно хотелось бы вернуться к первому своему вопросу. Может он и не по теме но стоит задача, где основной критерий теперь время. Есть готовая документация 130 топиков в одном doc файле. Как быстро конвертировать это не в один, а в 130 htm файлов. В поисковике решений куча, но реально работающих решений найти пока не удается. Александр, вижу у тебя огромный опыт. Можешь подсказать каким проверенным средством это можно сделать. Ты писал об Help&Manual может он это делает? 
   

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр, вижу у тебя огромный опыт.
Это правда.
Можешь подсказать каким проверенным средством это можно сделать. Ты писал об Help&Manual может он это делает? 
Во-первых, про Help&Manual писал не я , а Алексей Кулик
Во-вторых, насколько я понимаю, задача чисто ручная и никакой автоматизации тут нет и быть и не может.
Если я правильно понял, то в doc-файле документация по всему комплексу, а нужно получить описание 130 команд. Ничего лучше чем в Word выделять кусок текста, копировать его в новый документ и сохранять его как htm-файл, я не предложу.
Можно бесполезно потратить еще пару недель на поиск программы, которая это сделает, а потом всё-равно сделать это вручную.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Ничего лучше чем в Word выделять кусок текста, копировать его в новый документ и сохранять его как htm-файл, я не предложу.
Верю, попытался начать и сразу затык. Word 2007 создает htm файл и каталог с картинками отдельно друг от друга. Если создавать в одном файле, то расширение другое не htm, оба случая не дают решения в HTML HELP WORKSHOP в итоге chm получается без картинок. Как конвертировать в один файл с картинками и с расширением htm или как настроить WORKSHOP.   

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Может, в таком случае вообще использовать нечто типа Composer (ну или html-файл создавать напрямую в VisualStudio)?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Word 2007 создает htm файл и каталог с картинками отдельно друг от друга.
Как настроишь - так и будут сохранять. Можно и в  один каталог.

P.S.: Мне кажется что мы слишком ушли в offtop.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
2) Создадим одноимённый mnl-файл, в котором определим эти команды и назначим им файл помощи: Код - Auto/Visual Lisp: [Выделить](progn  (setfunhelp "C:TEST1" "C:/TEST_CHM/TEST_CHM.CHM" "TEST1")
Как сделать вызов справки на F1 на макрос в cuix: ^P(afxy); т.е. когда не команда, а функция должна отработать по нажатию иконки из ленты.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Из функции сделать команду и на нее уже "вешать" вызов справки. Можно и так:
^C^C^P(defun c:tmp() (afxy));(setfunhelp "tmp" <...> <...>);tmp;У меня по такому принципу много всякого построено - работает без вопросов
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Как сделать вызов справки на F1 на макрос в cuix: ^P(afxy); т.е. когда не команда, а функция должна отработать по нажатию иконки из ленты.
Кроме предложенного Алексеем варианта других вариантов нет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Из функции сделать команду и на нее уже "вешать" вызов справки. Можно и так:
^C^C^P(defun c:tmp() (afxy));(setfunhelp "tmp" <...> <...>);tmp;У меня по такому принципу много всякого построено - работает без вопросов
Не вариант. Прозрачные функции, должны вызываться внутри других команд на getpoint() и т.п. Обычными командами их не заменишь. Даже без ^C^C впереди макроса F1-справка уже работать не будет. Думаю сделать это невозможно.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Думаю сделать это невозможно.
Значит это должно быть сделано в mnl-файле. А макрос должен содержать только команды.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Значит это должно быть сделано в mnl-файле. А макрос должен содержать только команды.
Со вторым разобрались, а первое предложение для Автодеска? F1 у них по своей сути только для команд, а не для функций и т.п. Как можно просто в mnl это сделать не представляю. У Автодеска эта тема не проработана до конца.   

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
F1 у них по своей сути только для команд
Именно так и никак иначе. Стандарт макросов от Autodesk для AutoCAD - это команды. Попробуй найти в стандартных cuix-файлах макросы в виде lisp-функций.
В mnl-файле ты можешь оформить свои функции в виде команд, как показал Алексей Кулик. Альтернативный вариант - использование функции (vlax-add-cmd): http://help.autodesk.com/cloudhelp/2015/ENU/AutoCAD-AutoLISP/files/GUID-42392DA4-4A2B-4D34-AA7B-A5ACAF727E54.htm
А в меню будут только команды. Если перед тобой стоит цель сделать так, чтобы по F1 в Ленте вызывалась твоя справка, то это единственный способ.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
В mnl-файле ты можешь оформить свои функции в виде команд, как показал Алексей Кулик. Альтернативный вариант - использование функции (vlax-add-cmd): http://help.autodesk.com/cloudhelp/2015/ENU/AutoCAD-AutoLISP/files/GUID-42392DA4-4A2B-4D34-AA7B-A5ACAF727E54.htmА в меню будут только команды. Если перед тобой стоит цель сделать так, чтобы по F1 в Ленте вызывалась твоя справка, то это единственный способ.
Это не решение. Сама функция как прозрачная уже работать не будет как команда с флагом прозрачности. При этом F1 вызываться будет это понятно, но команда будет нерабочей - не будет работать внутри другой команды.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Виталий, а кто мешает оформить примерно следующим образом (говорю про lisp):
(defun func_name() <...>)

(defun func_name2()
  <...>
  (func_name)
  <...>
  )

(defun c:cmd-from-menu()
  (func_name)
  )
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Виталий
Смотри внимательно: https://screencast.autodesk.com/main/details/c55581fc-d818-4285-ad65-6f5e566a0911
Вся хитрость в mnl-файле (а именно в том, что имя функции и имя команды совпадают):
Код - Auto/Visual Lisp [Выбрать]
  1. (progn
  2.   (setfunhelp "C:TEST1" "C:/TEST_CHM/TEST_CHM.CHM" "TEST1")
  3.   (setfunhelp "C:TEST2" "C:/TEST_CHM/TEST_CHM.CHM" "TEST2")
  4.   (setfunhelp "C:TEST3" "C:/TEST_CHM/TEST_CHM.CHM" "TEST3")
  5.   (princ)
  6. )
  7. (defun C:Test1 (/)
  8.   ;; Тут может быть вообще всё что угодно
  9. )
  10. (defun Test1 (/ p ang dist)
  11.   (initget 3) (setq p (getpoint "\nУкажите базовую точку: "))
  12.   (initget 3) (setq ang (getangle p "\nУкажите направление: "))
  13.   (initget 3) (setq dist (getdist p "\nУкажите расстояние: "))
  14.   (polar p ang dist)
  15. )
  16. (defun C:Test2 (/)
  17.   (alert "TEST2: Нажмите F1: ")
  18. )
  19. (defun C:Test3 (/)
  20.   (entsel "\nTEST3: Выберите примитив или нажмите F1: ")
  21. )
Ну и понятно, что если ты нажмешь F1 во время выполнения основной команды, то справка будет по ней, а не по твоей функции.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А вот так будет для прозрачной команды 'TEST2:
Код - Auto/Visual Lisp [Выбрать]
  1. (progn
  2.   (setfunhelp "C:TEST1" "C:/TEST_CHM/TEST_CHM.CHM" "TEST1")
  3.   (setfunhelp "C:TEST2" "C:/TEST_CHM/TEST_CHM.CHM" "TEST2")
  4.   (setfunhelp "C:TEST3" "C:/TEST_CHM/TEST_CHM.CHM" "TEST3")
  5.   (princ)
  6. )
  7. (defun C:Test1 (/)
  8.   (Test1)
  9. )
  10. (defun Test1 (/ p ang dist)
  11.   (initget 3) (setq p (getpoint "\nУкажите базовую точку: "))
  12.   (initget 3) (setq ang (getangle p "\nУкажите направление: "))
  13.   (initget 3) (setq dist (getdist p "\nУкажите расстояние: "))
  14.   (polar p ang dist)
  15. )
  16. (defun C:Test2 ( / )
  17.   (initget 3) (setq p (getpoint "\nУкажите базовую точку: "))
  18.   (initget 3) (setq ang (getangle p "\nУкажите направление: "))
  19.   (initget 3) (setq dist (getdist p "\nУкажите расстояние: "))
  20.   (polar p ang dist)
  21. )
  22. (defun C:Test3 (/)
  23.   (entsel "\nTEST3: Выберите примитив или нажмите F1: ")
  24. )
  25.  

Так это выглядит: https://screencast.autodesk.com/main/details/193380d1-1bb0-4b7a-823f-9fe57af043f8
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
Вся хитрость в mnl-файле (а именно в том, что имя функции и имя команды совпадают):
Спасибо, получилось, отталкиваясь от этой хитрости, но не чисто как написали, не без новых нюансов. Без ваших советов никогда бы не разобрался, оставил бы как есть. Но радости мало в виду того, что ни мне ни моим пользователям Справка не нужна. Приходится делать это ради требования Автодеска.  Это ему все нужно, т.е. была документация на PDF, есть уже Help .chm, связь всех пунктов меню со справкой через F1, подсказки к каждому пункту (были), может еще что нужно. Все это дублируется, передублируется, а в реалии для многих команд достаточно подсказки или разок взглянуть на документацию. Времени жалко на такое. При этом на основе последнего опыта убежден, что система связки пунктов меню со справкой через F1 очень неудачная, неоднозначная и запутанная. Посоветовал бы Автодеску разобраться с кучей непонятно для чего полей у каждой команды/пункта в cuix. Достаточно было одного: "Код элемента", например и не связываться с макросами, которые могут быть любыми и что на каждый вариант городить новый огород?
В прилагаемой картинке показано поле имеющее смысл, думаю, на тот случай когда макрос не  команда, а что-то другое. 

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Это ему все нужно
А я почему-то решил, что это вам нужно чтобы приложение попало в Магазин Приложений Autodesk. Или я не прав? ;)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВиталийАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 125
  • Карма: -1
А я почему-то решил, что это вам нужно чтобы приложение попало в Магазин Приложений Autodesk. Или я не прав?
Все верно, чтобы попасть в Магазин. Процесс не простой! Если попадет, дальше буду анализировать "стоит ли овчинка выделки".