- •Введение
- •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.2. Функции построения составных объектов
В системе Компас разработчиками определены функции, позволяющие осуществлять манипуляции с рядом графических примитивов для достижения требуемых задач. К таким задачам относится построение таблиц и контуров графических объектов.
Построение контура осуществляется посредством команды Contour. Формат команды следующий:
int Contour (unsigned short style) где,
style-стиль линии (см. стили LineSeg).
Требования для реализации команды:
-все определяемые далее до вызова функции EndObj геометрические примитивы чертежа (отрезки, дуги, кривые) будут включены в контур;
-контур должен быть непрерывным;
-начальная точка очередного объекта обязана совпадать с конечной точкой предыдущего.
Полученный контур может быть использован для построения эквидистанты. Функция EndObj возвращает указатель на созданный макрообъект.
Пример использования:
reference
p; Contour(1);
/* определение контура */ ArcByPoint
(50,50,50,0,50,100,50,1,1 ); LineSeg
(100,50, 0, 50, 1); p
= EndObj();
Результат выполнения представлен на рисунке 21.
Рис. 21. Построение элемента с помощью функции Contour |
Построение таблицы осуществляется посредством вызова объекта Тable(). Формат и параметры вызова метода Тable() аналогичны как и при построении контуров, за исключением того, что нет необходимости указывать стиль линии. Пример использования представлен частью листинга прикладной библиотеки.
Table(); const
double n=25; for
(int i=0;i<=8;i++) { LineSeg(
50+n*i,50, 50+n*i, 100, 1 ); }; LineSeg
(50,50,50+n*8,50,1); LineSeg
(50,75,50+n*8,75,1); LineSeg
(50,100,50+n*8,100,1); EndObj();
Результат выполнения представлен на рисунке 22.
Рис. 22. Построение таблицы с помощью функции Table() |
2.3. Функции ввода параметров
Для организации в прикладной библиотеке ввода данных от пользователя в системе КОМПАС API имеются команды, позволяющие задать значения переменных посредством диалогового окна. В языке С++ определены следующие типы данных: int- описание целочисленного типа данных, double-описание вещественного (дробного) типа данных, char[]-тип по работе со строками, char-символьный тип и т.д. Вызов диалогов для вышеперечисленных типов осуществляется с помощью следующих функций: ReadInt, ReadLong, ReadString, ReadDouble, а также их аналогов с поддержкой Unicode.
Функция ReadInt позволяет ввести целое число с контролем попадания значения в заданный интервал. Формат команды следующий:
int ReadInt (char *smess, int def, int min, int max, int *value) где,
smess-указатель на строку приглашения;
def-значение, которое будет присвоено, если выбор не сделан;
min,max- интервал возможных значений;
value- результат ввода, посредством которого связывается значение с указанной переменной.
Функция ReadLong позволяет ввести длинное целое число с контролем попадания значения в заданный интервал.
Формат команды аналогичен ReadInt.
Функция ReadDouble позволяет ввести вещественное число с контролем попадания значения в заданный интервал. Формат команды аналогичен ReadInt.
Функция ReadString позволяет ввести строку заданной длины. Формат команды следующий:
int ReadString(char *smess, char *str, int maxlen) где,
smess- строка приглашения;
maxlen- максимально допустимая длина строки;
str- результат ввода.
Для всех юникодных операций форма записи вышеперечисленных функций следующая: ReadIntT, ReadLongT, ReadStringT, ReadDoubleT.
Пример использования:
TCHAR
str[]=_T(""); ReadStringT
(_T("Ввод текстового сообщения"),
str,20);
//
Выдача сообщения пользователю MessageT(
str );int ValueInteger; ReadIntT(_T("Введите
значение целого числа"), 12,1,100,
&ValueInteger);
//Если
Юникод не используется, форма записи
выражения следующая: //ReadInt("Введите
значение целого числа", 20,1,100,
&ValueInteger); double
ValueDouble; ReadDoubleT(_T("Введите
значение
вещественного
числа"),
25.,1.,100., &ValueDouble);long ValueLong;
ReadLongT(_T("Введите
значение длинного целого числа"),
100,1,100000, &ValueLong); double
ValueResult=ValueLong/ValueDouble+sin(ValueInteger); TCHAR
buf[50];
_stprintf(
buf, _T("Результат
вычисления:
%lf"),ValueResult); MessageT(
buf );
Результат выполнения представлен на рисунке 23.
Рис. 23. Применение функций ввода параметров для расчетов и инициализации данных |
При вычислении выражения «ValueResult= ValueLong/ ValueDouble+sin(ValueInteger)» в функцию синуса будет подставлено значение в радианах. Для проведения расчетов в градусах необходимо использовать формулу пересчета: 1 рад=180º/π или воспользоваться математической функцией синуса, которая определена в системе следующим образом: double SinD (double ang) где, ang- угол в градусах. Функция вернет значение синуса аргумента. В систему включены и другие тригонометрические функции: CosD-вычисление косинуса, TanD-вычисление тангенса, AtanD-вычисление арктангенса.