Сначала необходимо в раздел 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) и лишь после этого выполняйте сборку библиотеки.
Разработка мини-САПР зубчатых колес
Для лучшего усвоения прочитанного материала разработаем мини-САПР, создающую по минимальному количеству исходных данных 3D-модель зубчатого колеса (как прямозубого, так и косозубого). В общих чертах задача такова: после вызова библиотеки пользователем появляется диалоговое окно, в котором он задает модуль, количество зубьев, ширину зубчатого венца, а также угол наклона зубьев колеса. По введенным параметрам, после нажатия кнопки Построение, библиотека должна сгенерировать трехмерную модель колеса.
Выполните заготовку конструкторской библиотеки, как это было описано в предыдущем разделе. Чтобы немного облегчить себе задачу, вы можете воспользоваться готовым шаблоном, для чего скопируйте все исходные файлы предыдущего примера в новую директорию (назовем ее Gears3D) и сохраните проект под новым именем (Gears3D.dpr). Обязательно отредактируйте пути к файлам библиотек КОМПАС (то есть к папке Gears3D\dcu) в настройках проекта. Измените название библиотеки на Gears miniCAD и оставьте старый идентификатор библиотеки. Скопируйте из папки SDK\Include в каталог Gears3D\dcu еще один файл с описаниями констант, использующимися при инициализации различных интерфейсов, – ksConstTLB.pas. Затем можно, наконец, приступать к выполнению проекта.
Поскольку взаимодействие с пользователем планируется осуществлять с помощью диалогового окна, в проект необходимо добавить диалоговую форму. Для этого выполните команду File → New → Form, после чего в инспекторе объектов настройте часть свойств формы (табл. 6.8), оставив остальные заданными по умолчанию.
После создания формы Delphi автоматически сгенерировал модуль (unit) с кодом ее описания. Удалите из этого модуля описание глобальной переменной GearsForm типа TGearsForm и сохраните модуль под именем BuildUnit.pas.