Разработка программного модуля на языке программирования высокого уровня для решения инженерных задач

Разработка программы расчёта резьбовых соединений с использованием средств визуального программирования. Ввод исходных данных, вывод расчетных параметров, описание алгоритма. Формирование изображения резьбовых соединений, построение чертежей в AutoCAD.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 28.02.2019
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.Allbest.Ru/

Размещено на http://www.Allbest.Ru/

Размещено на http://www.Allbest.Ru/

Министерство образования и науки Российской Федерации

ФГАОУ ВО «Уральский федеральный университет имени первого Президента России Б.Н. Ельцина»

Кафедра «Информационные технологии и автоматизация проектирования»

Курсовая работа

по дисциплине «Информатика»

Тема:

Разработка программного модуля на языке программирования высокого уровня для решения инженерных задач

Екатеринбург - 2016

Содержание

  • Введение
  • Постановка задачи
    • Математическая модель
    • Алгоритм выполнения задачи
    • Текст программы
    • Результаты работы
    • Построение чертежей резьбовых соединений в AutoCAD
  • Вывод
  • Библиографический список

Введение

Delphi - структурированный, объектно-ориентированный язык программирования со строгой статической типизацией переменных. Основная область использования -- написание прикладного программного обеспечения. Эта программа хорошо подходит как для начинающих любителей программирования, так и для уже более опытных программистов. Залог успеха новичков в быстром освоении данного вида языка заложен в том, что этот язык очень похож с Pascal ABC (Free). Синтаксис и смысловое написание программ почти не отличаются. В связи с этим, новички могут уже на начальных этапах создавать простейшие программы. Осваивая язык, они могут достигнуть успехов профессионалов. Так как язык очень удобен в своем использовании и легок в освоении. Опытным же программистам он дает большие возможности. И все из-за того, что с помощью Delphi можно создавать различные типы программ. Такие как: консольные приложения, оконные приложения, приложения для работы с базами данных и Internet, распределённых приложений, работающих с любыми базами данных.

Цель работы - с использованием средств визуального программирования написать программу для расчёта резьбовых соединений в соответствии с вариантом. Программа должна позволять вводить исходные данные, выводить необходимые расчетные параметры, а также формировать изображение соответствующих элементов.

Постановка задачи

Нам даны таблицы для расчета резьбовых соединений с конкретными данными для каждого варианта они свои. Требуется рассчитать длину и написать программу для построения разъемных резьбовых соединений.

Математическая модель

1. Болтовое соединение (М12)

Длину болта рассчитываем по формуле:

l = Ф1 + Ф2 + S + m + a + c, где:

a + c0,3d

Ф1 и Ф2 - толщина соединенных фланцев,

S - толщина шайбы,

m - высота гайки,

а - запас резьбы,

с - величина фаски,

d - диаметр болта,

l - длина болта, после расчёта подбирается по ГОСТу ближайшее большее стандартное значение lст. в зависимости от диаметра болта d.

l = 14+1,4+11+0,312 = 28,2 мм

Принимаем по ГОСТ 7798-70 длину болта lст. = 28 мм.

Болт М121,532.58 ГОСТ 7798-70

Гайка М121,5.5 ГОСТ 5915-70

Шайба 12 ГОСТ 6402-70

Расчет геометрических характеристик:

D = 2d = 24 мм

Dш = 2,2d = 26,4 мм

m = 0,8d = 9,6 мм

S = 0,15d = 1,8 мм

h = 0,7d = 8,4 мм

2. Шпилечное соединение (М14)

Длину шпильки рассчитываем по формуле:

l = Ф1+S+m+a+c, где:

l - длина шпильки, после расчёта подбирается по ГОСТу ближайшее большее стандартное значение lст. в зависимости от диаметра шпильки d.

l = 10+11+3+0,314 = 28,2 мм

Принимаем по ГОСТ 22032-76 длину шпильки lст. = 28 мм.

Шпилька М1440.58 ГОСТ 22032-76

Гайка М14.5 ГОСТ 5915-70

Расчет геометрических характеристик:

D = 2d = 28 мм

Dш = 2,2d = 30,8 мм

m = 0,8d = 11,2 мм

S = 0,15d = 2,1 мм

3. Винтовое соединение (М8)

Длину винта рассчитываем по формуле:

l = Ф+1,5d, где:

Ф - толщина фланца,

d - диаметр резьбы,

l - длина винта, после расчёта подбирается по ГОСТу ближайшее большее стандартное значение lст.

l = 10+12 = 22 мм

Принимаем по ГОСТ 1491-80 длину винта lст. = 22 мм.

Винт М822.58 ГОСТ 1491-80

Расчет геометрических характеристик:

H = 0,6d = 4,8

D = 1,5d = 12

Алгоритм выполнения задачи

1) Открытие работы программы

2) Присваиваем значения диаметра, значения размеров под ключ, значения размера шляпки, значений диаметра описанной окружности из текстового документа.

3) Создаем массив длины по ГОСТ из текстового документа.

4) Присваиваем значения длины.

5) Выполняем расчеты.

6) Строим изображение.

7) Завершение работы программы.

Текст программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Figure: TRadioGroup;

GroupBox1: TGroupBox;

Box1: TComboBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

GroupBox2: TGroupBox;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

GroupBox3: TGroupBox;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Edit8: TEdit;

Edit9: TEdit;

Edit10: TEdit;

