- •Введение
- •1. Создание проектов прикладных библиотек
- •2. Работа с графическими объектами на плоскости
- •2.1. Функции для работы с графическими документами
- •2.2. Функции построения составных объектов
- •2.3. Функции ввода параметров
- •3. Методы и их составляющие для проведения вспомогательных построений
- •3.1. Математические функции
- •3.2. Функции вычисления пересечений
- •3.3. Функции вычисления длин, расстояний, углов
- •4. Работа с базами данных
- •5. Примеры проектирования библиотек в 2d
- •5.1. Построение графиков функций
- •5.2. Построение фигур
- •5.3. Построение эскизов
- •6. Твердотельное моделирование объектов в компас 3d
- •6.1. Построение твердотельных деталей посредством операций вращения и выдавливания
- •Элементы системы координат
- •Элементы детали
- •Конструктивные элементы
- •Операции
- •6.2. Построение фасок и скруглений в твердотельных моделях прикладных библиотек
- •6.3. Построение объектов в цвете
- •6.4. Работа со сборками
- •6.5. Включение в сборочные узлы твердотельных моделей без истории построения
- •6.6. Построение сборочных узлов и компонентов с параметрами посредством диалога
- •7. Пример Разработки твердотельных моделей компонентов и Сборочного узла направляющего патрубка
- •Заключение
- •Библиографический список
- •Оглавление
- •3 94026 Воронеж, Московский просп., 14
2.1. Функции для работы с графическими документами
В предыдущем разделе были рассмотрены команды, отвечающие за построение отрезков и точек, относящиеся к простейшим геометрическим примитивам. Дополнительный набор команд, отвечающий за геометрические построения в системе КОМПАС, позволяет подготовить графический документ любого уровня сложности, хотя на программном уровне такое решение вопроса не всегда является тривиальным. Далее будут рассмотрены некоторые графические функции с описанием внутренней структуры и приведены примеры их использования в разрабатываемых прикладных библиотеках.
Команда PointArraw позволяет отобразить значок в графическом документе. Формат команды следующий:
PointArraw (double x, double y, double ang, unsigned char term) где,
x,y- координаты точки привязки значка;
ang- угол поворота значка;
term-тип стиля отображения. Стиль представлен целочисленным типом, который может принимать следующие значения:
без значка;
стрелка изнутри;
стрелка снаружи;
засечка с продолжением кривой (с "хвостиком");
верхняя половина стрелки изнутри;
нижняя половина стрелки изнутри;
большая (7 мм) стрелка изнутри;
стрелка для размера высоты (штрихи длиной 4 мм, расположенные под углом 45 градусов) ;
треугольник по направлению кривой;
окружность радиусом 2 мм тонкой линией;
обозначение фиктивного центра в виде большого "креста";
знак склеивания;
знак пайки;
знак сшивания;
знак соединения внахлестку металлическими скобами;
знак углового соединения металлическими скобами;
знак монтажного шва;
засечка без продолжения кривой (без "хвостика");
треугольник по текущей СК - для базы;
закрытая стрелка изнутри;
закрытая стрелка снаружи;
открытая стрелка изнутри;
открытая стрелка снаружи;
стрелка 90 град. изнутри;
стрелка 90 град. снаружи;
точка;
точка маленькая.
Пример использования:
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