Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 50092.doc
Скачиваний:
17
Добавлен:
30.04.2022
Размер:
4.95 Mб
Скачать

2.1. Функции для работы с графическими документами

В предыдущем разделе были рассмотрены команды, отвечающие за построение отрезков и точек, относящиеся к простейшим геометрическим примитивам. Дополнительный набор команд, отвечающий за геометрические построения в системе КОМПАС, позволяет подготовить графический документ любого уровня сложности, хотя на программном уровне такое решение вопроса не всегда является тривиальным. Далее будут рассмотрены некоторые графические функции с описанием внутренней структуры и приведены примеры их использования в разрабатываемых прикладных библиотеках.

Команда PointArraw позволяет отобразить значок в графическом документе. Формат команды следующий:

PointArraw (double x, double y, double ang, unsigned char term) где,

x,y- координаты точки привязки значка;

ang- угол поворота значка;

term-тип стиля отображения. Стиль представлен целочисленным типом, который может принимать следующие значения:

  1. без значка;

  2. стрелка изнутри;

  3. стрелка снаружи;

  4. засечка с продолжением кривой (с "хвостиком");

  5. верхняя половина стрелки изнутри;

  6. нижняя половина стрелки изнутри;

  7. большая (7 мм) стрелка изнутри;

  8. стрелка для размера высоты (штрихи длиной 4 мм, расположенные под углом 45 градусов) ;

  9. треугольник по направлению кривой;

  10. окружность радиусом 2 мм тонкой линией;

  11. обозначение фиктивного центра в виде большого "креста";

  12. знак склеивания;

  13. знак пайки;

  14. знак сшивания;

  15. знак соединения внахлестку металлическими скобами;

  16. знак углового соединения металлическими скобами;

  17. знак монтажного шва;

  18. засечка без продолжения кривой (без "хвостика");

  19. треугольник по текущей СК - для базы;

  20. закрытая стрелка изнутри;

  21. закрытая стрелка снаружи;

  22. открытая стрелка изнутри;

  23. открытая стрелка снаружи;

  24. стрелка 90 град. изнутри;

  25. стрелка 90 град. снаружи;

  26. точка;

  27. точка маленькая.

Пример использования:

PointArraw (50,100,90,20);

Результат работы функции показан на рисунке 10.

Рис. 10. Построение элемента с помощью команды PointArraw

Команда Line позволяет вывести на экран прямую линию, проходящую через указанную точку под некоторым углом. Формат команды следующий:

Line (double x, double y, double ang), где

x,y-координаты точки;

ang- угол наклона прямой.

Пример использования:

Line (50,100,20);

Результат выполнения представлен на рисунке 11.

Рис. 11. Построение элемента с помощью команды Line

Команда ksRegularPolygon позволяет создать правильный многоугольник с заданными параметрами. Формат команды следующий:

reference ksRegularPolygon (RegularPolygonParam * par, unsigned char centre) где,

par-указатель на структуру параметров правильного многоугольника, подлежащих обязательному заполнению:

count- количество вершин многоугольника;

xc, yc- центр вписанной или описанной окружности;

ang- угол радиус-вектора, направленного от центра к первой вершине;

radius- радиус вписанной или описанной окружности;

describe- признак описанного или вписанного многоугольника (0 - вписанный многоугольник, 1 -описанный многоугольник);

style- стиль линии;

pCorner- динамический массив CORNER_ARR структур параметров скругленных (или усеченных) углов CornerParam (указатель на структуру CornerParam можно не заполнять-параметры будут занесены автоматически);

centre- признак построения обозначения центра: 0- нет осей; 1- значок осей (маленький "крест"); 2- горизонтальная ось; 3- обе оси.

Пример использования:

RegularPolygonParam par;

par.count=9;

par.xc=10;

par.yc=80;

par.ang=0;

par.radius=40;

par.describe=0;

par.style=1;

par.pCorner = ::CreateArray (CORNER_ARR, 0);

ksRegularPolygon(&par,3);

Результат выполнения представлен на рисунке 12.

Рис. 12. Построение элемента с помощью команды ksRegularPolygon

Команда ksRectangle позволяет построить прямоугольник. Формат команды следующий:

reference ksRectangle (RectangleParam * par, unsigned char centre) где,

par-указатель на структуру параметров прямоугольника:

x,y-координаты базовой точки прямоугольника - одной из его вершин;

ang-угол наклона стороны прямоугольника, выходящей из базовой точки;

height- высота прямоугольника;

width (в документации опечатка: wight-вес) - ширина прямоугольника - длина стороны, характеризующейся углом наклона ang,

style- стиль линии;

pCorner-динамический массив CORNER_ARR структур параметров скругленных (или усеченных) углов CornerParam;

centre- признак построения обозначения центра: 0- нет осей; 1- значок осей (маленький "крест"); 2- горизонтальная ось; 3- обе оси.

Пример использования:

RectangleParam par;

par.x=10;

par.y=100;

par.ang=5;

par.height=30;

par.width=60;

par.style=1;

par.pCorner = ::CreateArray (CORNER_ARR, 0);

ksRectangle (&par,2);

Результат выполнения представлен на рисунке 13.

Рис. 13. Построение элемента с помощью команды ksRectangle

Команда ksParEllipseArc позволяет выполнить построение дуги эллипса. Формат команды следующий:

reference ksParEllipseArc (EllipseArcParam1 *par) где,

par - указатель на структуру параметров дуги:

xc, yc- координаты центра эллипса;

a,b-длина полуосей эллипса;