GroupBox4: TGroupBox;

Label12: TLabel;

Label13: TLabel;

Edit11: TEdit;

Edit12: TEdit;

Label8: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Image1: TImage;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Image2: TImage;

Label4: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

BOLT_GOST_7798_70 : array [1..12,1..4] of real;

GOST_DLINNA : array [1..30] of real;

GIKA_GOST_5915_70 : array [1..12,1..4] of real;

SHAIBA_GOST_11371_78 : array [1..12,1..3] of real;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

i,k,q : integer;

DLINNA_R, DLINNA, M : real;

f : textfile;

s : string;

p : array of string;

begin

With Image1.Canvas do

Begin

pen.Width: = 2; // толщина линии

{}Brush.Color: = clWhite; // цвет заливки белый

{!}pen.Color: = clWhite; //черный цвет заливки

Rectangle(0 ,0, 633, 305);

{!}pen.Color: = clGray; //черный цвет заливки

MoveTo(10,17);

Lineto(18, 17);

Lineto(18, 25);

Lineto(10, 30);

Lineto(20, 30);

Lineto(20, 50);

Lineto(10, 50);

Lineto(10, 17);

MoveTo(25, 50);

Lineto(35, 30);

Lineto(35, 51);

MoveTo(35, 44);

Lineto(27, 44);

MoveTo(40, 60);

Lineto(40, 30);

Lineto(50, 30);

Lineto(50, 50);

Lineto(40, 50);

MoveTo(55, 30);

Lineto(55, 51);

MoveTo(65, 30);

Lineto(65, 51);

MoveTo(55, 47);

Lineto(65, 34);

MoveTo(70, 50);

Lineto(80, 30);

Lineto(80, 51);

MoveTo(80, 44);

Lineto(72, 44);

MoveTo(85, 30);

Lineto(85, 51);

MoveTo(95, 30);

Lineto(95, 51);

MoveTo(85, 40);

Lineto(95, 40);

MoveTo(100, 30);

Lineto(110, 30);

MoveTo(105, 30);

Lineto(105, 51);

MoveTo(140, 30);

Lineto(130, 50);

MoveTo(140, 30);

Lineto(130, 30);

{Е}

MoveTo(150-140, 17+50);

Lineto(150-140, 50+50);

MoveTo(150-140, 18+50);

Lineto(160-140, 18+50);

MoveTo(150-140, 32+50);

Lineto(160-140, 32+50);

MoveTo(150-140, 50+50);

Lineto(160-140, 50+50);

{Р}

MoveTo(150-125, 50+50);

Lineto(170-145, 30+50);

MoveTo(170-135, 40+50);

Lineto(170-145, 40+50);

MoveTo(170-135, 40+50);

Lineto(175-140, 30+50);

MoveTo(170-135, 30+50);

Lineto(170-145, 30+50);

{И}

MoveTo(175-135, 50+50);

Lineto(175-135, 30+50);

MoveTo(175-135, 50+50);

Lineto(175-125, 30+50);

MoveTo(185-135, 50+50);

Lineto(185-135, 30+50);

{С}

MoveTo(195-140, 50+50);

Lineto(195-140, 30+50);

MoveTo(195-140, 50+50);

Lineto(195-130, 50+50);

MoveTo(195-140, 31+50);

Lineto(195-130, 31+50);

{К}

MoveTo(210-140, 30+50);

Lineto(210-140, 51+50);

MoveTo(210-140, 40+50);

Lineto(220-140, 30+50);

MoveTo(210-140, 40+50);

Lineto(220-140, 51+50);

{И}

MoveTo(220-135, 50+50);

Lineto(220-135, 30+50);

MoveTo(220-135, 50+50);

Lineto(220-125, 30+50);

MoveTo(230-135, 50+50);

Lineto(230-135, 30+50);

{Н}

MoveTo(235-135, 50+50);

Lineto(235-135, 30+50);

MoveTo(235-125, 40+50);

Lineto(235-135, 40+50);

MoveTo(245-135, 50+50);

Lineto(245-135, 30+50);

end;

For i: = 1 to 12 do

begin

// присвоение значения диаметра

BOLT_GOST_7798_70[i,1]: = strtofloat(Box1.Text);

// присвоение значений размеров под ключ

BOLT_GOST_7798_70[i,2]: = strtofloat(Box1.Text)*1.73;

// присвоение значений размера шляпки

BOLT_GOST_7798_70[i,3]: = strtofloat(Box1.Text)*0.7;

// присвоение значений диаметра описанной окружности

BOLT_GOST_7798_70[i,4]: = strtofloat(Box1.Text)*2;

end;

//Создания массива ГОСТ Длинна из текстового документа

assignfile(f,'ГОСТ_ДЛИННА.txt'); //открытие текстового документа из корневой

папки

reset(f);

i: = 0;

while not eof(f) do //цикл для считывания каждой стоки из текстового

документа

begin

i: = i+1;

SetLength(p,i); //задание длинны диномического массива

readln(f,s);

p[i-1]: = s;

end;

CloseFile (f); // закрытие текстового документв

For i: = 1 to 30 do

// присвоение значения длинны

GOST_DLINNA[i]: =

strtofloat(p[i*2+2,3]+p[i*2+2,4]+p[i*2+2,5]+p[i*2+2,6]+p[i*2+2,7]);

For i: = 1 to 12 do

begin

