На вкладке Свойства можно также настроить цвет и оптические свойства создаваемого элемента. При программном построении элемента для этого сначала необходимо инициализировать еще один дополнительный интерфейс – ksColorParam. С помощью его свойств можно управлять визуальными характеристиками трехмерного элемента. Внесенные в функцию построения изменения показаны в листинге 6.6.
iBossExtrusion := ksEntity (iPart.NewEntity(o3d_bossExtrusion));
if (iBossExtrusion <> nil) then
begin
// присваиваем имя трехмерной операции,
// которое будет отображено в дереве построения
iBossExtrusion.name := “Программная операция выдавливания”;
// получаем указатель на интерфейс параметров цвета
// и оптических свойств
color := ksColorParam(iBossExtrusion.ColorParam);
// с помощью макроса RGB задаем цвет – красный
color.color := RGB(255, 0, 0);
// задаем уровень зеркальности (в долях единицы)
color.specularity := 0.8;
// и блеск
color.shininess := 1;
iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);
if (iBossDef <> nil) then
begin
iBossDef.directionType := dtNormal;
iBossDef.SetSideParam(true, etBlind, 25, false, 10);
iBossDef.SetThinParam(false, dtNormal, 0, 0);
iBossDef.SetSketch(iSketch);
end;
end;
Теперь все свойства настроены нужным образом, и можно создавать саму трехмерную операцию выдавливания. В КОМПАС для этого необходимо нажать кнопку Создать объект, в программе – вызвать метод Create объекта интерфейса ksEntity. Окончательный вид функции приведен в листинге 6.7.
iBossExtrusion := ksEntity(iPart.NewEntity (o3d_bossExtrusion));
if (iBossExtrusion <> nil) then
begin
iBossExtrusion.name := “Программная операция выдавливания”;
color := ksColorParam(iBossExtrusion.ColorParam);
color.color := RGB(255, 0, 0);
color.specularity := 0.8;
color.shininess := 1;
iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);
if (iBossDef <> nil) then
begin
iBossDef.directionType := dtNormal;
iBossDef.SetSideParam(true, etBlind, 25, false, 10);
iBossDef.SetThinParam(false, dtNormal, 0, 0);
iBossDef.SetSketch(iSketch);
iBossExtrusion.Create; // создаем операцию
end;
end;
Результат проделанной работы, как «вручную», так и с помощью подключаемого модуля, показан на рис. 6.19. Изображенный трехмерный элемент, как вы только что сами убедились, вполне может быть создан без какого-либо вмешательства пользователя, с помощью API КОМПАС.
Рис. 6.19. Трехмерный элемент, созданный программно
Очевидно, что точно таким же образом вы можете автоматизировать выполнение любой последовательности любых трехмерных формообразующих операций, построение вспомогательной геометрии, формирование массивов и пр., что в результате даст вам готовую трехмерную модель изделия.
Первая библиотека к КОМПАС-3D
Приведенный выше пример, демонстрирующий общий принцип программного выполнения трехмерных операций из внешнего приложения (плагина), вряд ли объяснил, как все-таки создать прикладную библиотеку для КОМПАС-3D. В этом разделе подробно рассмотрим разработку простейшей библиотеки, выводящей в среде КОМПАС сообщение «Привет из КОМПАСа!». Структура всех приложений для КОМПАС практически не отличается, поэтому такую библиотеку можно будет в дальнейшем использовать как заготовку для других более сложных утилит.
Прикладная библиотека для КОМПАС-3D представляет собой обычную DLL (Dynamic Link Library – динамически подключаемая библиотека Windows), только с расширением RTW. Такая библиотека подключается к КОМПАС, как и любая другая, уже известным нам способом: через менеджер библиотек посредством команды контекстного меню Добавить описание > прикладной библиотеки.
Для выполнения примера создайте на жестком диске папку FirstLib, а в ней папку dcu, в которой будут храниться файлы библиотек КОМПАС.
Теперь можно приступить к выполнению проекта.
1. Запустите Delphi и создайте шаблон DLL-библиотеки, который предлагается по умолчанию. Для этого выполните команду File > New > Other. Появится окно New Items (рис. 6.20) со всевозможными шаблонами Windows-приложений и файлами Delphi (исполняемый EXE-файл, консольное приложение, форма или компонент Delphi и пр.). На вкладке New этого окна выберите пункт DLL Wizard и нажмите кнопку OK.
Рис. 6.20. Диалоговое окно New Items
Если вы хорошо знакомы с Delphi, например не раз выполняли в этой среде динамически подключаемые библиотеки, то для вас будет привычным созданный файл-заготовка проекта, начинающийся со служебного слова library. Сохраните его на жесткий диск в папку FirstLib под именем Hello_KOMPAS.dpr.
2. Теперь нужно связать этот файл с библиотеками типов КОМПАС, чтобы можно было пользоваться интерфейсами API. Выполните команду Project > Import Type Library, затем из списка Import Type Library появившегося окна выберите пункт Kompas6API5 (Version 1.0). При этом в текстовом поле под списком должен отобразиться путь к файлу библиотек типов КОМПАС (например, C:Program FilesASCONKOMPAS- 3D V10BinkAPI5.TLB). Выбрав указанный пункт, нажмите кнопку Create Unit (рис. 6.21).
Рис. 6.21. Подключение библиотеки типов КОМПАС к Delphi
Примечание
Если в списке Import Type Library нет необходимого пункта, вы можете добавить его вручную, нажав кнопку Add и отыскав файл kAPI5.TLB (он находится в каталоге Bin папки, в которой установлен КОМПАС).
3. За несколько секунд Delphi сгенерирует PAS-файл с именем Kompas6API5-TLB, который будет иметь описание всех интерфейсов API 5. Измените имя (заголовок) скомпилированного модуля (автоматически добавленного в проект библиотеки), с Kompas6API5-TLB на ksTLB и сохраните проект.
4. Закройте окно, в котором был открыт файл Kompas6API5-TLB.pas, в редакторе кода Delphi и измените