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

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-вычисление арктангенса.