// присвоение значения диаметра

GIKA_GOST_5915_70[i,1]: = strtofloat(Box1.Text);

// присвоение значений размеров под ключ

GIKA_GOST_5915_70[i,2]: = strtofloat(Box1.Text)*2;

// присвоение значений высоты гайки

GIKA_GOST_5915_70[i,3]: = strtofloat(Box1.Text)*0.7;

// присвоение значений диаметра описанной окружности

GIKA_GOST_5915_70[i,4]: = strtofloat(Box1.Text)*2;

end;

For i: = 1 to 12 do

begin

// присвоение значения диаметра

SHAIBA_GOST_11371_78[i,1]: = strtofloat(Box1.Text);

// присвоение значений наружнего деаметра

SHAIBA_GOST_11371_78[i,2]: = strtofloat(Box1.Text)*2.2;

// присвоение значений толщины

SHAIBA_GOST_11371_78[i,3]: = strtofloat(Box1.Text)*0.15;

end;

// нахождение номера строки таблицы ГОСТовских стандартов

k: = 0;

For i: = 1 to 12 do If strtofloat(Box1.Text) = BOLT_GOST_7798_70[i,1]

then k: = i;

case Figure.ItemIndex of

// болтовое соединение

0:begin

// видимость элементов

edit1.Visible: = True;

edit2.Visible: = True;

Label2.Visible: = True;

Label3.Visible: = True;

// расчет длинны болта

DLINNA_R: = strtofloat(edit1.Text)+strtofloat(edit2.Text)+

SHAIBA_GOST_11371_78[k,3]

+GIKA_GOST_5915_70[k,3]+0.3*BOLT_GOST_7798_70[k,1];

// подбор длинны по ГОСТу

q: = 0;

For i: = 1 to 30 do If DLINNA_R<GOST_DLINNA[i] then If q = 0 then q:

= i;

DLINNA: = GOST_DLINNA[q];

// переменная масштаба

M: = strtofloat(edit3.Text);

// построение изображения

With FORM1.Canvas do

Begin

// для очистки поверхности

Pen.Style: = psSolid; // обычная линия

pen.Width: = 2; //толщина линии

{!}pen.Color: = clWhite; //черный цвет заливки

Brush.Style: = bsSolid; // способ заливки, заливка одним цветом

{}Brush.Color: = clBlack; // цвет заливки белый

Rectangle(5 ,5, 633, 305);

// основное изображение болта

Pen.Style: = psSolid; //обычная линия

{!}pen.Color: = clWhite; //черный цвет линии

pen.Width: = 2; //толщина линии

{!}Brush.Color: = clWhite; //черный цвет киси

Brush.Style: = bsBDiagonal; //штриховка тип 1

Rectangle(211 , round(150-0.7*SHAIBA_GOST_11371_78[k,2]*M),

round(211+strtofloat(edit2.Text)*M),

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); //фланец №2

Brush.Style: = bsFDiagonal; //штриховка тип 2

Rectangle(round(212-strtofloat(edit1.Text)*M) , round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M), 212,

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); //фланец №1

Brush.Style: = bsSolid; //заливка одним цветом

{}Brush.Color: = clBlack; // белый цвет заливки

Rectangle(round(211+strtofloat(edit2.Text)*M-DLINNA*M) , round(150-

0.5*BOLT_GOST_7798_70[k,1]*M), round(211+strtofloat(edit2.Text)*M),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)); //тело болта

pen.Width: = 1; //толщина

Rectangle(round(211+strtofloat(edit2.Text)*M-DLINNA*M) , round(150-

0.46*BOLT_GOST_7798_70[k,1]*M),

round(211+strtofloat(edit2.Text)*M),

round(150+0.44*BOLT_GOST_7798_70[k,1]*M)); //резьба

pen.Width: = 2; //толщина

Rectangle(round(210+strtofloat(edit2.Text)*M) , round(150-

0.5*BOLT_GOST_7798_70[k,4]*M),

round(211+strtofloat(edit2.Text)*M+BOLT_GOST_7798_70[k,3]*M) ,

round(150+0.5*BOLT_GOST_7798_70[k,4]*M)); //головка болта

Rectangle(round(211-strtofloat(edit1.Text)*M-

GIKA_GOST_5915_70[k,3]*M-SHAIBA_GOST_11371_78[k,3]*M) ,

round(150-0.5*GIKA_GOST_5915_70[k,4]*M), round(211-

strtofloat(edit1.Text)*M-SHAIBA_GOST_11371_78[k,3]*M) ,

round(150+0.5*GIKA_GOST_5915_70[k,4]*M)); //гайка

Brush.Style: = bsClear; // нет заливки

Rectangle(round(211-strtofloat(edit1.Text)*M-

GIKA_GOST_5915_70[k,3]*M-SHAIBA_GOST_11371_78[k,3]*M) ,

round(150-0.5*BOLT_GOST_7798_70[k,1]*M),

round(211+strtofloat(edit2.Text)*M+BOLT_GOST_7798_70[k,3]*M),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)); //грани болта

Brush.Style: = bsSolid; // заливка одним цветом

{}Brush.Color: = clBlack; // белый цвет заливки

Rectangle(round(209-strtofloat(edit1.Text)*M-

SHAIBA_GOST_11371_78[k,3]*M) , round(150-

0.5*SHAIBA_GOST_11371_78[k,2]*M), round(213-

strtofloat(edit1.Text)*M) ,

round(150+0.5*SHAIBA_GOST_11371_78[k,2]*M)); //шайба

