Межпрограммное взаимодействие

Страницы работы

Содержание работы

Лабораторная работа №5

Межпрограммное взаимодействие

Межпрограммное взаимодействие – включает в себя множество способов обмена информацией между приложениями. В основе большинства этих методов лежит COM технология, являющаяся одной из главных составляющих операционных систем Windows. Мы рассмотрим один из таких способов называемый OLE Automation. На русский язык этот термин обычно переводиться как «контроллер автоматизации», хотя чаще его оставляют без перевода.

Наше приложение будет контроллером (контроллер управляет другими приложениями), а в качестве второго приложения (объекта управления) будет использоваться сервер автоматизации AutoCAD. Большинство современных приложений, в том числе и AutoCAD, поддерживают COM – технологию за счёт использования спецификации, разработанной компанией Microsoft, и поддержки стандартных интерфейсов, через которые можно получить доступ к функциям этих приложений. В данном руководстве будет описана методика работы с технологией OLE Automation на примере AutoCAD, однако всё это может быть перенесено и на другие приложения поддерживающие COM.

Найдите на своём компьютере файл acax16enu.tlb (цифры в названии этого файла определяют версию AutoCAD, поэтому у вас оно может несколько отличаться). Этот файл обычно находиться либо в каталоге в котором установлен AutoCAD, либо в каталоге C:\Program Files\Common Files\Autodesk Shared. Файлы с расширениями tlb являются библиотеками типов, они содержат описание COM – модели приложения.

Откройте C++ Builder и в его меню выберите команду Project->Import Type Library. В отрывшемся диалоговом окне нажмите кнопку Add и выберите найденную ранее библиотеку типов AutoCAD. Builder зарегистрирует выбранную вами библиотеку типов, затем вам необходимо её проинсталлировать (кнопка Install).

После компиляции на палитре компонентов будут проинсталлированы несколько новых компонентов (по умолчанию они помещаются на страницу ActiveX), из всех этих компонентов нам понадобиться только AcadDocument, который позволяет взаимодействовать с графической оболочкой AutoCAD. Здесь мы воспользовались технологией так называемого раннего связывания с сервером, в принципе, можно обойтись без импортирования библиотеки типов, используя технологию позднего связывания, однако первый вариант предпочтительнее за счёт большей скорости взаимодействия и удобства при программировании.

Получив в распоряжение компонент для работы с AutoCAD мы должны научиться с ним работать, т.е. изучить какие функции и каким образом можно вызывать. Найдите на своём компьютере файл acadauto, он должен находиться в каталоге C:\Program Files\AutoCAD\Help. Это файл справки, содержащий полную информацию об объектной модели AutoCAD, здесь содержится описание всех объектов их полей методов и событий (примеры работы с объектами приведены на Visual Basic).

Для работы с серверами автоматизации необходимо придерживаться следующего алгоритма действий:

·  Подключение к серверу:

AcadDocument1->Connect();

·  Выполнение функций на этом сервере

·  Сохранение созданного документа:

AcadDocument1->SaveAs(FileName);

·  Закрытие документа:

AcadDocument1->Close();

·  Отключение от сервера:

AcadDocument1->Disconnect();

Для работы с сервером автоматизации и вызова его функций вам понадобиться особый тип данных OleVariant, практически все параметры, передаваемые серверу, должны иметь этот тип. Для примера рассмотрим функцию AddCircle, в справке вы можете найти следующее описание этой функции.

Creates a circle given a center point and radius.

Signature

RetVal = object.AddCircle(Center, Radius)

Object

ModelSpace Collection, PaperSpace Collection, Block
The object or objects this method applies to.

Center

Variant (three-element array of doubles); input-only
The 3D WCS coordinates specifying the circle's center.

Radius

Double; input-only

The radius of the circle. Must be a positive number.

RetVal

Circle object
The newly created Circle object.

Remarks

This circle is created on the XY plane of the WCS.

Параметр Center определяет точку центра окружности. Он представляет собой массив из трёх элементов типа Double. На C++  такой массив можно создать следующим образом:

OleVariant A;

int B[2] = {0,2};

A=VarArrayCreate(B,1, varDouble);

Задать значения элементам массива можно следующим образом:

C.PutElement (X,0);

C.PutElement (Y,1);

Для двухмерного случая третью координату задавать не обязательно. Параметр Radius должен иметь тип Double, возвращаемый указатель на созданный объект RetVal можно не использовать. Задав все необходимые параметры можно вызвать функцию:

AcadDocument1->ModelSpace->AddCircle(A,R);

Аналогичным способом можно воспользоваться любой другой функцией. Проверка правильности параметров передаваемых серверу осуществляется не на стадии компиляции, а при выполнении данной функции, поэтому обратите внимание на возможные run-time ошибки.

В качестве примера вам дана маленькая программа, реализующая функцию межпрограммного взаимодействия, которая рисует простую фигурку и сохраняет полученный документ. Данная программа написана для версии AutoCAD2004, на других версиях не тестировалась.

Задания:

1.  Построить изометрического изображения куба по заданной стороне (наклон осей в изометрии 450)

2.  Построить треугольник по трём заданным сторонам.

3.  Построить изображения куба в диметрии по заданной стороне (наклон оси в диметрии 600)

4.  Построить треугольник по двум сторонам и углу между ними

5.  Построить треугольник по одной стороне и двум прилежащим к ней углам.

6.  Построить цилиндр по двум точкам, определяющие центры окружностей и их радиусу.

7.  Построить квадрат по заданной стороне и заштриховать его (шаг штриховки задаётся пользователем).

8.  Построить треугольник по трём точкам и провести биссектрису к одному из углов.

9.  Построить правильный n–угольник (число сторон многоугольника задаётся пользователем).

Похожие материалы

Информация о работе