Подключение к Компас

Подключение к Компас.
Предисловие: В тексте используются примеры работающие в Комапас V9 и Delphi 7.

Существует 2 способа работы с Компас:
1. Используя библиотеки .tlb
2. Используя Variant.
Второй способ более гибок, но ошибку в коде иногда можно определить только после запуска программы.
Выбор того или иного способа лежит за вами.
Рассмотрим оба способа.

1. Используя библиотеки .tlb.
Приведем пример кода.

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls,ComObj, ksConstTLB, ksTlb;

procedure TForm1.Button1Click(Sender: TObject);
var
kompas:kompasobject;
n:integer;
begin
kompas:=KompasObject(GetActiveOleObject(‘Kompas.Application.5′));
n:=0;
n:=kompas.ksGetDocumentType(0);
case n of
1:button1.Caption:=’2D-чертеж’;
2:button1.Caption:=’Текстовый документ’;
3:button1.Caption:=’2D-фрагмент’;
4:button1.Caption:=’Спецификация’;
5:button1.Caption:=’3D’;
end;
end;

Первое что мы сделали — это подключили библиотеки ksConstTLB (основная библиотека) и ksTLB (библиотека констант), а

тaкже ComObj.
Оболочка Компаса имеет тип Kompasobject;
Модель, Сборка — ksdocument3d — 5;
Чертеж, Фрагмент — ksdocument2D — 1,3;
Текстовый документ — ksdocumentTXT — 2;
Спецификация — ksspcdocument — 4.
Подключение к Компас осуществляется функцией KompasObject(GetActiveOleObject(‘Kompas.Application.5’));.

2. Используя Variant.
Приведем пример кода.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls,comobj;

procedure TForm1.Button1Click(Sender: TObject);
var
kompas:variant;
n:integer;
begin
kompas:=GetActiveOleObject(‘Kompas.Application.5′);
n:=0;
n:=kompas.ksGetDocumentType(0);
case n of
1:button1.Caption:=’2D-чертеж’;
2:button1.Caption:=’Текстовый документ’;
3:button1.Caption:=’2D-фрагмент’;
4:button1.Caption:=’Спецификация’;
5:button1.Caption:=’3D’;
end;
end;

Первое что мы сделали — это подключили библиотеку ComObj.
Здесь все указатели имеют тип Variant;
Подключение к Компас осуществляется функцией KompasObject(GetActiveOleObject(‘Kompas.Application.5’));.
Далее все точно также, только тип указывать не надо.

В данном примере различия не очень видны, но они будут существенны при применении более сложных построений и

вычислений.

Желаем приятной работы.

Добавить комментарий