pen.Width: = 1; //толщина

Pen.Style: = psDashDot;//штрих-пунктирная линия

MoveTo(round(211+strtofloat(edit2.Text)*M-DLINNA*M-10), 150);

//начало для горизогтальной оси симетрии

Lineto(round(211+strtofloat(edit2.Text)*M+BOLT_GOST_7798_70[k,3]*

M+10), 150); //линия горизогтальной оси симетрии

//болт вид сверу

Pen.Style: = psSolid; {обычная линия}

pen.Width: = 2; {толщина 2 пик}

Rectangle(round(530-0.7*BOLT_GOST_7798_70[k,2]*M) , round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M),

round(530+0.7*BOLT_GOST_7798_70[k,2]*M) ,

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); {Плоскость детали}

Ellipse(round(530-0.5*BOLT_GOST_7798_70[k,1]*M) , round(150-

0.5*BOLT_GOST_7798_70[k,1]*M),

round(530+0.5*BOLT_GOST_7798_70[k,1]*M) ,

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)); {тело болта}

MoveTo(round(530-0.5*BOLT_GOST_7798_70[k,2]*M),

round(150+0.47*BOLT_GOST_7798_70[k,1]*M)); {гайка}

Lineto(round(530-0.5*BOLT_GOST_7798_70[k,2]*M), round(150-

0.47*BOLT_GOST_7798_70[k,1]*M)); {гайка}

Lineto(530, round(150-0.53*BOLT_GOST_7798_70[k,4]*M)); {гайка}

Lineto(round(530+0.5*BOLT_GOST_7798_70[k,2]*M), round(150-

0.47*BOLT_GOST_7798_70[k,1]*M)); {гайка}

Lineto(round(530+0.5*BOLT_GOST_7798_70[k,2]*M),

round(150+0.47*BOLT_GOST_7798_70[k,1]*M)); {гайка}

Lineto(530, round(150+0.53*BOLT_GOST_7798_70[k,4]*M)); {гайка}

Lineto(round(530-0.5*BOLT_GOST_7798_70[k,2]*M),

round(150+0.47*BOLT_GOST_7798_70[k,1]*M)); {гайка}

pen.Width: = 1; {толщина 1 пик}

Pen.Style: = psDashDot;{штрих пунктирная линия}

MoveTo(round(530-0.5*BOLT_GOST_7798_70[k,2]*M-10), 150);

{горизонтальная ось симетрии}

Lineto(round(530+0.5*BOLT_GOST_7798_70[k,2]*M+10), 150);

{горизонтальная ось симетрии}

MoveTo(530, round(150-0.53*BOLT_GOST_7798_70[k,4]*M-10));

{вертикальная ось симетрии}

Lineto(530, round(150+0.53*BOLT_GOST_7798_70[k,4]*M+10));

{вертикальная ось симетрии}

//выноски размеров

{Для вида слева}

Pen.Style: = psSolid; {обычная линия}

{шляпка}

MoveTo(round(210+strtofloat(edit2.Text)*M), round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M-6*M));

Lineto(round(210+strtofloat(edit2.Text)*M), 150);

MoveTo(round(211+strtofloat(edit2.Text)*M+BOLT_GOST_7798_70[k,3]

*M)-1, round(150-0.7*SHAIBA_GOST_11371_78[k,2]*M-6*M));

Lineto(round(211+strtofloat(edit2.Text)*M+BOLT_GOST_7798_70[k,3]*

M)-1, 150);

//горизонтальная

MoveTo(round(210+strtofloat(edit2.Text)*M),round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M-4.7*M));

Lineto(round(211+strtofloat(edit2.Text)*M+BOLT_GOST_7798_70[k,3]*

M)-1,round(150-0.7*SHAIBA_GOST_11371_78[k,2]*M-4.7*M));

{диаметр болта}

MoveTo(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-30),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)-1);

алгоритм программа визуальный резьбовый

MoveTo(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M),

round(150-0.5*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-30),

round(150-0.5*BOLT_GOST_7798_70[k,1]*M)-1);

//вертикальная

MoveTo(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-

24),round(150+0.5*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-

24),round(150-0.5*BOLT_GOST_7798_70[k,1]*M)-1);

{диаметр шайбы}

MoveTo(round(209-strtofloat(edit1.Text)*M-

SHAIBA_GOST_11371_78[k,3]*M), round(150-

0.5*SHAIBA_GOST_11371_78[k,2]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-55),

round(150-0.5*SHAIBA_GOST_11371_78[k,2]*M)-1);

MoveTo(round(209-strtofloat(edit1.Text)*M-

SHAIBA_GOST_11371_78[k,3]*M),

round(150+0.5*SHAIBA_GOST_11371_78[k,2]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-55),

round(150+0.5*SHAIBA_GOST_11371_78[k,2]*M)-1);

//вертикальная

MoveTo(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-

44),round(150+0.5*SHAIBA_GOST_11371_78[k,2]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-

44),round(150-0.5*SHAIBA_GOST_11371_78[k,2]*M)-1);

Label17.Visible: = True;

Label18.Visible: = True;

Label19.Visible: = True;

end;

// размеры вывод

GroupBox2.Caption: = 'Болт';

GroupBox2.Visible: = True;

GroupBox3.Visible: = True;

