Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:

Visual LISP и секреты адаптации AutoCAD
Купить книгу
Глава из книги "Visual LISP
и секреты адаптации AutoCAD"
Н.Н. Полещука.
На домашнюю страницу автора

ГЛАВА 6

Создание справочной системы

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

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

6.1. HELP-файлы Windows

Самые удобные и самые привычные справочные файлы сегодня - это файлы типа WinHelp, которыми сопровождается сама система AutoCAD 2000, популярный пакет Microsoft Office, а также большинство современных продуктов, разработанных для среды Windows. Такая документация может просматри-ваться пользователем как при работе в системе AutoCAD, так и вне системы. Файлы типа WinHelp мо-гут помимо текста содержать графические иллюстрации, макросы, мультимедийные элементы, что позволяет сделать справочное руководство удобным и привлекательным. Для создания этих файлов тре-буются специальные пакеты (Microsoft Help Workshop, Microsoft Help Designer и т. п.).

6.1.1. Структура HELP-файлов

В состав HELP-файлов Windows входят файлы со следующими расширениями:
Замечание
В системе AutoCAD 2000i, которая является модификацией AutoCAD 2000, в справочной системе появились файлы с расширениями awa, chm, lim.

Основными файлами, которые передаются пользователю при установке программного продукта, явля-ются файлы с расширениями hlp и cnt. Например, в папке Help программного обеспечения системы AutoCAD 2000 находятся 36 файлов с расширением hlp (acad.hlp, acad_ag.hlp, acad_ala.hlp, acad_asi.hlp, acad_car.hlp и т. д.) и 21 файл с расширением cnt (acad.cnt, acad_ag.cnt, acad_asi.cnt, acad_car.cnt и т. д.).

Файлы с расширением hlp получаются путем компиляции проектов в специальных пакетах (Microsoft Help Designer и др.). Файлы с расширением cnt являются текстовыми. Они тоже могут быть сформиро-ваны с помощью специального пакета, но могут быть написаны или отредактированы и обычным тек-стовым редактором.

На рис. 6.1 приведено диалоговое окно справочной системы AutoCAD 2000, которая организована по всем правилам Windows.

Данное диалоговое окно имеет три вкладки. Вкладка Содержание (Contents) показывает все разделы верхнего уровня справочной системы, вкладка Указатель (Index) является предметным указателем, а вкладка Поиск (Find) используется для более глубокого поиска по базе терминов.

Справочные разделы, приведенные на рис. 6.1, сформированы из разных справочных файлов, однако выгля-дят как единая система. Управление итоговой формой справочного диалогового окна осуществляется через файлы с расширением cnt, которые содержат наименования разделов справочной информации и имена файлов с расширением hlp, где эти разделы размещены. Основной файл, с которого система AutoCAD 2000 начинает собирать разделы справки, называется acad.cnt. В листинге 6.1 приведен текст этого файла в том виде, в каком он входит в русскоязычную версию AutoCAD (в англоязычной версии осо-бых отличий нет). На рис. 6.1 видно, что часть разделов осталась на английском языке, поскольку не бы-ли переведены при локализации системы.


Рис. 6.1. Диалоговое окно справочной системы AutoCAD 2000

Листинг 6.1. Файл acad.cnt
 ;;; ACAD.CNT - [v.u15.0.01]
 :Base acad.hlp
 :Title AutoCAD 2000
 :Index AutoCAD Command Reference=acad.hlp
 :Index AutoCAD Customization Guide=acad_cg.hlp
 :Index AutoCAD Installation Guide=acad_ig.hlp
 :Index AutoCAD User's Guide=acad_ug.hlp
 :Index 3d Graphics System Configuration=gsconfig.hlp
 :Index AutoCAD Readme=readme.hlp
 :Index AutoCAD Technical Publications=doccheck.hlp
 :Index AutoCAD Learning Assistance=acad_ala.hlp
 :Link doccheck.hlp
 :Link acad.hlp
 :Link acad_cg.hlp
 :Link acad_ig.hlp
 :Link acad_ug.hlp
 :Link acad_vlr.hlp
 :Link acad_vlg.hlp
 :Link acad_vlt.hlp
 :Link acad_ag.hlp
 :Link acad_asi.hlp
 :Link acadauto.hlp
 :Link dxf_2000.hlp
 :Link batchplt.hlp
 :Link drv_dwf.hlp
 :Link drv_hpg2.hlp
 :Link drv_hpgl.hlp
 :Link drv_ps.hlp
 :Link drv_rast.hlp
 :Link gsconfig.hlp
 :Link nsyshnts.hlp
 :Link pltedt.hlp
 :Link syshnts.hlp
 :Link webbrw.hlp
 :Link acad_plt.hlp
 
 1 AutoCAD 2000 Readme=AutoCAD_2000_Readme@readme.hlp>main
 1 Что нового в AutoCAD 2000=What39s_New_in_AutoCAD_2000_aug_01@acad_ug.hlp>main
 
 :Include doccheck.cnt
 :Include acad_how.cnt
 :Include acad_cr.cnt
 :Include acad_ug.cnt
 :Include acad_ig.cnt
 :Include acad_cg.cnt
 :Include acad_plt.cnt
 
 ;;; The RunHelp macro lives in achlp.dll
 1 Visual LISP and AutoLISP
 2 Shortcut link to the AutoCAD Visual LISP Help=!RunHelp("acad_vlr.hlp")
 ; 2 Shortcut link to the AutoCAD Visual LISP Help=