ang- угол наклона полуоси a к оси OX;

parFirst- начальное значение параметра;

parSecond- конечное значение параметра;

dir- направление построения дуги;

style- стиль линии.

Пример использования:

EllipseArcParam1 par;

par.xc=10;

par.yc=100;

par.a=10;

par.b=30;

par.ang=90;

par.parFirst=10;

par.parSecond=50;

par.dir=0;

par.style=1;

ksParEllipseArc (&par);

Результат выполнения представлен на рисунке 14.

Рис. 14. Построение элемента с помощью команды ksParEllipseArc

Команда ksInsertRaster вставить растровый объект. Для того, чтобы команда была успешно выполнена, необходимо разместить графический файл на диске с указанием рабочего пути к нему. Системой поддерживаются следующие форматы файлов: GIF, BMP, JPG, TIF, PNG, TGA и другие. Формат команды следующий:

ksInsertRaster (RasterParam *par) где,

par - указатель на структуру параметров:

xBase,yBase- координаты базовой точки в СК вида; scale- масштаб;

ang- угол поворота в СК вида;

fileName-полный путь к файлу. Задать путь можно с помощью команды в режиме совместимости ::strcpy, lstrcpy использует только юникодную конфигурацию, которая в данной структуре не поддерживается.

Пример использования:

RasterParam par;

par.place.xBase = 0;

par.place.yBase = 200;

par.place.ang = 0;

par.place.scale = 1;

::strcpy(par.fileName,"c:\\image.tif");

ksInsertRaster (&par);

Результат выполнения представлен на рисунке 15.

Рис. 15. Построение элемента с помощью команды ksInsertRaster. Формат файла с расширением TIF

Команда ksHatch позволяет заштриховать указанную область. Формат команды следующий:

reference ksHatch (HatchParam * par) где,

style- стиль штриховки;

ang- угол штриховки;

step- шаг штриховки;

width- ширина полосы штриховки (0 - штриховать всю область);

x, y- координаты базовой точки;

pBoundaries- временная группа - границы штриховки.

Системные стили штриховки (параметр style) определены следующим образом:

0-металл;

1- неметалл;

2-дерево;

3- камень естественный;

4- керамика;

5- бетон;

6- стекло;

7- жидкость;

8- естественный грунт;

9- насыпной грунт;

10- камень искусственный;

11- железобетон;

12- напряженный железобетон;

13- дерево в продольном сечении;

14- песок.

Пример использования (рассмотрен альтернативный вариант работы с элементом Hatch без описания структуры):

// Штриховка квадрата

Hatch( 2,45,3,0,0,100);

//Контур для штриховки

LineSeg (0,100,50,100,1);

LineSeg (50,100,50,140,1);

LineSeg (50,140,0,140,1);

LineSeg (0,140,0,100,1);

reference rHatch = EndObj();

Результат выполнения представлен на рисунке 16.

Рис. 16. Построение элемента с помощью команды Hatch

Команда ksEllipse позволяет построить эллипс с заданными параметрами. Формат команды следующий:

reference ksEllipse (EllipseParam *par) где,

xc,yc- координаты центра эллипса;

a, b- длина полуосей эллипса;

ang- угол наклона оси а эллипса к оси X;

style- стиль линии.

Системные стили линий (style) ksEllipse аналогичны стилям команды LineSeg.

Пример использования:

EllipseParam par;

par.xc = 20;

par.yc = 20;

par.a = 30;

par.b = 10;

par.ang = 45;

par.style = 1;

reference p = ksEllipse(&par);

Результат выполнения представлен на рисунке 17.

Рис. 17. Построение элемента с помощью команды ksEllipse

Команда Circle строит окружность с заданными параметрами. Формат команды следующий:

reference Circle (double xc, double yc, double rad, int type) где,

xc, yc- координаты центра окружности;

rad- радиус окружности;

type- стиль линии (см. стили LineSeg).

Пример использования:

Circle(0,100,50,1);

Результат выполнения представлен на рисунке 18.

Рис. 18. Построение элемента с помощью команды Circle

Команда ksConicArc позволяет построить коническое сечение. Формат команды следующий:

reference ksConicArc (ConicArcParam * par) где,

A, B, C, D, E, F- коэффициенты канонического уравнения;

x1, y1- координаты начальной точки;

x2, y2- координаты конечной точки;

style- стиль линии (см. стили LineSeg).

Пример использования:

ConicArcParam par;

par.A = 16;

par.B = 0;

par.C = 9;

par.D = 0;

par.E = 0;

par.F = -144;

par.x1 = 2.5; par.y1 =5;

par.x2 = -2.5; par.y2 = 5;

par.style = 1;

ksConicArc(& par);

Результат выполнения представлен на рисунке 19.

Рис. 19. Построение элемента с помощью команды ksConicArc

Команда ArcByPoint производит построение дуги по центру и конечным точкам. Формат команды следующий:

ArcByPoint (double xc, double yc, double rad, double x1, double y1, double x2, double y2, short direction, unsigned short style) где,

xc, yc- координаты центра дуги;

rad- радиус дуги;

x1, y1- координаты начальной точки дуги;

x2, y2- координаты конечной точки дуги;

direction- направление отрисовки дуги: 1 - против часовой стрелки, -1 - по часовой стрелке;

type-стиль линии (см. стили LineSeg).

Пример использования:

const double n=50;

ArcByPoint (n,0+n,n,0,n,2*n,n,-1,1 );

Результат выполнения представлен на рисунке 20.

Рис. 20. Построение элемента с помощью команды ArcByPoin