GroupBox4.Visible: = True;

edit4.Text: = floattostr(BOLT_GOST_7798_70[k,2]);

edit5.Text: = floattostr(BOLT_GOST_7798_70[k,3]);

edit6.Text: = floattostr(BOLT_GOST_7798_70[k,4]);

LABEL8.Caption: = 'Принимаем стандартную длину по ГОСТ 7798-70, равную

'+floattostr(DLINNA) + ' мм';

edit8.Text: = floattostr(GIKA_GOST_5915_70[k,2]);

edit9.Text: = floattostr(GIKA_GOST_5915_70[k,3]);

edit10.Text: = floattostr(GIKA_GOST_5915_70[k,2]);

edit11.Text: = floattostr(SHAIBA_GOST_11371_78[k,2]);

edit12.Text: = floattostr(SHAIBA_GOST_11371_78[k,3]);

label14.Caption: = 'Болт '+'М'+ box1.Text +' х '+floattostr(DLINNA)+'.58

'+'ГОСТ 7798-70';

label15.Caption: = 'Гайка ' + 'M'+ box1.Text +' х '+'1,25.5 '+'ГОСТ 5915-

70';

label16.Caption: = 'Шайба ' + '1.'+ box1.Text +'.01 '+'ГОСТ 11371-78';

end;

// шпилечное соединение

1:begin

// видимость элементов

edit1.Visible: = True;

edit2.Visible: = False;

Label2.Visible: = True;

Label3.Visible: = False;

// расчет длинны шпильки

DLINNA_R: = strtofloat(edit1.Text)+ SHAIBA_GOST_11371_78[k,3]

+GIKA_GOST_5915_70[k,3]+0.7*BOLT_GOST_7798_70[k,1];

// подбор длинны по ГОСТу

q: = 0;

For i: = 1 to 30 do If DLINNA_R<GOST_DLINNA[i] then If q = 0 then q:

= i;

DLINNA: = GOST_DLINNA[q];

// переменная масштаба

M: = strtofloat(edit3.Text);

// построение изображения

With FORM1.Canvas do

Begin

Pen.Style: = psSolid; // обячная линия

pen.Width: = 1; // толщина

// для очистки поверхности

Pen.Style: = psSolid; // обычная линия

pen.Width: = 1; //толщина линии

pen.Color: = clWindowText; //черный цвет заливки

Brush.Style: = bsSolid; // способ заливки, заливка одним цветом

Brush.Color: = clWindow; // цвет заливки белый

Rectangle(0 ,0, 633, 305);

// основное изображение шпильки

Pen.Style: = psSolid; //обычная линия

pen.Color: = clBlack; //черный цвет линии

pen.Width: = 2; //толщина линии

Brush.Color: = clBlack; //черный цвет киси

Brush.Style: = bsBDiagonal; //штриховка тип 1

Rectangle(301 , round(150-0.7*SHAIBA_GOST_11371_78[k,2]*M),

round(301+1.5*GIKA_GOST_5915_70[k,1]*M),

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); //фланец №2

Brush.Style: = bsFDiagonal; //штриховка тип 2

Rectangle(round(302-strtofloat(edit1.Text)*M) , round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M), 302,

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); //фланец №1

Brush.Style: = bsSolid; //заливка одним цветом

Brush.Color: = clWhite; // белый цвет заливки

Rectangle(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M) ,

round(150-0.5*BOLT_GOST_7798_70[k,1]*M),

round(301+GIKA_GOST_5915_70[k,1]*M),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)); //тело шпильки

pen.Width: = 1; //толщина

Rectangle(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M) ,

round(150-0.46*BOLT_GOST_7798_70[k,1]*M),

round(301+GIKA_GOST_5915_70[k,1]*M),

round(150+0.44*BOLT_GOST_7798_70[k,1]*M)); //резьба

pen.Width: = 2; //толщина

Rectangle(round(301-strtofloat(edit1.Text)*M-

GIKA_GOST_5915_70[k,3]*M-SHAIBA_GOST_11371_78[k,3]*M) ,

round(150-0.5*GIKA_GOST_5915_70[k,4]*M), round(301-

strtofloat(edit1.Text)*M-SHAIBA_GOST_11371_78[k,3]*M) ,

round(150+0.5*GIKA_GOST_5915_70[k,4]*M)); //гайка

Brush.Style: = bsClear; // нет заливки

Rectangle(round(301-strtofloat(edit1.Text)*M-

GIKA_GOST_5915_70[k,3]*M-SHAIBA_GOST_11371_78[k,3]*M) ,

round(150-0.5*BOLT_GOST_7798_70[k,1]*M),

round(301+BOLT_GOST_7798_70[k,1]*M),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)); //грани гайки

Brush.Style: = bsSolid; // заливка одним цветом

Rectangle(round(299-strtofloat(edit1.Text)*M-

SHAIBA_GOST_11371_78[k,3]*M) , round(150-

0.5*SHAIBA_GOST_11371_78[k,2]*M), round(303-

strtofloat(edit1.Text)*M) ,

round(150+0.5*SHAIBA_GOST_11371_78[k,2]*M)); //шайба

pen.Width: = 1; //толщина

Pen.Style: = psDashDot;//штрих-пунктирная линия

MoveTo(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-10),

150); //начало для горизогтальной оси симетрии

Lineto(round(301+1.5*GIKA_GOST_5915_70[k,1]*M+10), 150); //линия