;    !EF("acad_vlr.hlp","",4,"")

 1 VBA and ActiveX Automation
 2 Shortcut link to the AutoCAD VBA and ActiveX Help=!RunHelp("acad_ag.hlp")
 ; 2 Shortcut link to the AutoCAD VBA and ActiveX Help=!EF("acad_ag.hlp","",4,"")
 
 1 DXF Reference
 2 Shortcut link to the DXF Reference=!RunHelp("acad_vlr.hlp")
 ; 2 Shortcut link to the DXF Reference EF=!EF("acad_vlr.hlp","",4,"")
 
 :Include acetmain.cnt
 :Include include.cnt
6.1.2. CNT-файлы

Последняя строка файла acad.cnt (см. листинг 6.1) зарезервирована для подключения к справочной систе-ме AutoCAD информации конкретного пользователя. Если пользователь хочет добавить свои разделы, для этого ему предоставляется возможность написать собственный файл include.cnt и указать в нем подключаемые CNT-файлы (файлы с расширением cnt) своих разделов HELP-файлов. Файл include.cnt должен располагаться в той же папке Help, что и справочные файлы AutoCAD. Файл include.cnt должен состоять только из операторов :Include и иметь вид, приведенный в листинге 6.2.

Листинг 6.2. Файл include.cnt
 :Include spravka1.cnt
 :Include spravka2.cnt
 :Include spravka3.cnt

Упоминаемые в листинге 6.2 файлы spravka1.cnt, spravka2.cnt и spravka3.cnt должны быть расположены в папках, указанных в настройке путей файлов поддержки (см. разд. 1.3 "Настройка AutoCAD для подключения средств пользователя"). После внесения изменений в файл include.cnt (или в любые другие файлы справочной системы) нужно удалить файл acad.gid. Тогда справочная система сама настроится на новую структуру.

В CNT-файле пустые строки и строки, начинающиеся с точки с запятой, являются комментариями. Внутренним операторам предшествует символ двоеточия. Основные типы внутренних операторов следующие:

Если строка CNT-файла начинается с числа, то это число определяет уровень заголовка в содержании. Уровень 1 является самым верхним, уровень 2 - на один уровень ниже уровня 1 и т. д. Заголовки уровня 2 должны следовать сразу за заголовком уровня 1, которому они подчиняются. Аналогичное требование предъявляется к заголовкам уровня 3 относительно уровня 2 и т. д. В листинге 6.3 приведен файл acad_cr.cnt, который иллюстрирует использование уровней.

Листинг 6.3. Файл acad_cr.cnt
 :Base acad.hlp
 1 Справочник команд
 2 Введение=introduction@acad.hlp>main
 2 Команды=cmd_toc@acad.hlp>main
 2 Псевдоимена команд=command_aliases@acad.hlp>main
 2 Системные переменные=sysvar_toc@acad.hlp>main
 2 Краткий справочник по размерным переменным=dimension_variables_quick_reference@acad.hlp>main
 2 Утилиты=utilities@acad.hlp>main
 2 Стандартные библиотеки=standard_libraries@acad.hlp>main
 2 Графические объекты AutoCAD=autocad_graphical_objects@acad.hlp>main
 2 Шрифты Unicode=Using_Unicode_Fonts@acad.hlp>main
 2 Меню=menus_main@acad.hlp>main
 2 Панели=toolbars_main@acad.hlp>main

