procedure LibraryEntry(command: WORD); pascal; var GearsForm : TGearsForm; begin kompas := KompasObject(CreateKompasObject); if (kompas = nil) then exit; // получаем дескриптор главного окна КОМПАС Application.Handle := kompas.ksGetHWindow; // запрещаем доступ к главному окну kompas.ksEnableTaskAccess(0); // создаем объект диалогового окна GearsForm := TGearsForm.Create(Application); GearsForm.ks := kompas; // выводим диалог на экран GearsForm.ShowModal; // удаляем объект GearsForm.Free; // возвращаем доступ к окну kompas.ksEnableTaskAccess(1); Application.Handle := 0; kompas := nil; end; В приведенном фрагменте кода есть одна, на первый взгляд, непонятная строка – GearsForm.ks := kompas;. В действительности, здесь все просто. Поскольку обработка построения зубчатого колеса будет выполнена внутри класса формы TGearsForm, то для того, чтобы в нем не получать заново указатель на интерфейс KompasObject, этот указатель передается внешней переменной ks класса TGearsForm. Разумеется, эту переменную (типа KompasObject) необходимо предварительно добавить в раздел public описания класса формы. Перед этим подключите в разделе uses модуля BuildUnit следующие файлы (модули): ksTLB, ksAuto, ksConstTLB, LDefin3D, LDefin2D и math (последний не относится к КОМПАС API, это стандартный модуль математических функций Delphi). Скомпилируйте проект и подключите полученную библиотеку Gears3D.rtw к КОМПАС. Запустите ее и убедитесь, что после выполнения ее единственной команды в центре главного окна появляется созданное нами диалоговое окно. Перейдем к реализации обработчиков щелчка на кнопках. Начнем со второй (Отмена), поскольку ее обработчик чрезвычайно прост. Щелкните дважды в редакторе форм на кнопке Отмена и в обработчике, автоматически созданном в редакторе кода, введите всего одну строку, закрывающую форму (листинг 6.11).Листинг 6.10. Вывод диалогового окна библиотеки