горизогтальной оси симетрии

// шпилька вид сверу

Pen.Style: = psSolid; //обычная линия

pen.Width: = 2; //толщина 2 пик

Rectangle(round(530-0.7*BOLT_GOST_7798_70[k,2]*M) , round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M),

round(530+0.7*BOLT_GOST_7798_70[k,2]*M) ,

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); //Плоскость детали

Ellipse(round(530-0.5*BOLT_GOST_7798_70[k,1]*M) , round(150-

0.5*BOLT_GOST_7798_70[k,1]*M),

round(530+0.5*BOLT_GOST_7798_70[k,1]*M) ,

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)); //тело шпильки

MoveTo(round(530-0.5*BOLT_GOST_7798_70[k,2]*M),

round(150+0.47*BOLT_GOST_7798_70[k,1]*M)); //гайка

Lineto(round(530-0.5*BOLT_GOST_7798_70[k,2]*M), round(150-

0.47*BOLT_GOST_7798_70[k,1]*M)); //гайка

Lineto(530, round(150-0.53*BOLT_GOST_7798_70[k,4]*M)); //гайка

Lineto(round(530+0.5*BOLT_GOST_7798_70[k,2]*M), round(150-

0.47*BOLT_GOST_7798_70[k,1]*M)); //гайка

Lineto(round(530+0.5*BOLT_GOST_7798_70[k,2]*M),

round(150+0.47*BOLT_GOST_7798_70[k,1]*M)); //гайка

Lineto(530, round(150+0.53*BOLT_GOST_7798_70[k,4]*M)); //гайка

Lineto(round(530-0.5*BOLT_GOST_7798_70[k,2]*M),

round(150+0.47*BOLT_GOST_7798_70[k,1]*M)); //гайка

pen.Width: = 1; //толщина 1 пик

Pen.Style: = psDashDot; //штрих пунктирная линия

MoveTo(round(530-0.5*BOLT_GOST_7798_70[k,2]*M-10), 150);

//горизонтальная ось симетрии

Lineto(round(530+0.5*BOLT_GOST_7798_70[k,2]*M+10), 150);

//горизонтальная ось симетрии

MoveTo(530, round(150-0.53*BOLT_GOST_7798_70[k,4]*M-10));

//вертикальная ось симетрии

Lineto(530, round(150+0.53*BOLT_GOST_7798_70[k,4]*M+10));

//вертикальная ось симетрии

//выноски размеров

{Для вида слева}

Pen.Style: = psSolid; {обычная линия}

//диаметр

MoveTo(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-6*M),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)-1);

MoveTo(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M),

round(150-0.5*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-6*M),

round(150-0.5*BOLT_GOST_7798_70[k,1]*M)-1);

//вертикальная

MoveTo(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-

4.7*M),round(150+0.5*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(301+0.5*BOLT_GOST_7798_70[k,1]*M-DLINNA*M-

4.7*M),round(150-0.5*BOLT_GOST_7798_70[k,1]*M)-1);

Label17.Visible: = False;

Label18.Visible: = True;

Label19.Visible: = False;

{D}

Label18.Left: = 168+round(301+0.5*BOLT_GOST_7798_70[k,1]*M-

DLINNA*M-40);

Label18.Top: = 16+140;

end;

// размеры вывод

GroupBox2.Caption: = 'Шпилька';

GroupBox2.Visible: = True;

GroupBox3.Visible: = True;

GroupBox4.Visible: = True;

edit4.Text: = floattostr(BOLT_GOST_7798_70[k,2]);

edit5.Text: = floattostr(BOLT_GOST_7798_70[k,3]);

edit6.Text: = floattostr(BOLT_GOST_7798_70[k,4]);

LABEL8.Caption: = 'Принимаем стандартную длину по ГОСТ 7798-70, равную

'+floattostr(DLINNA) + ' мм';

edit8.Text: = floattostr(GIKA_GOST_5915_70[k,2]);

edit9.Text: = floattostr(GIKA_GOST_5915_70[k,3]);

edit10.Text: = floattostr(GIKA_GOST_5915_70[k,2]);

edit11.Text: = floattostr(SHAIBA_GOST_11371_78[k,2]);

edit12.Text: = floattostr(SHAIBA_GOST_11371_78[k,3]);

label14.Caption: = 'Шпилька '+'М'+ box1.Text +' х '+floattostr(DLINNA)+'.58

'+'ГОСТ 22032-76';

label15.Caption: = 'Гайка ' + 'M'+ box1.Text +' х '+'1,25.5 '+'ГОСТ 5915-

70';

label16.Caption: = 'Шайба ' + '1.'+ box1.Text +'.01 '+'ГОСТ 11371-78';

end;

// винтовое соединение

2:begin

// расчет длинны болта

DLINNA_R: = strtofloat(edit3.Text)-

0.6*BOLT_GOST_7798_70[k,1]+1.5*BOLT_GOST_7798_70[k,1];

// подбор длинны по ГОСТу

q: = 0;

For i: = 1 to 30 do If DLINNA_R<GOST_DLINNA[i] then If q = 0 then q:

= i;

DLINNA: = GOST_DLINNA[q];

// переменная масштаба

M: = strtofloat(edit3.Text);

// видимость элементов

edit1.Visible: = True;

edit2.Visible: = False;

Label2.Visible: = True;

