КОМПАС-3D V10 на 100 %
Шрифт:
4. Закройте окно, в котором был открыт файл Kompas6API5-TLB.pas, в редакторе кода Delphi и измените имя файла на ksTLB.pas. Сгенерированный файл Kompas6API5-TLB.pas с интерфейсами размещается в каталоге Imports папки, в которой установлен Delphi, например C:\Program Files\Borland\Delphi7\Imports.
5. Скопируйте переименованный файл в каталог FirstLib\dcu вашего проекта.
6. Перейдите в главное окно проекта. В разделе uses замените следующую строку: Kompas6API5-TLB in “C:\Program Files\Borland\Delphi7\Imports\Kompas6API5-TLB.pas” на ksTLB. Напомню вам о том, что путь к Kompas6API5-TLB.pas может быть другим (он зависит от того, где установлен Delphi). Однако это не имеет значения, поскольку
7. При компиляции прикладной библиотеки будут использованы множество различных файлов с описаниями интерфейсов, констант и пр. В принципе, они могут быть размещены где угодно (при этом в разделе uses следовало бы задавать каждый путь явно), но для удобства работы с проектом рекомендую хранить их в папке dcu, где уже находится файл ksTLB.pas. Где бы все эти файлы ни находились, в Delphi необходимо указать путь к ним. Для этого выполните команду Project -> Options, после чего на вкладке Directories/Conditionals открывшегося окна настроек проекта (рис. 6.22) задайте пути к файлам проекта:
• Output directory – путь, по которому Delphi будет сохранять скомпилированный файл прикладной библиотеки (в нашем примере подойдет каталог FirstLib);
• Unit output directory и Search path – полный путь к каталогу FirstLib\dcu. По этим путям система будет искать необходимые файлы библиотек КОМПАСа, а также сохранять скомпилированные DCU-файлы.
Рис. 6.22. Задание путей к файлам проекта прикладной библиотеки
8. Перейдите на вкладку Application диалогового окна настроек проекта. В поле Target file extension введите расширение, которое будет применяться для файла будущей библиотеки – RTW. Нажмите OK, чтобы сохранить настройки.
Теперь можете сохранить проект и выполнить компиляцию (для этого воспользуйтесь командой Project -> Compile Hello_KOMPAS или сочетанием клавиш Ctrl+F9). В результате в папке FirstLib должна появиться пока еще пустая и бесполезная библиотека, файл которой назван системой Hello_KOMPAS.rtw.
Чтобы RTW-библиотека, написанная на Delphi, могла взаимодействовать с КОМПАС, в ней обязательно должны присутствовать как минимум три функции (для сред программирования на базе языка C или C++ достаточно двух, так как функции LibraryName и LibraryId объединены в одну – unsigned int WINAPI LIBRARYID):
• LibraryEntry – точка входа в библиотеку;
• LibraryName – возвращает имя библиотеки, отображаемое в менеджере библиотек;
• LibraryId – возвращает идентификатор библиотеки (позже его можно использовать при работе с самой библиотекой, для подключения списка меню ее команд и пр.).
Все эти функции обязательно должны быть экспортными, то есть экспортируемыми из данной DLL, чтобы система КОМПАС могла их видеть и вызывать. По этой причине их обязательно нужно вынести в раздел exports прикладной библиотеки.
Добавьте описание этих функций в вашу библиотеку (листинг 6.8).
library Hello_KOMPAS;
uses
SysUtils, Classes, ksTLB;
{$E rtw}
{$R *.res}
function LibraryName: PChar; pascal;
begin
Result := “Первая библиотека”;
end;
function LibraryId: integer; pascal;
begin
Result := 100;
end;
procedure LibraryEntry(command: WORD); pascal;
begin
end;
exports
LibraryName name “LIBRARYNAME”,
LibraryId name “LIBRARYID”,
LibraryEntry name “LIBRARYENTRY”;
begin
end.
Скомпилируйте
Совет
Любая создаваемая вами на Delphi библиотека будет иметь три указанные функции. Вы можете сохранить проект на данном этапе в какую-либо другую папку и в дальнейшем при разработках новых библиотек использовать его как заготовку.
Теперь нужно сделать так, чтобы библиотека стала рабочей.
Сначала необходимо в раздел uses добавить еще один подключаемый модуль – ksAuto, а сам файл этого модуля (ksAuto.pas) перенести в каталог FirstLib\dcu. Файл ksAuto.pas вместе с другими файлами библиотек API системы КОМПАС находится в каталоге SDK\Include папки, в которой установлена текущая версия КОМПАС-3D.
Внутри ksAuto.pas есть многочисленные ссылки на другие файлы с определением классов КОМПАС API. Явно подключать их в разделе uses не нужно, но следует перенести в один каталог с файлом ksAuto.pas. Для данного проекта достаточно всего четыре файла (для более сложных понадобятся, конечно, и другие): ks2DCOM-TLB.pas, LDefin2D.pas, LibTool.pas и LtDefine.pas. Просто скопируйте эти файлы из SDK\Include в папку FirstLib\dcu вашего проекта.
В файле проекта объявите глобальную переменную kompas типа KompasObject, а в процедуру входа в библиотеку добавьте следующий код (листинг 6.9).
uses
SysUtils, Classes, ksTLB, ksAuto;
{$E rtw}
{$R *.res}
// глобальная переменная приложения КОМПАС API
var kompas : KompasObject;
// код пропущен
procedure LibraryEntry(command: WORD); pascal;
begin
// инициализация объекта KompasObject
// с помощью функции CreateKompasObject
kompas := KompasObject(CreateKompasObject);
// если все прошло успешно
if (kompas = nil) then exit;
// выводим первое сообщение
kompas.ksMessage(“Привет из КОМПАСа!”);
// обнуляем переменную kompas
kompas := nil;
end;
Сохраните и скомпилируйте проект, после чего запустите библиотеку и выполните ее единственную команду. В результате библиотека выдаст первое приветственное сообщение (рис. 6.23).
Рис. 6.23. Сообщение, посланное библиотекой
Внимание!
При компиляции проекта прикладная библиотека должна быть обязательно отключена в менеджере библиотек, иначе компилятор сообщит об ошибке.
Исходные файлы этой простейшей библиотеки, а также сам исполняемый файл приложения Hello_KOMPAS.rtw находятся на прилагаемом к книге компакт-диске в папке Examples\Глава 6\Delphi Programming\FirstLib. При попытке компиляции исходных файлов на своем компьютере вы должны учитывать, что куда бы ни были скопированы исходники с диска, пути к файлам библиотек КОМПАС, указанные в настройках проекта, будут отличаться. По этой причине перед компиляцией обязательно отредактируйте эти пути (см. рис. 6.22) и лишь после этого выполняйте сборку библиотеки.