Описание программы
Основные функции
int main(void) – отвечает за переход в графический режим и вызывает функцию make_a_window() построения первого окна. При закрытии всех окон завершает работу программы и возвращает 0.
void make_a_window(void) – отвечает за создание первого окна, содержащего кнопки «NewPrj»(вызывает функцию make_a_canvas_window отрисовывающую окно для работы с новым проектом), «Tehn param», «Cycle», «Single», «Save», «Close» и «Exit». Помимо них окно содержит элементы: AddList(для вывода кода УП) и MkCanvas(для вывода графического изображения контура движения резца). Функция использует глобальную переменную mcanv.
void make_a_canvas_window(void) – отвечает за создание нового окна, позволяющего работать с новым проектом. Окно содержит кнопки «Set start point»(вызывает функцию asc_start_point), «Sopr»(вызывает функцию asc_sopr_form), «Line»(вызывает функцию asc_line_form), «Arc»(вызывает функцию asc_arc_form), «Close» и некоторые другие. Помимо них окно содержит элемент: MkCanvas(для вывода графического изображения контура движения резца). Функция использует глобальную переменную mcanv.
Функции отвечающие за ввод пользователем данных
Все функции начинающиеся с «asc_» предназначены для отрисовки окон в элементы которых пользователь обязан ввести необходимые программе данные.
void asc_start_point(int t) – окно отвечает за ввод начальных координат (использует функцию Proc_setpoint для отображения введенных координат)
void asc_line_form(void *data) – окно отвечает за ввод конечных координат линии
void asc_arc_form(void *data) – окно отвечает за ввод радиуса, координат центра и начального/конечного углов дуги окружности
void asc_line_arc_form(void *data) – окно отвечает за ввод данных, необходимых для построения линии по заданному углу наклона и сопряжения её с окружностью
void asc_sopr_form(void) – окно отвечает за ввод информации о сопряжении и введение радиуса и параметров сопряжения
void asc_2point_line_form(int *srad) – окно отвечает за ввод начальных и конечных координат линии, используется при построении сопряжения дуги с прямой
void asc_1point_form(int *srad) – окно отвечает за ввод конечных координат дуги сопряжения
void asc_2line_sopr_form(void) – окно отвечает за ввод информации о сопряжении 2 прямых и введение радиуса и параметров сопряжения
void asc_cilindr_param_form(void *data) – окно отвечающее за ввод параметров цилиндрической заготовки: длины и диаметра
void asc_zagot_form(void *data) – окно отвечает за выбор одной из стандартных заготовок
void asc_Yline_form(void *data) – окно отвечающее за ввод угла наклона к оси 0Х и конечной координаты по Y
void asc_Xline_form(void *data) – окно отвечающее за ввод угла наклона к оси 0Х и конечной координаты по Х
void asc_skor_shpind_form(void) – форма для выбора скорости шпинделя
void asc_skor_poda4_form(void) – форма для выбора скорости подачи
void asc_nomer_instr_form(void) – форма для выбора скорости подачи
void asc_nomer_korr_form(void) – форма для выбора скорости подачи
void asc_tehn_param_form(void) –форма для выбора, какой технологический параметр надо изменить
void asc_cycle_toch_form(void) – создаёт окно для ввода параметров цикла точения
void asc_cycle_rezb_form(void) – создаёт окно для ввода параметров цикла резьбонарезания
void asc_cycle_copir_form(void) – создаёт окно для ввода параметров цикла копирования
void asc_cycle_param_form(void) – окно отвечающее за выбор типа цикла обработки (точение/копирование/резьбонарезание/...)
Функции отвечающие за операции над данными
v
oid
GetXRYR12(int x1, int y1, int r1, int x2, int y2, int r2, int *xr1,
int *yr1, int *xr2, int *yr2) – решает
систему вида:
(x-x1)^2 +(y-y1)^2=r1^2,
(x-x2)^2 +(y-y2)^2=r2^2;
Возвращает 2 возможных координаты центра в виде (xr1;yr1) и (xr2;yr2).
v
oid
GetXPYP2(float k, int b0, int x2, int y2, int r, int *xr1, int *yr1,
int *xr2, int *yr2) – решает
систему вида:
y=kx+b0,
(x-x2)^2 +(y-y2)^2=r^2;
Возвращает 2 возможных координаты точек пересечения в виде (xr1;yr1) и (xr2;yr2).
void GetYP2(float x, float xr, float yr, float r, float *y1, float *y2) – функция ищет координаты точек пересечения вертикальной прямой и окружности. Решает систему вида:
x
=n,
(x-x2)^2 +(y-y2)^2=r^2;
Возвращает 2 возможных координаты точек пересечения в виде y1 и y2.
void GetKB(float x1, float y1, float x2, float y2, float *k, float *b) – функция ищет коэффициенты k и b прямой y=kx+b по координатам двух точек, принадлежащих данной прямой
void GetXYl(float x11,float y11,float x12,float y12, float x21,float y21,float x22,float y22, float *xr,float *yr) – функция ищет координаты точки пересечения 2 прямых. Прямые задаются 2 точками, лежащими на них. Решает систему вида:
y=k1x+b1,
y=k2x+b2;
Возвращает координату точки пересечения в виде (xr;yr)
int fromAtoB(int a, int b) – вычисляет длину дуги в градусах от угла a до угла b против часовой стрелки.
int NumLength(int i) – вычисляет количество символов в числе i.
void IntToStr(int i, char *str) – преобразует переменную i типа int в строку символов на которую указывает str.
Функции отвечающие за отрисовку данных и генерирование управляющей программы для УЧПУ
Все функции, начинающиеся с «draw_» предназначены для рисования элементов контура заготовки и генерирование управляющей программы. Для всех этих функций есть дополнительные функции со схожими именами к которым дописано «_close». Такие функции закрывают активное окно (в котором пользователь вводил данные) после своего выполнения.
Все функции, начинающиеся с «Use» предназначены для изменения глобальных переменных, используемых при выборе способа построения. Также эти функции изменяют текст в TextBox’е, чтобы пользователь заранее имел графическое представление о том, как будет происходить построение.
void Draw_line(void *data) – рисует линию используя 2 координаты
void Draw_Xline_close(void *data) – рисует линию используя угол наклона к оси 0X и конечную координату по X и закрывает окно
void Draw_Yline_close(void *data) – рисует линию используя угол наклона к оси 0X и конечную координату по Y и закрывает окно
void Draw_arc(void *data) – рисует дугу
void Draw_arc_close_spin_modify(void *data) – модификация void Draw_arc(void *data), для случаев по и против часовой стрелки
void draw_sopr(void *data) – сопрягает последнюю точку графика с заданной одним из 4 способов
void Draw_sopr_line(void *data) – рисует дугу, сопрягающую последнюю точку со следующей прямой
void Draw_line_arc_close(void *data) – чертит линию по заданному углу наклона и сопрягает её с окружностью
void draw_sopr_arc_line(void *data) – сопрягает последнюю начерченную прямую с следующей (у новой прямой задаётся точка и угол)