Label3.Visible: = False;

// построение изображения

With FORM1.Canvas do

Begin

// для очистки поверхности

Pen.Style: = psSolid; // обычная линия

pen.Width: = 1; //толщина линии

pen.Color: = clWindowText; //черный цвет заливки

Brush.Style: = bsSolid; // способ заливки, заливка одним цветом

Brush.Color: = clWindow; // цвет заливки белый

Rectangle(10 ,10, 633, 305);

// основное изображение шпильки

Pen.Style: = psSolid; //обычная линия

pen.Color: = clBlack; //черный цвет линии

pen.Width: = 2; //толщина линии

Brush.Color: = clBlack; //черный цвет киси

Brush.Style: = bsBDiagonal; //штриховка тип 1

Rectangle(301 , round(150-0.7*SHAIBA_GOST_11371_78[k,2]*M),

round(301+1.5*GIKA_GOST_5915_70[k,1]*M),

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); //фланец №2

Brush.Style: = bsFDiagonal; //штриховка тип 2

Rectangle(round(303-strtofloat(edit1.Text)*M)-1 , round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M), 302,

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); //фланец №1

Brush.Style: = bsSolid; //заливка одним цветом

Brush.Color: = clWhite; // белый цвет заливки

Rectangle(round(302-strtofloat(edit1.Text)*M) , round(150-

0.5*BOLT_GOST_7798_70[k,1]*M),

round(301+GIKA_GOST_5915_70[k,1]*M),

round(150+0.5*BOLT_GOST_7798_70[k,1]*M)); //тело винта

pen.Width: = 1; //толщина

Rectangle(round(302-strtofloat(edit1.Text)*M) , round(150-

0.4582*BOLT_GOST_7798_70[k,1]*M),

round(300+GIKA_GOST_5915_70[k,1]*M),

round(150+0.44*BOLT_GOST_7798_70[k,1]*M)); //резьба

pen.Width: = 2; //толщина

Brush.Style: = bsClear; // нет заливки

Brush.Style: = bsSolid; // заливка одним цветом

Rectangle(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M) , round(150-

0.75*BOLT_GOST_7798_70[k,1]*M), round(303-strtofloat(edit1.Text)*M)

, round(150+0.75*BOLT_GOST_7798_70[k,1]*M)); //Шляпка финта

pen.Width: = 1; //толщина

Pen.Style: = psDashDot;//штрих-пунктирная линия

MoveTo(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M-10), 150); //начало для горизогтальной

оси симетрии

Lineto(round(301+1.5*GIKA_GOST_5915_70[k,1]*M+10), 150); //линия

горизогтальной оси симетрии

Pen.Style: = psSolid; //обычная линия

pen.Width: = 2; //толщина 2 пик

MoveTo(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M), 150); //начало для обозначения фазки

Lineto(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M+2*M), 150); //обозначение фазки

// Винт вид сверу

Pen.Style: = psSolid; //обычная линия

pen.Width: = 2; //толщина 2 пик

Rectangle(round(530-0.7*BOLT_GOST_7798_70[k,2]*M) , round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M),

round(530+0.7*BOLT_GOST_7798_70[k,2]*M) ,

round(150+0.7*SHAIBA_GOST_11371_78[k,2]*M)); //Плоскость детали

Ellipse(round(530-0.75*BOLT_GOST_7798_70[k,1]*M) , round(150-

0.75*BOLT_GOST_7798_70[k,1]*M),

round(530+0.75*BOLT_GOST_7798_70[k,1]*M) ,

round(150+0.75*BOLT_GOST_7798_70[k,1]*M)); //тело шпильки

MoveTo(530+round(0.53*BOLT_GOST_7798_70[k,1]*M), 150-

round(0.53*BOLT_GOST_7798_70[k,1]*M)); //начало для обозначения

фазки

Lineto(530-round(0.53*BOLT_GOST_7798_70[k,1]*M),

150+round(0.53*BOLT_GOST_7798_70[k,1]*M)); //обозначение фазки

pen.Width: = 1; //толщина 1 пик

Pen.Style: = psDashDot; //штрих пунктирная линия

MoveTo(round(530-0.5*BOLT_GOST_7798_70[k,2]*M-10), 150);

//горизонтальная ось симетрии

Lineto(round(530+0.5*BOLT_GOST_7798_70[k,2]*M+10), 150);

//горизонтальная ось симетрии

MoveTo(530, round(150-0.53*BOLT_GOST_7798_70[k,4]*M-10));

//вертикальная ось симетрии

Lineto(530, round(150+0.53*BOLT_GOST_7798_70[k,4]*M+10));

//вертикальная ось симетрии

//выноски размеров

{Для вида слева}

Pen.Style: = psSolid; {обычная линия}

{высота шляпки}

MoveTo(round(303-strtofloat(edit1.Text)*M)-2, round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M-6*M));

Lineto(round(303-strtofloat(edit1.Text)*M)-2, 150);

MoveTo(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-1, round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M-6*M));

Lineto(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-1, 150);

//горизонтальная

MoveTo(round(303-strtofloat(edit1.Text)*M)-2,round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M-4.7*M));

Lineto(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-1,round(150-

0.7*SHAIBA_GOST_11371_78[k,2]*M-4.7*M));

{диаметр шляпки}

MoveTo(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M),

round(150+0.75*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-30,

round(150+0.75*BOLT_GOST_7798_70[k,1]*M)-1);