На рис. 6.1 виден заголовок Справочник команд, который является заголовком уровня 1 и включен в справочную систему AutoCAD 2000 из файла acad_cr.cnt. Если в диалоговом окне, приведенном на рис. 6.1, выделить этот заголовок и щелкнуть по кнопке Показать (Show), то появятся все заголовки уровня 2, перечисленные в листинге 6.3 (рис. 6.2).


Рис. 6.2. Диалоговое окно справочной системы
с открытыми заголовками уровня 2

6.1.3. Функция help

Основным средством вызова HELP-файла из AutoLISP является функция help:

(help [<файл> [<раздел> [<начало>]]])

Аргументы функции help: <файл> - имя справочного файла, <раздел> - наименование раздела справки, <начало> - страница, открываемая при загрузке справочного окна.

Если аргумент опущен или в качестве его значения <файл> указана пустая строка (""), то система AutoCAD вызывает справочный файл, указанный в настройке как файл справки по умолчанию (см. разд. 1.3 "Настройка AutoCAD для подключения средств пользователя"). Если в аргументе <файл> опущено расширение, то AutoCAD 2000 ищет файл с расширением hlp (а AutoCAD 2000i - сначала chm, а затем - hlp).

В качестве аргумента <раздел> задается имя раздела (из CNT-файла), который нужно сразу же показать при вызове справки. Так, например, если воспользоваться файлом acad.cnt, приведенном в листинге 6.3, то в качестве имени раздела может фигурировать "introduction", "cmd_toc", "command_aliases" и т. п. Если аргумент <раздел> опущен или задан равным пустой строке, то выводится первый раздел справочного файла. На рис. 6.3 показан раздел справки, вызываемый с помощью выражения (help "" "cmd_toc").


Рис. 6.3. Справочная информация из раздела cmd_toc

Аргумент <начало> может принимать одно из трех значений: Функция help возвращает значение аргумента <файл> при успешном выполнении операции и nil - при неуспешном. Если функция вызывалась без параметров, то возвращается "" или nil.

6.1.4. Вызов WIN-справки с помощью внешней команды

Для вызова справочной информации из HELP-файла Windows следует создать внешнюю команду и записать ее в файл acad.pgp (см. разд. 1.2 "Файл acad.pgp").

Предположим, что имя новой команды будет HELPRU, а вызываемый файл называется our_rules.hlp и находится в папке d:\AppAutoCAD. Тогда в файл acad.pgp нужно добавить такую строку:

HELPRU,start d:\AppAutoCAD\our_rules.hlp,0

После загрузки AutoCAD или перезагрузки файла acad.pgp с помощью команды ПЕРЕИН (REINIT) пользователю будет доступна команда HELPRU, вызывающая дополнительную справку.

6.1.5. Вызов WIN-справки с помощью функции startapp

Для вызова в среде AutoCAD другого приложения Windows можно пользоваться функцией AutoLISP startapp. Синтаксис функции следующий:

(startapp <приложение> [<параметр>])

Оба аргумента функции являются строками. Функция запускает приложение и, если второй аргумент был задан, передает ему строку с параметрами.

Возвращаемое значение - целое число (положительное при успешном запуске приложения и 0 - при неудачном).

Функция startapp может быть полезной при вызове справки, для чего нужно запустить специальную справочную программу Windows с именем winhlp32, а в качестве второго аргумента передать полное имя справочного файла. Изменим пример из разд. 6.1.4 "Вызов WIN-справки с помощью внешней команды" следующим образом:

(startapp "winhlp32" "d:\\AppAutoCAD\\our_rules.hlp")

Если имя файла содержит пробелы (например, "d:\\AppAutoCAD\\our rules.hlp"), то его нужно обрамлять двойными кавычками:

(startapp "winhlp32" "\"d:\\AppAutoCAD\\our rules.hlp\\"")

Когда аргумент <приложение> не содержит полного пути к исполняемому файлу, тогда файл ищется в путях, заданных переменной окружения PATH.

6.2. HTML-справки

Если необходимо оформить разделы справочной информации в виде Web-страниц, то следует использовать файлы в формате HTML (расширения файлов - htm, html). Для просмотра таких страниц на компьютере должна быть установлена соответствующая программа (например, Microsoft Internet Explorer). Сформировать HTML-файл можно либо с помощью специальных HTML-редакторов, либо, на-пример, с помощью программы Microsoft Word, которая имеет возможность сохранять текстовый файл в формате HTML.

6.2.1. Вызов HTML-справки с помощью CNT-файла

Предположим, вам надо включить в справочную систему файл rules.htm. Для этого добавьте, например, в нужный CNT-файл строку:

1 Правила=!EF("rules.htm","",4)

При вызове справочной системы в соответствующем месте появится пункт содержания Правила. Щелчок по кнопке Показать (Show) для этого пункта открывает окно в форме Web-страницы с содержимым файла rules.htm.

В качестве имени открываемого HTML-файла можно использовать имя файла, расположенного в сети Интернет, например: "http://www.our.rules.ru/rules.html".

6.2.2. Вызов HTML-справки с помощью внешней команды

Как и для HELP-файлов Windows, для HTML-файлов имеется возможность вызова с помощью внешней команды, которую следует занести в файл acad.pgp (см. разд. 1.2 "Файл acad.pgp").

Примером такой новой команды может служить представленная ниже команда HTMLRU. Если вызываемый файл называется rules.htm и находится в папке d:\AppAutoCAD, то в файл acad.pgp нужно добавить такую строку:

HTMLRU,start d:\AppAutoCAD\rules.htm,0

Команда HTMLRU инициирует вызов программы, которая в операционной системе по умолчанию открывает HTML-файлы (например, Internet Explorer).

6.2.3. Вызов HTML-справки с помощью функции startapp

Для вызова в среде AutoCAD справочного HTML-файла можно с помощью функции startapp открыть приложение, читающее эти файлы.

Пример:

(setq webrdr "\"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE\"")
(startapp webrdr "d:\\AppAutoCAD\\rules.htm")

В первой строке этого примера функция setq запоминает в переменной webrdr полное имя программы (Internet Explorer), причем, как и в разд. 6.1.5 "Вызов WIN-справки с помощью функции startapp", нужно использовать дважды двойные кавычки. Затем функция startapp вызывает приложение и с его помощью открывает HTML-файл.

6.3. Устаревшие справочные файлы AutoCAD

К устаревшим справочным файлам системы AutoCAD относятся файлы с расширением ahp, которые использовались в предыдущих версиях.

6.3.1. Функция acad_helpdlg

Для временной поддержки старых справочных файлов в перечне функций языка AutoLISP сохранена следующая функция:

(acad_helpdlg <файл> <раздел>)

Оба аргумента являются текстовыми строками (задают имя справочного файла с расширением ahp и имя раздела справки). По своему действию функция аналогична функции help (см. разд. 6.1.3 "Функция help").

6.4. Контекстно-зависимая справка к командам пользователя

При написании команд пользователя удобно по клавише <F1> получать контекстно-зависимую справку, отражающую во время работы команды описание ее действия и опций. Стандартные команды системы AutoCAD такому условию отвечают. Например, если после начала работы команды ОТРЕЗОК (LINE) вы в ответ на запрос ввода первой или второй точек нажмете клавишу <F1>, то откроется справочный раздел, посвященный построению отрезков с помощью этой команды.

6.4.1. Функция setfunhelp

Функция setfunhelp дает возможность сгенерировать контекстно-зависимую справку для команд, созданных пользователем. Синтаксис функции:

(setfunhelp <функция-команда> [<файл> [<раздел> [<начало>]]])

Аргументы: <функция-команда> - имя функции, начинающееся с префикса C: или c: и определяющее новую команду AutoCAD; <файл> - имя справочного файла; <раздел> - наименование раздела справочного файла; <начало> - начальная страница справки. Все аргументы - текстовые строки.

В качестве имени функции, вводимой вместо первого аргумента, должно быть имя с префиксом C: или c: (оба начинаются с латинской буквы C). Если, например, функция называется c:crown, то она определяет новую команду CROWN.

Второй, третий и четвертый аргументы аналогичны аргументам функции help (см. разд. 6.1.3 "Функция help"). Если в аргументе <файл> опущено расширение, то AutoCAD сначала ищет файл с расширением hlp, затем - с расширением ahp и только потом - файл без расширения.

При успешном завершении функция setfunhelp возвращает значение первого аргумента, при неудачном - nil.

6.4.2. Особенности применения функции setfunhelp

Как было сказано в разд. 2.16.2 "Функция defun", пользовательские функции создаются, например, при помощи функции defun. Описание любой пользовательской функции должно обязательно предшествовать в программном файле указанию имени этой функции в качестве первого аргумента в функции setfunhelp. В противном случае результат работы программы не предсказуем.



Copyright © Сайт поддержки пользователей САПР by Victor Tkachenko