MoveTo(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M), round(150-

0.75*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-30, round(150-

0.75*BOLT_GOST_7798_70[k,1]*M)-1);

//вертикальная

MoveTo(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-20,round(150-

0.75*BOLT_GOST_7798_70[k,1]*M)-1);

Lineto(round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-

20,round(150+0.75*BOLT_GOST_7798_70[k,1]*M)-1);

Label17.Visible: = False;

Label18.Visible: = True;

Label19.Visible: = True;

{D}

Label18.Left: = 168+round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-40;

Label18.Top: = 16+140;

{H}

Label19.Left: = 184+round(299-strtofloat(edit1.Text)*M-

0.6*BOLT_GOST_7798_70[k,1]*M)-1;

Label19.Top: = 16+round(130-0.7*SHAIBA_GOST_11371_78[k,2]*M-

4.7*M);

end;

GroupBox2.Visible: = False;

GroupBox3.Visible: = False;

GroupBox4.Visible: = False;

label14.Caption: = 'Винт '+'М'+ box1.Text +' х '+floattostr(DLINNA)+'.58

'+'ГОСТ 22032-76';

LABEL8.Caption: = 'Принимаем стандартную длину по ГОСТ 7798-70, равную

'+floattostr(DLINNA) + ' мм';

label15.Caption: = '';

label16.Caption: = '';

end;

end;

end;

end.

Результаты работы

Болт

Шпилька

Винт

Построение чертежей резьбовых соединений в AutoCAD

Болт

Винт

Шпилька

Вывод

В ходе проведенной работы были получены данные:

Болтовое соединение:

Болт М121,532.58 ГОСТ 7798-70

Гайка М121,5.5 ГОСТ 5915-70

Шайба 12 ГОСТ 6402-70

Шпилечное соединение:

Шпилька М1440.58 ГОСТ 22032-76

Гайка М14.5 ГОСТ 5915-70

Винтовое соединение:

Винт М822.58 ГОСТ 1491-80

Библиографический список

1. Партин А.С. Программирование на языке Паскаль. Конспект лекций.- Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2003, 77с.

2. Чекмарев А.А., Осипов В.К. Справочник по машиностроительному черчению.- М.: Высшая школа, 1994. - 671с.; ил.

3. Инженерная графика и машиностроительное черчение. Ч. II. Методические указания и контрольные задания для студентов всех технических специальностей и форм обучения. - Свердловск, изд. УПИ им. С.М. Кирова, 1977, с.28. Под редакцией канд. тех. наук Мальцева В.И.

4. Соединения разъёмные и неразъёмные: Методические указания по курсу «Инженерная графика» / В.А. Белоусова, О.В. Железнова, Е.Я. Жигалова, Э.Э. Истомина, Т.И. Кириллова. Екатеринбург: УГТУ-УПИ, 1994. 51с.

Размещено на allbest.ru


Подобные документы

  • Расчет трансформатора питания. Численное решение нелинейных уравнений с заданной точностью и дифференциальных уравнений первого порядка. Разработка программы с использованием средств визуального программирования на алгоритмическом языке программирования.

    курсовая работа [1,2 M], добавлен 17.08.2013

  • Язык Паскаль - процедурно-ориентированный язык высокого уровня, его основные достоинства. Разработка программ для решения задач. Выбор метода обработки информации. Форма представления исходных данных. Разработка алгоритма, его описание, листинг программы.

    курсовая работа [3,6 M], добавлен 17.02.2013

  • Создание программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С# средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Определение математического аппарата, применение его в задаче.

    курсовая работа [500,4 K], добавлен 13.01.2015

  • Выбор алгоритма решения задачи. Разработка программы, обеспечивающую эффективную обработку и хранение информации с использованием линейных списков. Написание программы на псевдокоде и на языке программирования высокого уровня. Результаты работы программы.

    курсовая работа [2,1 M], добавлен 21.04.2012

  • Описание языков программирования высокого уровня. Стандартные структуры данных, обзор принципов структурного программирования. Построение математической модели и выбор структуры данных для решения задачи. Тестирование и отладка программного кода.

    курсовая работа [1,3 M], добавлен 05.12.2020

  • Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.

    курсовая работа [381,7 K], добавлен 10.05.2018

  • Составление оптимального расписания, где критерием оптимальности служит минимальное значение функции штрафа. Описание алгоритма и разработка программы на языке программирования высокого уровня Java в среде BlueJ. Проверка решения и построение графика.

    курсовая работа [67,1 K], добавлен 04.12.2012

  • Разработка и реализация программы расчета заданных функций на языке программирования VBA. Математическая модель, параметры и характеристики задачи, критерии оценки эффективности созданного модуля. Разработка алгоритма и тестирование программного модуля.

    курсовая работа [488,7 K], добавлен 08.09.2010

  • Приобретение теоретических и практических навыков программирования на языке Паскаль. Математическая формулировка задачи и выбор метода обработки информации. Разработка алгоритма и его описание. Описание программы. Форма представления исходных данных.

    курсовая работа [224,3 K], добавлен 11.02.2016

  • Разработка структурной диаграммы программного модуля для целочисленного решения задачи линейного программирования с использованием симплекс-метода. Краткое описание всех уровней диаграммы с назначением всех ее блоков. Язык программирования Visual C#.

    курсовая работа [874,7 K], добавлен 27.02.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.