close

Вход

Забыли?

вход по аккаунту

?

kursovaya

код для вставкиСкачать
Министерство образования и науки Российской Федерации
ФГАОУ ВПО "Уральский федеральный университет имени первого Президента России Б.Н.Ельцина"
Кафедра "Информационные технологии и автоматизация проектирования"
Оценка за курсовую работу
Члены комиссии
К У Р С О В А Я Р А Б О Т А
по дисциплине "Информатика"
РЕШЕНИЕ ИНЖЕНЕРНО-ТЕХНИЧЕСКИХ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ
Вариант №3
Выполнил
Студент: Грицай М.Д
Группа: М-130702
Принял: Маянц М.Л.
Екатеринбург
2013
УрФУ имени первого Президента России Б.Н.Ельцина
Кафедра "Информационные технологии и автоматизации проектирования"
ЗАДАНИЕ на курсовую работу по информатике Вариант №3
Студент: Ворошилов А.В.; Группа: М-120702
Задача №1 об/мин, nКбградусыКТРежим работыКоэффициент эквивалентности, кН, FrкН, FrкН, FaкН, CкН, C0 еXY292,51,31001Легкий0,1253,853,71052,731,50,1910
Задача№2 ZmAwd118
,512525
Задача№3
Вид соединенияОбщие данныеБолтовое
Болт ГОСТ 7798-70
Гайка ГОСТ 5915-70
Шайба ГОСТ 6402-70
(исполнение 1)Резьба по ГОСТ 24705-81М 14Количество болтов6Толщина фланцев и крышки Ф1+Ф216Шпилечное
Шпилька ГОСТ
22032-76
Гайка ГОСТ 5915-70
Шайба ГОСТ 6402-70
Материал корпуса-стальРезьба по ГОСТ 24705-81
Шаг мелкийМ 12Тип шпилькиАКоличество шпилек8Винтовое
Количество винтов для всех вариантов постоянно - четыре.Резьба по ГОСТ 24705-81М8Винт по ГОСТ (исполнение1)17473-72Толщина фланца Ф14Изм.Лис.№ документаПодписьДатаРазрабВорошиловв
Расчёт основных характеристик подшипников, разъёмных соединений.ЛитерЛистЛистовРуководит.КР237Консульт.УРФУ
Кафедра ИТ и АП
М-120702ПринялМаянцЗав. каф.Куренов
Содержание.
Введение................................................................................................4 Задача№1................................................................................................5 1.1 Постановка задачи................................................................................5
1.2 Исходные данные.................................................................................6 1.3 Текст программы..................................................................................6
1.4 Результат............................................................................................11 Задача№2...............................................................................................13 2.1 Постановка задачи................................................................................13 2.2 Исходные данные................................................................................13 2.3 Текст программы.................................................................................14 2.4 Результат.............................................................................................22 Задача№3................................................................................................21 3.1 Постановка задачи.................................................................................23
3.2 Болтовое соединение.............................................................................23 3.3 Шпилечное соединение.........................................................................24 3.4 Винтовое соединение...........................................................................24
3.5 Исходные данные для соединений...........................................................25 3.6 Текст программы................................................................................25 3.7 Результат..........................................................................................40
Заключение...........................................................................................41
Библиографический список.........................................................................................................42 Введение
С использованием средств визуального программирования необходимо написать программы для решения трёх задач (расчёт подшипника на долговечность, расчёт зубчатого зацепления, расчёт резьбового соединения) в соответствии со своим номером варианта. Программы должны позволять вводить исходные данные, выводить необходимые расчетные параметры, а также формировать изображение соответствующих элементов. Задачи необходимые решить в данной курсовой работе:
1. Научиться проводить расчет долговечности подшипника, предварительно ознакомившись с его характеристиками;
2. Ознакомиться с различными видами зубчатых зацеплений, изучить из характеристики.
3. Научиться проводить расчет длины болта, винта, шпильки, штифта с учетом их параметров. При этом ознакомиться с ГОСТ, типами различных резьб, их параметрами и видами.
Задача №1. Расчёт подшипников на долговечность.
1.1. Постановка задачи:
С использованием средств визуального программирования написать программы для решения задачи расчёт подшипника на долговечность, в соответствии с вариантом. Программы должны позволять вводить исходные данные, выводить долговечность работы радиально роликового однорядного подшипника, а также формировать изображение соответствующих элементов.
1.2. Математическая модель:
Расчёт подшипника на долговечность производится исходя из его динамической грузоподъёмности.
Динамической грузоподъёмностью радиальных и радиально-упорных подшипников называется постоянная радиальная нагрузка, которую группа идентичных подшипников с неподвижным наружным кольцом сможет выдержать в течение расчетного срока службы, исчисляемого в часах.
Долговечность подшипника определяется как срок службы до появления признаков контактной усталости металла на любом из колец или тел качения.
Под расчётным сроком службы понимают срок службы партии подшипников, в которых не менее 90% одинаковых подшипников, при одной и той же нагрузке и частоте вращения должны обработать без появления на рабочих поверхностях раковин и отслаивания.
Зависимость между номинальной долговечностью (расчётным сроком службы), динамической грузоподъёмностью и действующей на подшипник нагрузкой определяется формулой:
где: L- номинальная долговечность, млн.оборотов;
C- динамическая грузоподъёмность;
P - эквивалентная динамическая нагрузка;
p - показатель степени в формуле долговечности (для шариковых подшипников p=3, для роликовых p= 10/3 или 3,33).
Эквивалентная динамическая нагрузка определяется по формуле:
где: Fr - постоянная по величине и направлению радиальная нагрузка, Н;
Fa- постоянная по величине и направлению осевая нагрузка, Н;
X - коэффициент радиальной нагрузки;
Y - коэффициент осевой нагрузки;
V - коэффициент вращения (V=1);
Кб - коэффициент безопасности;
КT - температурный коэффициент.
n- Частота вращения вала, об/мин,
1.3. Геометрические характеристики
Тип: Радиальный роликовый однорядный подшипник лёгкой серии № 2204, с короткими цилиндрическими роликами (ГОСТ 8328-75)
об/мин, nКбградусыКТРежим работыКоэффициент эквивалентности, кН, FrкН, FrкН, FaкН, CкН, C0 еXY292,51,31001Легкий0,1253,853,71052,731,50,1910
d - диаметр отверстия внутреннего кольца радиального и радиально-упорного подшипника и "тугого" кольца одинарного упорного подшипника;
D - внешний диаметр наружного кольца радиального и радиально-упорного подшипника и свободного кольца упорного подшипника;
B - ширина колец радиальных и радиально-упорных подшипников или ширина внутреннего кольца, если ширины колец не одинаковы;
1.4. Алгоритм
1. Создать форму
2. Создать текстовые надписи, поля ввода, кнопки и поле для изображения чертежа
3. В тексте программы описать переменные
4. Описать кнопку "Выход".
5. Описать кнопку "Рассчитать P"
5.1. Присвоить соответствующим переменным поля ввода.
5.2. Рассчитать по формуле 5.3. Вывод P в соответствующее ему поле ввода.
6. . Описать кнопку "Рассчитать L"
6.1. Присвоить соответствующим переменным поля ввода.
6.2. Рассчитать по формуле 6.3. Вывод L в соответствующее ему поле ввода.
7. Описать кнопку "Чертить"
7.1. Описать переменные
7.2. Присвоить соответствующим переменным поля ввода
7.3. Записать главные формулы для черчения
7.4. Начертить полигоны
7.5. Чертить линиями
7.6. Поставить размеры
7.7 Начертить оси
8. Конец.
1.5. Текст программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Button1: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Button2: TButton;
GroupBox2: TGroupBox;
Label9: TLabel;
Label10: TLabel;
Button3: TButton;
GroupBox3: TGroupBox;
Image1: TImage;
Label11: TLabel;
Label12: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Edit12: TEdit;
Label20: TLabel;
Label21: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var
Fr,Fa,X,Y,V,Kb,Kt,C,P,L:real;
begin
//Рассчёт:
Fr:=StrToFloat(Edit1.Text);
Fa:=StrToFloat(Edit2.Text);
X:=StrToFloat(Edit3.Text);
Y:=StrToFloat(Edit4.Text);
V:=StrToFloat(Edit5.Text);
Kb:=StrToFloat(Edit6.Text);
Kt:=StrToFloat(Edit7.Text);
C:=StrToFloat(Edit8.Text);
Label9.Caption:='';
Label10.Caption:='';
P:=(X*V*Fr+Y*Fa)*Kb*Kt;
L:=(C/P)*(C/P)*(C/P);
Label9.Caption:='P='+FloatToStr(P)+' кН';
Label10.Caption:='L='+FloatToStr(L)+' Млн.Об.';
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
D,dm,B,r,Dp,Lp,Lm,S1,S,d1,m:real;
begin
m:=10;
D:=StrToFloat(Edit9.Text)*m;
dm:=StrToFloat(Edit10.Text)*m;
B:=StrToFloat(Edit11.Text)*m;
r:=StrToFloat(Edit12.Text)*m;
Dp:=0.25*(D-dm);
Lp:=Dp;
Lm:=0.5*(B-Lp); // 2Lm=B-Lp
S1:=0.1*(D-dm);
S:=0.16*(D-dm);
d1:=0.5*(D+dm);
//Параметры рисунка:
with Image1.Picture.Bitmap do
begin
Canvas.Brush.Color:=clWhite;
Width:=0;
Height:=0;
Width:=Image1.Width;
Height:=Image1.Height;
end;
//Внешний контур:
with Image1.Picture.Bitmap.Canvas do
begin
Pen.Width:=2;
MoveTo(10,10+Round(S1));
LineTo(10,10+Round(D-S1));
MoveTo(10+Round(B),10+Round(S1));
LineTo(10+Round(B),10+Round(D-S1));
Brush.Style:= bsFDiagonal;
Brush.Color:=clBlack;
Polygon([point(10+Round(r),10),
point(10+Round(B)-Round(r),10),
point(10+Round(B),10+Round(r)),
point(10+Round(B),10+Round(S1)),
point(10+Round(B-Lm),10+Round(S)),
point(10+Round(Lm),10+Round(S)),
point(10,10+Round(S1)),
point(10,10+Round(r))]);
Polygon([point(10+Round(r),10+Round(D)),
point(10+Round(B)-Round(r),10+Round(D)),
point(10+Round(B),10+Round(D-r)),
point(10+Round(B),10+Round(D-S1)),
point(10+Round(B-Lm),10+Round(D-S1-r)),
point(10+Round(Lm),10+Round(D-S1-r)),
point(10,10+Round(D-S1)),
point(10,10+Round(D-r))]);
Brush.Style:= bsBDiagonal;
Polygon([point(10,10+Round((D-dm-2*S)/2)),
point(10+Round(B),10+Round((D-dm-2*S)/2)),
point(10+Round(B),10+Round((D-dm-2*r)/2)),
point(10+Round(B-r),10+Round((D-dm)/2)),
point(10+Round(r),10+Round((D-dm)/2)),
point(10,10+Round((D-dm-2*r)/2))]);
Polygon([point(10,10+Round(D-(D-dm-S*2)/2)),
point(10+Round(B),10+Round(D-(D-dm-S*2)/2)),
point(10+Round(B),10+Round(D-(D-dm-2*r)/2)),
point(10+Round(B-r),10+Round(D-(D-dm)/2)),
point(10+Round(r),10+Round(D-(D-dm)/2)),
point(10,10+Round(D-(D-dm-2*r)/2))]);
Brush.Style:=bsSolid; //квадрат
Brush.Color:=clWhite;
RoundRect(10+Round(Lm),10+Round(S1+r),10+Round(Lm+Lp),10+Round(S1+r+Dp),10,100);
MoveTo(15+Round(Lm),10+Round(S1+r));
LineTo(15+Round(Lm),9+Round(S1+r+Dp));
MoveTo(5+Round(B-Lm),10+Round(S1+r));
LineTo(5+Round(B-Lm),9+Round(S1+r+Dp));
RoundRect(10+Round(Lm),10+Round(D-S1-r-Dp),10+Round(Lm+Lp),10+Round(D-S1-r),10,100);
MoveTo(15+Round(Lm),10+Round(D-S1-r-Dp));
LineTo(15+Round(Lm),9+Round(D-S1-r));
MoveTo(5+Round(B-Lm),10+Round(D-S1-r-Dp));
LineTo(5+Round(B-Lm),9+Round(D-S1-r));
//центральные
MoveTo(10+Round(r),10+Round((D-dm)/2));
LineTo(10+Round(r),10+Round(D/2+dm/2));
MoveTo(10+Round(B-r),10+Round((D-dm)/2));
LineTo(10+Round(B-r),10+Round(D/2+dm/2));
Pen.Width:=1; //осевые
Pen.Style:=psDashDot;
MoveTo(5,Round(D/2)+10);
LineTo(Round(B)+15,Round(D/2)+10);
MoveTo(5+Round(Lm),Round((D-d1)/2)+10);
LineTo(15+Round(B-Lm),Round((D-d1)/2)+10);
MoveTo(5+Round(Lm),Round(D-(D-d1)/2)+10);
LineTo(15+Round(B-Lm),Round(D-(D-d1)/2)+10);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close();
end;
end.
1.6. Тест программы, результат:
Задача №2. Зубчатые зацепления.
2.1. Постановка задачи:
Рассчитать основные характеристики зубчатого зацепления с использованием средств визуального программирования и сформировать изображение зубчатого зацепления.
2.2. Математическая модель:
Изучить условные изображения зубчатых колес и элементов зубчатых зацеплений по ГОСТ 2.402-68. Ознакомиться с параметрами зубчатого зацепления и расчетами зубчатого венца. Ознакомиться с правилами выполнения рабочих чертежей зубчатых колес по ГОСТ 2.403-68. Ознакомиться с неподвижными разъемными соединениями вала и зубчатого колеса. Приобрести навыки в выполнении чертежа зубчатого колеса со шпоночным пазом у зубчатого зацепления.
Зубчатые зацепления предназначены для передачи вращательного движения от одного вала к другому и имеют широкое применение в редукторах и других механизмах. При параллельно расположенных валах используется цилиндрическая зубчатая передача, при пересекающихся - коническая, при скрещивающихся - червячная передача. Зубья на поверхности цилиндра или конуса нарезаются вдоль образующих (прямые), под углом к образующим (косые) и под углом с изломом (шевронные). Боковая поверхность зуба - рабочая; направляющая этой поверхности (профиль зуба) в большинстве случаев - эвольвента. Зубья, нарезанные на колесе, образуют зубчатый венец.
Длина начальной окружности, или путь, пройденный точкой K за полный оборот колеса,
Lw = ndw = ptz
передаточное число зубчатой передачи
;
расстояние между осями валов aw=(dw1+dw2)/2.
Из формулы (1) следует, что
,
где mt - окружный модуль зубьев. Таким образом,
dw=mtz.
В соответствии со стандартными рядами модулей стандартизован инструмент для нарезания зубьев, контур которого называется исходным. Окружность, по которой отсчитывается толщина зуба и величина впадины при нарезании зубчатого венца, называется делительной. В рассматриваемом зубчатом зацеплении за делительную окружность принимается начальная окружность d=dw.
Зубчатый венец рассчитывают в зависимости от окружного модуля:
высота головки зуба
ha=mt;
высота ножки зуба
hf=1,25mt;
диаметр окружности вершин
da=d+2ha=mtz+2mt;
диаметр окружности впадин
df=d-2he=mtz - 2,5mt.
Основные размеры кованых и штампованных зубчатых колес определяются следующими зависимостями.
Диаметр ступицы: стальной Dc = 1.55 d, чугунной Dc = 1.6 d, где d - диаметр посадочного отверстия зубчатого колеса.
Длина ступицы
Lc = 1.2 d  bw,
bw= ba· Aw,
где bw - ширина зубчатого венца колеса,
ba для косозубых передач 0,5 № вариантаZmAwd31182,512525 Где: z - Число зубьев колеса; m - Модуль; Aw - Межосевое расстояние, мм; d - Диаметр вала , мм.
2.3. Алгоритм
1. Создать форму
2. Создать текстовые надписи, поля ввода, кнопки и поле для изображения чертежа
3. В тексте программы описать переменные
4. Описать кнопку "Выход"
5. Описать кнопку "Рассчет"
5.1. Присвоить соответствующим переменным поля ввода
5.2. Записать формулы для расчета переменных
5.3. If Lc < 38 then Считать переменные по заданным формулам, Else выводить сообщение "Неравенство не выполняется, увеличьте толщину вала "d2"!".
6. Описать кнопку "Чертеж"
6.1. Описать переменные
6.2. Присвоить соответствующим переменным поля ввода
6.3. Чертеж полигонов
6.4. Чертеж линий и эллипсов
6.5. Расстановка размеров
6.6. Чертеж осей
7. Конец.
2.4. Текст программы :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
GroupBox3: TGroupBox;
Image1: TImage;
GroupBox2: TGroupBox;
Label9: TLabel;
Label10: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label11: TLabel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
GroupBox4: TGroupBox;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Strela(xs,ys:integer;n:byte);
private
{ Private declarations }
public
{ Public declarations }
end;
var
z,ms:integer;
m,a,d,c1,c3,r,dc,lc,df,da,h,c,dn,b,bw,t1,t2,Wba,d2:real;
p:array[1..8] of TPoint;
t:array[1..10] of TPoint;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Strela(xs,ys:integer; n:byte);
var
s:array[1..3] of TPoint;
begin
s[1].X:=xs;
s[1].Y:=ys;
case n of
1:
begin
s[2].X:=xs+4;
s[2].Y:=ys+12;
s[3].X:=xs-4;
s[3].Y:=ys+12;
end;
2:
begin
s[2].x:=xs-12;
s[2].Y:=ys-4;
s[3].X:=xs-12;
s[3].Y:=ys+4;
end;
3:
begin
s[2].X:=xs+4;
s[2].Y:=ys-12;
s[3].X:=xs-4;
s[3].Y:=ys-12;
end;
4:
begin
s[2].X:=xs+12;
s[2].Y:=ys-4;
s[3].X:=xs+12;
s[3].Y:=ys+4;
end;
5:
begin
s[2].X:=xs-10;
s[2].Y:=ys+4;
s[3].X:=xs-4;
s[3].Y:=ys+10;
end;
6:
begin
s[2].X:=xs+4;
s[2].Y:=ys-10;
s[3].X:=xs+10;
s[3].Y:=ys-4;
end;
end;
image1.picture.bitmap.canvas.polygon(s);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
b:=14;
z:=Strtoint(edit1.Text);
m:=strtofloat(edit2.Text);
a:=strtofloat(edit3.Text);
Wba:=StrToFloat(Edit4.Text);
d:=strtofloat(edit5.Text);
dn:=m*z;
da:=m*(z+2);
df:=m*(z-2.5);
bw:=Wba*a;
dc:=d*1.55;
lc:=1.2*d;
c1:=1.6;
c3:=1.6;
if lc < 38 then
begin
ShowMessage('Неравенство не выполняется, увеличьте толщину вала "d2"!');
lc:=1.2*d2;
end;
else begin
label6.Caption:='dn='+floattostr(dn)+' mm';
label7.Caption:='da='+floattostr(da)+' mm';
label8.Caption:='df='+floattostr(df)+' mm';
label9.Caption:='Dc='+floattostr(Dc)+' mm';
label10.Caption:='bw='+floattostr(bw)+' mm';
label11.Caption:='Lc='+floattostr(Lc)+' mm';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
h:=8;
m:=m; {moдуль}
a:=a; {}
d:=d; {d вала}
c1:=c1; {фаcка на верху}
c3:=c3; {фаcка на ступице}
r:=r; {}
dc:=dc; {d ступицы вала}
lc:=lc; {ширина шестерни}
df:=df; {d шестерни без зубьев}
da:=da; {d шестерни с зубьями max }
dn:=dn; {d шестерни вала}
b:=10; {ширина шпонки}
t1:=5; {глубина паза}
t2:=3.3; {глубина паза}
bw:=bw; {ширина без ступицы шестерни}
image1.Picture.Bitmap.Width:=0;
image1.Picture.Bitmap.Height:=0;
image1.Picture.Bitmap.Width:=image1.Width;
image1.Picture.Bitmap.Height:=image1.Height;
Image1.Picture.Bitmap.Canvas.pen.Style:=psSolid;
t[1].X:=Round(100+lc/2);
t[1].Y:=Round(200+d/2+c3);
t[2].X:=round(100+lc/2);
t[2].Y:=round(200+dc/2);
t[3].X:=round(100+bw/2);
t[3].Y:=round(200+dc/2);
t[4].X:=round(100+bw/2);
t[4].Y:=round(200+df/2);
t[5].X:=round(100-bw/2);
t[5].Y:=round(200+df/2);
t[6].X:=round(100-bw/2);
t[6].Y:=round(200+dc/2);
t[7].X:=round(100-lc/2);
t[7].Y:=round(200+dc/2);
t[8].X:=round(100-lc/2);
t[8].Y:=round(200+d/2+c3);
t[9].X:=round(100-lc/2+c3);
t[9].Y:=round(200+d/2);
t[10].X:=round(100+lc/2-c3);
t[10].Y:=round(200+d/2);
image1.Picture.Bitmap.Canvas.Brush.Style:=bsfdiagonal;
image1.Picture.Bitmap.Canvas.Brush.Color:=clblack;
image1.Picture.Bitmap.Canvas.Polygon(t);
image1.Picture.Bitmap.Canvas.Polygon(t);
image1.Picture.Bitmap.Canvas.Brush.Style:=bsSolid;
image1.Picture.Bitmap.Canvas.Brush.color:=clwhite;
p[1].X:=Round(100+lc/2);
p[1].Y:=Round(200-d/2-h/2);
p[2].X:=round(100+lc/2);
p[2].Y:=round(200-dc/2);
p[3].X:=round(100+bw/2);
p[3].Y:=round(200-dc/2);
p[4].X:=round(100+bw/2);
p[4].Y:=round(200-df/2);
p[5].X:=round(100-bw/2);
p[5].Y:=round(200-df/2);
p[6].X:=round(100-bw/2);
p[6].Y:=round(200-dc/2);
p[7].X:=round(100-lc/2);
p[7].Y:=round(200-dc/2);
p[8].X:=round(100-lc/2);
p[8].Y:=round(200-d/2-h/2);
image1.Picture.Bitmap.Canvas.Brush.Style:=bsfdiagonal;
image1.Picture.Bitmap.Canvas.Brush.Color:=clblack;
image1.Picture.Bitmap.Canvas.Polygon(p);
image1.Picture.Bitmap.Canvas.Polygon(p);
image1.Picture.Bitmap.Canvas.Brush.Style:=bsSolid;
image1.Picture.Bitmap.Canvas.Brush.color:=clwhite;
With Image1.picture.Bitmap.Canvas Do
Begin
MoveTo(Round(100-bw/2),round(200-df/2)); // верх фаски
LineTo(Round(100-(bw/2)),round(200-da/2+c1));
MoveTo(Round(100-(bw/2)),round(200-da/2+c1));
LineTo(Round(100-(bw/2-c1)),round(200-da/2));
MoveTo(Round(100-(bw/2-c1)),round(200-da/2));
LineTo(Round(100+(bw/2-c1)),round(200-da/2));
MoveTo(Round(100+(bw/2-c1)),round(200-da/2));
LineTo(Round(100+(bw/2)),round(200-da/2+c1));
MoveTo(Round(100+(bw/2)),round(200-da/2+c1));
LineTo(Round(100+bw/2),round(200-df/2));
MoveTo(Round(100-lc/2+c3),round(200+d/2)); //внутренности cправа
LineTo(Round(100-lc/2+c3),round(200-d/2+h/2));
MoveTo(Round(100-lc/2),round(200+d/2+h));
LineTo(Round(100-lc/2),round(200-d/2-h/2));
MoveTo(Round(100+lc/2-c3),round(200+d/2));
LineTo(Round(100+lc/2-c3),round(200-d/2+h/2));
MoveTo(Round(100+lc/2),round(200+d/2+c3));
LineTo(Round(100+lc/2),round(200-d/2-h));
MoveTo(Round(100+lc/2-c3),round(200-d/2+h/2));
LineTo(Round(100-lc/2+c3),round(200-d/2+h/2));
MoveTo(Round(100+lc/2),round(200-d/2+h/2-c3));
LineTo(Round(100+lc/2-c3),round(200-d/2+h/2));
MoveTo(Round(100-lc/2),round(200-d/2+h/2-c3));
LineTo(Round(100-lc/2+c3),round(200-d/2+h/2));
MoveTo(Round(100-bw/2),round(200+df/2)); //низ фаски
LineTo(Round(100-(bw/2)),round(200+da/2-c1));
MoveTo(Round(100-(bw/2)),round(200+da/2-c1));
LineTo(Round(100-(bw/2-c1)),round(200+da/2));
MoveTo(Round(100-(bw/2-c1)),round(200+da/2));
LineTo(Round(100+(bw/2-c1)),round(200+da/2));
MoveTo(Round(100+(bw/2-c1)),round(200+da/2));
LineTo(Round(100+(bw/2)),round(200+da/2-c1));
MoveTo(Round(100+(bw/2)),round(200+da/2-c1));
LineTo(Round(100+bw/2),round(200+df/2));
ellipse(Round(350-da/2),Round(200-da/2),round(350+da/2),round(200+da/2));
ellipse(Round(350-df/2),Round(200-df/2),round(350+df/2),round(200+df/2));
ellipse(Round(350-dc/2),Round(200-dc/2),round(350+dc/2),round(200+dc/2));
ellipse(Round(350-d/2-c3),Round(200-d/2-c3),round(350+d/2+c3),round(200+d/2+c3));
ellipse(Round(350-d/2),Round(200-d/2),round(350+d/2),round(200+d/2));
With Image1.picture.Bitmap.Canvas Do
Begin
brush.Style:=bsSolid;
brush.Color:=clwhite;
Image1.Picture.Bitmap.Canvas.Brush.Style:=bsClear;
MoveTo(Round(350-b/2),round(200-sqrt(d/2*d/2-b/2*b/2))); //внутри окружности
LineTo(Round(350-b/2),round(200-d/2-h/2));
MoveTo(Round(350-b/2),round(200-d/2-h/2));
LineTo(Round(350+b/2),round(200-d/2-h/2));
MoveTo(Round(350+b/2),round(200-d/2-h/2));
LineTo(Round(350+b/2),round(200-sqrt(d/2*d/2-b/2*b/2)));
Image1.Picture.Bitmap.Canvas.Pen.Color:=clwhite;
MoveTo(Round(350-b/2),round(200-sqrt(d/2*d/2-b/2*b/2)));
LineTo(Round(350+b/2),round(200-sqrt(d/2*d/2-b/2*b/2)));
brush.Style:=bsSolid;
brush.Color:=clWhite;
Rectangle (Round(350-b/2+1),Round(200-d/2-h/2+1),Round(350+b/2-1),Round(200));
end;
With Image1.picture.Bitmap.Canvas Do
Begin
Image1.Picture.Bitmap.Canvas.Pen.Color:=clblack;
brush.Style:=bsSolid;
brush.Color:=clBlack;
{
MoveTo(Round(200-bw/2),round(250+dc/2)); //выноски
LineTo(Round(200-3*bw/2),round(250+dc/2));
MoveTo(Round(200-bw/2),round(250-dc/2));
LineTo(Round(200-3*bw/2),round(250-dc/2));
MoveTo(Round(200-1.3*bw),round(250-dc/2));
LineTo(Round(200-1.3*bw),round(250+dc/2));
strela(round(200-1.3*bw),round(250-dc/2),1);
strela(round(200-1.3*bw),round(250+dc/2),3);
MoveTo(Round(200-bw/2),round(250+df/2)); //выноски
LineTo(Round(200-bw/2),round(250+df/2+da/7));
MoveTo(Round(200+bw/2),round(250+df/2));
LineTo(Round(200+bw/2),round(250+df/2+da/7));
MoveTo(Round(200+lc/2),round(250+d/8));
LineTo(Round(200-lc/2),round(250+d/8));
strela(round(200-lc/2),round(250+d/8),4);
strela(round(200+lc/2),round(250+d/8),2);
MoveTo(Round(200-bw/2),round(250-df/2));
LineTo(Round(200-bw/2),round(250-df/2-da/7));
MoveTo(Round(200-bw/2+c1),round(250-df/2));
LineTo(Round(200-bw/2+c1),round(250-df/2-da/7));
MoveTo(Round(200+bw/2),round(250-df/2-da/10));
LineTo(Round(200-bw),round(250-df/2-da/10));
strela(round(200-bw/2+c1),round(250-df/2-da/10),4);
strela(round(200-bw/2),round(250-df/2-da/10),2);
MoveTo(Round(200+bw/2),round(250+da/2+da/10));
LineTo(Round(200-bw/2),round(250+da/2+da/10));
strela(round(200+bw/2),round(250+da/2+da/10),2);
strela(round(200-bw/2),round(250+da/2+da/10),4);
MoveTo(Round(200+bw/3),round(250-d/4));
LineTo(Round(200+bw*1.6),round(250-d/4));
strela(round(200+bw/2-c3),round(250-d/4),2);
strela(round(200+bw/2),round(250-d/4),4);
MoveTo(Round(450-d),round(250+d));
LineTo(Round(450+d*0.707/2),round(250-d*0.707/2));
MoveTo(Round(450-d),round(250+d));
LineTo(Round(450-2*d),round(250+d));
strela(Round(450+d*0.707/2),round(250-d*0.707/2),5);
strela(Round(450-d*0.707/2),round(250+d*0.707/2),6);
}
brush.Style:=bssolid;
brush.color:=clwhite;
end;
end;
With Image1.picture.Bitmap.Canvas Do
Begin
pen.Style:=psDashDot; //осевые
moveto(Round(100+bw),Round(200-dn/2));
lineto(Round(100-bw),Round(200-dn/2));
moveto(Round(100+bw),Round(200));
lineto(Round(100-bw),Round(200));
moveto(Round(100+bw),Round(200+dn/2));
lineto(Round(100-bw),Round(200+dn/2));
moveto(Round(350),Round(200-1.2*da/2));
lineto(Round(350),Round(200+1.2*da/2));
moveto(Round(350+1.2*da/2),Round(200));
lineto(Round(350-1.2*da/2),Round(200));
brush.Style:=bssolid;
brush.color:=clwhite;
{
textout(195,Round (250+da/1.8-5),'bw');
textout(Round(200+lc/1.2),Round (223),'C3x45');
textout(195,Round (70),'C1x45');
textout(390,Round (270),'d');
textout(115,Round (245),'Dc');
textout(195,Round (240),'Lc'); }
Label12.Caption:=' ';
Label12.Caption:='Модуль [m] = '+FloatToStr(m);
Label13.Caption:=' ';
Label13.Caption:='Количество зубьев [z] = '+FloatToStr(z);
Label14.Caption:=' ';
Label14.Caption:='Норм. исх. контур - ГОСТ 13755-88';
Label15.Caption:=' ';
Label15.Caption:='Диам. делит. окр [d] = '+FloatToStr(dn);
end;
end;
end.
2.5. Тест программы, результат:
Задача №3. Резьбовые соединения.
3.1. Постановка задачи:
Рассчитать длины резьбовых соединений с использованием средств визуального программирования и сформировать изображение болтового, шпилечного, винтового соединений.
3.2 Математическая модель:
Болтовое соединение:
Длину болта рассчитываем по формуле:
l = Ф1+Ф2+S+m+a+c,
где: Ф1 и Ф2 - толщина соединенных фланцев S - толщина шайбы
m - высота гайки
a+c»0,3d
а - запас резьбы с - величина фаски
d - диаметр болта
l - длина болта, после расчёта подбирается по ГОСТ 7798-70 ближайшее большее стандартное значение lст. в зависимости от диаметра болта d. l = 16+2.1+11.2+0,314 = 33.5мм.
Принимаем па ГОСТ 7798-70 длину болта 35мм.
Болт М141,535.58 ГОСТ 7798-70.
Гайка М141,5.5 ГОСТ 5915-70.
Шайба 14 ГОСТ 6402-70.
(Рис.1) - Упрощенное соединение деталей болтом:
Шпилечное соединение:
Длину шпильки рассчитываем по формуле:
l = Ф1+S+m+a+c
l - длина шпильки, после расчёта подбирается по ГОСТ 22032-76 ближайшее большее стандартное значение lст. в зависимости от диаметра шпильки d. l = 14+1.8+9.6+0,312 = 29 мм.
Принимаем по ГОСТ 22032-76 длину шпильки 30мм.
Шпилька М121.25.58 ГОСТ 22032-76
Гайка М121.25.5 ГОСТ 5915-70.
(Рис.2) - Упрощенное соединение деталей шпилькой:
Винтовое соединение:
Длину винта рассчитываем по формуле:
l = Ф+1,5d,
где: Ф - толщина фланца,
d - диаметр резьбы,
l - длина винта, после расчёта подбирается по ГОСТ 1491-80 ближайшее большее стандартное значение lст..
l = 12+1,58=24 мм.
Принимаем по ГОСТ 1491-80 длину винта 25мм.
(Рис.3) - Упрощенное соединение деталей винтом:
3.3. Исходные данные для расчета резьбовых соединений
Вид соединенияОбщие данныеВариант №3Болтовое
Болт ГОСТ 7798-70
Гайка ГОСТ 5915-70
Шайба ГОСТ 6402-70
(исполнение 1)Резьба по ГОСТ 24705-81М 14Количество болтов6Толщина фланцев и крышки Ф1+Ф216Шпилечное
Шпилька ГОСТ
22032-76
Гайка ГОСТ 5915-70
Шайба ГОСТ 6402-70
Материал корпуса-стальРезьба по ГОСТ 24705-81
Шаг мелкийМ 12Тип шпилькиАКоличество шпилек8Винтовое
Количество винтов для всех вариантов постоянно - четыре.Резьба по ГОСТ 24705-81М8Винт по ГОСТ (исполнение1)17473-72Толщина фланца Ф14
3.4. Алгоритм:
1. Создать форму чертежа
3. Описать кнопку "Выход"
4. Описать кнопку "Расчет"
Описать переменные
Case Radiogroup. ItemIndex of 0:begin
Присвоить соответствующим переменным поля ввода
Рассчитать L по формуле L=F1+F2+s+m+ac;
Вывод L в поле ввода
Вывод сообщения 'Принимаем по ГОСТ 7798-70 длину болта 35мм'
Case Radiogroup. ItemIndex of 1:begin
Присвоить соответствующим переменным поля ввода
Рассчитать L по формуле L=F1+s+m+ac;
Вывод L в поле ввода
Вывод сообщения 'Принимаем по ГОСТ 22032-76 длину шпильки 38мм'
Case Radiogroup. ItemIndex of 2:begin
Присвоить соответствующим переменным поля ввода
Рассчитать L по формуле L=F1+1.5*d;
Вывод L в поле ввода
Вывод сообщения 'Принимаем по ГОСТ 1491-72 длину винта 25мм'
5. Описать кнопку "Чертеж"
Описать переменные
Case Radiogroup. ItemIndex of 0:begin
Описать переменные
Запись главных формул для чертежа
Чертеж полигонов
Чертеж линий
Чертеж осей
Расстановка размеров
Вывод в поле ввода надписей 'Болт М141,535.58 ГОСТ 7798-70';
'Гайка М141,5.5 ГОСТ 5915-70'; 'Шайба 14 ГОСТ 6402-70'.
Case Radiogroup. ItemIndex of 1:begin
Описать переменные
Запись главных формул для чертежа
Чертеж полигонов
Чертеж линий
Чертеж осей
Расстановка размеров
Вывод в поле ввода надписей 'Шпилька М12*40 ГОСТ 22032-76', 'Гайка М12 ГОСТ 5915-70'.
Case Radiogroup. ItemIndex of 2:begin
Описать переменные
Запись главных формул для чертежа
Чертеж полигонов
Чертеж линий
Чертеж осей
Расстановка размеров
Вывод в поле ввода надписей 'Винт М8*25.58 ГОСТ 1491-72'. 6. Конец. 3.5 . Текст программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button3: TButton;
tip: TRadioGroup;
Label26: TLabel;
Button2: TButton;
Edit2: TEdit;
Label1: TLabel;
Label37: TLabel;
Label36: TLabel;
Panel1: TPanel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label15: TLabel;
Label17: TLabel;
Label22: TLabel;
Label23: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Edit9: TEdit;
Edit12: TEdit;
Label3: TLabel;
Label14: TLabel;
Label28: TLabel;
Label29: TLabel;
Label34: TLabel;
Label35: TLabel;
Edit8: TEdit;
Edit15: TEdit;
Edit18: TEdit;
Panel2: TPanel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label19: TLabel;
Label21: TLabel;
Label24: TLabel;
Label25: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Edit11: TEdit;
Edit13: TEdit;
Label16: TLabel;
Label18: TLabel;
Label30: TLabel;
Label31: TLabel;
Edit16: TEdit;
Edit10: TEdit;
Panel3: TPanel;
Image1: TImage;
F1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit7: TEdit;
Label20: TLabel;
Label27: TLabel;
Label32: TLabel;
Label33: TLabel;
Edit14: TEdit;
Edit17: TEdit;
Label38: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure tipClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ac,m,S,f,h,Db,L,d,tc,Dsh,r,ms,g,da,i,fa:real;
p:array[1..8] of TPoint;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
case tip.ItemIndex of
0:
begin
fa:=StrToFloat(edit5.Text);
da:=StrToFloat(edit6.Text);
d:=da;
f:=fa;
Db:=2*d;
Dsh:=2.2*d;
m:=StrToFloat(edit9.Text);
s:=StrToFloat(edit12.Text);
ac:=0.3*d;
h:=0.7*d;
i:= (m+S+ac+f);
edit2.text:=FloatToStr(i);
edit8.text:=FloatToStr(Db);
edit15.text:=FloatToStr(Dsh);
edit18.text:=FloatToStr(h);
begin
if (i=14) or (i=16) or (i=18)or (i=20)or (i=22)or (r=25)or (i=28)or (i=30)or (i=32)or (i=35)or (i=38)or (i=40)or (i=45)
or (i=50) or (i=55)or (i=60)or (i=65)or (i=75)or (r=70)or (i=80)or (i=85)or (i=95)or (i=90)or (i=105)
or (i=100) or (i=110)or (i=115)or (i=120)or (i=125)or (i=130)or (i=135)or (i=140)or (i=145)or (i=150)then
begin
r:=i ;
Label36.Caption:=('Длина болта соответствует ГОСТу' );
end
else begin
Label36.Caption:=('Увеличте длину болта по ГОСТу - 35 мм.');
end;
end;
end;
1:
begin
d:=da;
f:=fa*2;
fa:=StrToFloat(edit3.Text);
da:=StrToFloat(edit4.Text);
Db:=2*d;
Dsh:=2.2*d;
m:=StrToFloat(edit11.Text);
s:=StrToFloat(edit13.Text);
ac:=0.3*d;
h:=0.7*d;
edit10.text:=FloatToStr(Db);
edit16.text:=FloatToStr(Dsh);
i:= (m+S+ac+fa+da);
edit2.text:=FloatToStr(i);
begin
if (i=16) or (i=18)or (i=20)or (i=22)or (r=25)or (i=28)or (i=30)or (i=32)or (i=35)or (i=38)or (i=40)or (i=45)
or (i=50) or (i=55)or (i=60)or (i=65)or (i=75)or (r=70)or (i=80)or (i=85)or (i=95)or (i=90)or (i=105)
or (i=100) or (i=110)or (i=115)or (i=120)or (i=130)or (i=170)or (i=140)or (i=160)or (i=150)then
begin
r:=i ;
Label36.Caption:=('Длина шпильки соответствует ГОСТу' );
end
else begin
Label36.Caption:=('Увеличте длину шпильки по ГОСТу - 55 мм.');
end;
end;
end;
2:
begin
// d:=da;
fa:=StrToFloat(edit1.Text);
da:=StrToFloat(edit7.Text);
f:=fa;
Db:=2*d;
Dsh:=2.2*d;
edit17.text:=FloatToStr(1.5*d);
edit14.text:=FloatToStr(0.6*d);
i:= (f+da*1.5);
edit2.text:=FloatToStr(i);
begin
if (i=16) or (i=18)or (i=20)or (i=22)or (i=25)or (i=28)or (i=30)or (i=32)or (i=35)or (i=38)or (i=40)or (i=45)
or (i=48) or (i=55)or (i=60)or (i=65)or (i=75)or (r=50)or (i=12)or (i=14) then
begin
r:=i ;
Label36.Caption:=('Длина винта соответствует ГОСТу' );
end
else begin
Label36.Caption:=('Увеличте длину винта по ГОСТу - 25 мм.');
end;
end;
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
image1.Picture.Bitmap.Width:=0;
image1.Picture.Bitmap.Height:=0;
image1.Picture.Bitmap.Width:=image1.Width;
image1.Picture.Bitmap.Height:=image1.Height;
with image1.Picture.Bitmap.Canvas do
begin
case tip.ItemIndex of
0:
begin
fa:=StrToFloat(edit5.Text);
da:=StrToFloat(edit6.Text);
r:=StrToFloat(edit2.text);
d:=da;
f:=fa;
Db:=2*d;
Dsh:=2.2*d;
m:=0.8*d;
S:=0.15*d;
h:=0.7*d;
tc:=0.3*d;
ac:=(r*ms-s-f-m);
begin
if r<(0.3*d+0.15*d+0.8*d+f) then
begin
ShowMessage('Невозможно начертить увеличте длину болта' );
end
else begin
ms:=3;
r:=StrToFloat(edit2.text);
d:=da*ms;
f:=fa*ms;
Db:=2*d*ms;
Dsh:=2.2*d;
m:=0.8*d;
S:=0.15*d;
h:=0.7*d;
tc:=0.3*d;
ac:=(r*ms-s-f-m);
Image1.Picture.Bitmap.Canvas.Pen.Width:=2 ;
Brush.Style:=bsbdiagonal; //фланец
brush.Color:=clBlack;
rectangle(round(40+ac+m+s),round(200-3*d),round(40+ac+s+m+f/2+1),round(200+3*d));
Brush.Style:=bsfdiagonal;
rectangle(round(40+ac+s+m+f/2),round(200-3*d),round(40+ac+s+m+f+1),round(200+3*d));
brush.Style:=bssolid;
brush.Color:=clwhite;
brush.Style:=bsClear; //шайба
rectangle(round(40+ac+m),round(200-1.1*d),Round(40+ac+s+m+1),round(200+1.1*d));
rectangle(round(40+ac),round(200-d),round(40+ac+m+1),round(200+d));
rectangle(Round(40),round(200-d/2),round(40+ac+m+1),round(200+d/2));
brush.Style:=bssolid;
brush.Color:=clwhite;
rectangle(round(40+ac+m+s+f),round(200-d),round(40+h+ac+m+s+1+f),round(200+d));
rectangle(round(40+ac+m+s+f),round(200-d/2),round(40+h+ac+m+s+1+f),round(200+d/2));
brush.Style:=bssolid;
brush.Color:=clwhite;
rectangle(round(40+ac+m+s),round(200-d/2),round(40+ac+m+s+1+f),round(200+d/2));
Image1.Picture.Bitmap.Canvas.Pen.Width:=1;
moveto(40,round(200-0.85*d/2));
lineto(round(40+ac),round(200-0.85*d/2));
moveto(round(40+ac+m+s),round(200-0.85*d/2));
lineto(round(40+ac+m+s+f),round(200-0.85*d/2));
moveto(40,round(200+0.85*d/2-2));
lineto(round(40+ac),round(200+0.85*d/2-2));
moveto(round(40+ac+m+s),round(200+0.85*d/2-2));
lineto(round(40+ac+m+s+f),round(200+0.85*d/2-2));
//выноски
moveto(40,round(200));
lineto(round(40),round(200-3.5*d-3));
moveto(round(40+ac),round(200));
lineto(round(40+ac),round(200-3.5*d-3));
moveto(round(40+ac+m),round(200));
lineto(round(40+ac+m),round(200-3.5*d-3));
moveto(round(40+ac+m+s),round(200));
lineto(round(40+ac+m+s),round(200-3.5*d-3));
moveto(round(40+ac+m+s+f),round(200));
lineto(round(40+ac+m+s+f),round(200-3.5*d-3));
moveto(round(40+ac+m+s+f+h),round(200));
lineto(round(40+ac+m+s+f+h),round(200-3.5*d-3));
moveto(round(40+ac+m+s+f/2),round(200-d));
lineto(round(40+ac+m+s+f/2),round(200-3.5*d-3));
moveto(round(40),round(200-3.5*d+5));
lineto(round(40+ac+m+s+f+h+1),round(200-3.5*d+5));
moveto(round(23),round(200+d/2-1));
lineto(round(23),round(200-d/2));
moveto(round(20),round(200+d/2-1));
lineto(round(40+ac),round(200+0.5*d-1));
moveto(round(20),round(200-d/2));
lineto(round(40+ac),round(200-0.5*d));
Image1.Picture.Bitmap.Canvas.Pen.Width:=2;
rectangle(round(50+4*d+ac),round(200-3*d),round(50+4*d+6*d+ac),round(200+3*d));
moveto(round(50+4*d+d*3+ac),round(200-d));
lineto(round(50+4*d+d*3+ac-(sqrt (3) )/2*d),round(200-1/2*d));
moveto(round(50+4*d+d*3+ac-(sqrt (3) )/2*d),round(200-1/2*d));
lineto(round(50+4*d+d*3+ac-(sqrt (3) )/2*d),round(200+1/2*d));
moveto(round(50+4*d+d*3+ac-(sqrt (3) )/2*d),round(200+1/2*d));
lineto(round(50+4*d+d*3+ac),round(200+d));
moveto(round(50+4*d+d*3+ac),round(200+d));
lineto(round(50+4*d+d*3+ac+(sqrt (3) )/2*d),round(200+0.5*d));
moveto(round(50+4*d+d*3+ac+(sqrt (3) )/2*d),round(200+0.5*d));
lineto(round(50+4*d+d*3+ac+(sqrt (3) )/2*d),round(200-0.5*d));
moveto(round(50+4*d+d*3+ac+(sqrt (3) )/2*d),round(200-0.5*d));
lineto(round(50+4*d+d*3+ac),round(200-d));
ellipse(round(50+4*d+ac+d*3-d/2),round(200-d/2),round(50+ac+4*d+d*3+d/2),round(200+d/2));
Image1.Picture.Bitmap.Canvas.Pen.Width:=1;
With Image1.picture.Bitmap.Canvas Do
Begin
pen.Style:=psDashDot; //осевые
moveto(Round(50+ac+4*d-d),Round(200));
lineto(Round(50+ac+4*d+d*7),Round(200));
moveto(Round(50+ac+4*d+d*3),Round(200-3.5*d));
lineto(Round(50+ac+4*d+d*3),Round(200+3.5*d));
moveto(Round(35),Round(200));
lineto(Round(50+ac+4*d+5),Round(200));
brush.Style:=bssolid;
brush.color:=clwhite;
end;
textout(Round (40+0.1*ac),Round (200-3.85*d),'ac');
textout(Round(40+0.39*m+ac),Round (200-3.85*d),'m');
textout(Round(40+0.1*s+ac+m),Round (200-3.85*d),'s');
textout(Round(40+0.1*f+ac+m+s),Round (200-3.85*d),'Ф1');
textout(Round(40+0.6*f+ac+m+s),Round (200-3.85*d),'Ф2');
textout(Round(40+0.3*h+ac+m+s+f),Round (200-3.85*d),'h');
textout(15,195,'d');
textout(Round (200),Round (350),'Болт М12 1,5 35.58 ГОСТ 7798-70');
textout(Round(200),Round (370),'Гайка М12 1,5.5 ГОСТ 5915-70');
textout(Round(200),Round (390),'Шайба 12 ГОСТ 6402-70');
pen.Style:=pssolid;
brush.Color:=clwhite;
end;
end;
end;
1:
begin
ms:=3;
r:=StrToFloat(edit2.text);
fa:=StrToFloat(edit3.Text);
da:=StrToFloat(edit4.Text);
m:=StrToFloat(edit11.Text);
s:=StrToFloat(edit13.Text);
d:=da;
f:=fa;
Db:=2*d;
Dsh:=2.2*d;
h:=0.7*d;
ac:=(r-fa-da-m-s)*ms;
begin
if r<(0.3*d+0.15*d+0.8*d+f/2+d) then
begin
ShowMessage('невозможно начертить увеличте длину шпильки' );
end
else begin
r:=StrToFloat(edit2.text);
d:=da*ms;
f:=fa*ms;
Db:=2*d*ms;
Dsh:=2.2*d;
m:=0.8*d;
S:=0.15*d;
h:=0.7*d;
ac:=(r*ms-s-fa*ms-m-d);
r:=r*ms;
Image1.Picture.Bitmap.Canvas.Pen.Width:=2 ;
Brush.Style:=bsbdiagonal; //фланец
brush.Color:=clBlack;
rectangle(round(40+ac+m+s),round(200-3*d),round(40+ac+s+m+f+1),round(200+3*d));
Brush.Style:=bsfdiagonal;
rectangle(round(40+ac+s+m+f),round(200-3*d),round(40+ac+s+m+2.5*d+1),round(200+3*d));
brush.Style:=bssolid;
brush.Color:=clwhite;
brush.Style:=bsClear; //шайба
rectangle(round(40+ac+m),round(200-1.1*d),Round(40+ac+s+m+1),round(200+1.1*d));
rectangle(round(40+ac),round(200-d),round(40+ac+m+1),round(200+d));
rectangle(Round(40),round(200-d/2),round(40+ac+m+1),round(200+d/2));
brush.Style:=bssolid;
brush.Color:=clwhite;
rectangle(round(40+ac+m+s),round(200-d/2),round(40+ac+m+s+1+f+d),round(200+d/2));
Image1.Picture.Bitmap.Canvas.Pen.Width:=1;
moveto(40,round(200-0.85*d/2));
lineto(round(40+ac),round(200-0.85*d/2));
moveto(round(40+ac+m+s),round(200-0.85*d/2));
lineto(round(40+ac+m+s+f+d),round(200-0.85*d/2));
moveto(40,round(200+0.85*d/2-2));
lineto(round(40+ac),round(200+0.85*d/2-2));
moveto(round(40+ac+m+s),round(200+0.85*d/2-2));
lineto(round(40+ac+m+s+f+d),round(200+0.85*d/2-2));
Image1.Picture.Bitmap.Canvas.Pen.Width:=2;
moveto(round(40+ac+m+s+f),round(200-d*2));
lineto(round(40+ac+m+s+f),round(200+2*d));
Image1.Picture.Bitmap.Canvas.Pen.Width:=1; //выноски
moveto(40,round(200));
lineto(round(40),round(200-3.5*d-3));
moveto(round(40+ac),round(200));
lineto(round(40+ac),round(200-3.5*d-3));
moveto(round(40+ac+m),round(200));
lineto(round(40+ac+m),round(200-3.5*d-3));
moveto(round(40+ac+m+s),round(200));
lineto(round(40+ac+m+s),round(200-3.5*d-3));
moveto(round(40+ac+m+s+f+d),round(200));
lineto(round(40+ac+m+s+f+d),round(200-3.5*d-3));
moveto(round(40+ac+m+s+f),round(200-d));
lineto(round(40+ac+m+s+f),round(200-3.5*d-3));
moveto(round(40),round(200-3.5*d+5));
lineto(round(40+ac+m+s+f+d+1),round(200-3.5*d+5));
moveto(round(23),round(200+d/2-1));
lineto(round(23),round(200-d/2));
moveto(round(20),round(200+d/2-1));
lineto(round(40+ac),round(200+0.5*d-1));
moveto(round(20),round(200-d/2));
lineto(round(40+ac),round(200-0.5*d));
Image1.Picture.Bitmap.Canvas.Pen.Width:=2;
rectangle(round(50+r+100),round(200-3*d),round(50+r+100+6*d),round(200+3*d));
moveto(round(50+r+100+d*3),round(200-d));
lineto(round(50+r+100+d*3-(sqrt (3) )/2*d),round(200-1/2*d));
moveto(round(50+r+100+d*3-(sqrt (3) )/2*d),round(200-1/2*d));
lineto(round(50+r+100+d*3-(sqrt (3) )/2*d),round(200+1/2*d));
moveto(round(50+r+100+d*3-(sqrt (3) )/2*d),round(200+1/2*d));
lineto(round(50+r+100+d*3),round(200+d));
moveto(round(50+r+100+d*3),round(200+d));
lineto(round(50+r+100+d*3+(sqrt (3) )/2*d),round(200+0.5*d));
moveto(round(50+r+100+d*3+(sqrt (3) )/2*d),round(200+0.5*d));
lineto(round(50+r+100+d*3+(sqrt (3) )/2*d),round(200-0.5*d));
moveto(round(50+r+100+d*3+(sqrt (3) )/2*d),round(200-0.5*d));
lineto(round(50+r+100+d*3),round(200-d));
ellipse(round(50+r+100+d*3-d/2),round(200-d/2),round(50+r+100+d*3+d/2),round(200+d/2));
Image1.Picture.Bitmap.Canvas.Pen.Width:=1;
With Image1.picture.Bitmap.Canvas Do
Begin
pen.Style:=psDashDot; //осевые
moveto(Round(50+r+100-d),Round(200));
lineto(Round(50+r+100+d*7),Round(200));
moveto(Round(35),Round(200));
lineto(Round(50+r+100+5),Round(200));
moveto(Round(50+r+100+d*3),Round(200-3.5*d));
lineto(Round(50+r+100+d*3),Round(200+3.5*d));
brush.Style:=bssolid;
brush.color:=clwhite;
end;
textout(Round (40+0.1*ac),Round (200-3.85*d),'ac');
textout(Round(40+0.39*m+ac),Round (200-3.85*d),'m');
textout(Round(40+0.1*s+ac+m),Round (200-3.85*d),'s');
textout(Round(40+0.1*f+ac+m+s),Round (200-3.85*d),'Ф1');
textout(Round(40+1.3*f+ac+m+s),Round (200-3.85*d),'Lвин');
textout(15,195,'d');
textout(Round (200),Round (350),'Шпилька М14 40.55 ГОСТ 22032-76');
textout(Round(200),Round (370),'Гайка М14.5 ГОСТ 5915-70');
textout(Round(200),Round (390),'Шайба 14 ГОСТ 6402-70');
pen.Style:=pssolid;
brush.Color:=clwhite;
end;
end;
end;
2:
begin
ms:=3;
r:=StrToFloat(edit2.text);
d:=da;
f:=fa;
Db:=2*d;
Dsh:=2.2*d;
m:=0.8*d;
S:=0.15*d;
h:=0.7*d;
begin
if r<(f/2+d*1.5) then
begin
ShowMessage('невозможно начертить увеличте длину винта' );
end
else begin
fa:=StrToFloat(edit1.Text);
da:=StrToFloat(edit7.Text);
r:=StrToFloat(edit2.text);
d:=da*ms;
f:=fa*ms;
Db:=2*d*ms;
Dsh:=2.2*d;
m:=0.8*d;
S:=0.15*d;
h:=0.7*d;
r:=r;
tc:=(r*ms/(f/2+d*1.5));
Image1.Picture.Bitmap.Canvas.Pen.Width:=2 ;
Brush.Style:=bsbdiagonal; //фланец
brush.Color:=clBlack;
rectangle(round(40+ac+m+s),round(200-3*d),round(40+ac+s+m+f/2+1),round(200+3*d));
Brush.Style:=bsfdiagonal;
rectangle(round(40+ac+s+m+f/2),round(200-3*d),round(40+ac+m+s+f/2+1.5*d*tc+20),round(200+3*d));
brush.Style:=bssolid;
brush.Color:=clwhite;
brush.Style:=bsClear;
rectangle(Round(40+ac+m+s-0.6*d),round(200-d*1.5/2),round(40+ac+m+s+1),round(200+d*1.5/2));
brush.Style:=bssolid;
brush.Color:=clwhite;
rectangle(round(40+ac+m+s),round(200-d/2),round(40+ac+m+s+1+f/2+1.5*d*tc),round(200+d/2));
Image1.Picture.Bitmap.Canvas.Pen.Width:=1;
moveto(round(40+ac+m+s),round(200-0.85*d/2));
lineto(round(40+ac+m+s+f/2+d*1.5*tc),round(200-0.85*d/2));
moveto(round(40+ac+m+s),round(200+0.85*d/2-2));
lineto(round(40+ac+m+s+f/2+d*1.5*tc),round(200+0.85*d/2-2));
Image1.Picture.Bitmap.Canvas.Pen.Width:=2;
moveto(round(40+ac+m+s+f/2),round(200-d*2));
lineto(round(40+ac+m+s+f/2),round(200+2*d));
Image1.Picture.Bitmap.Canvas.Pen.Width:=1; //выноски
moveto(round(40+ac+m+s-0.6*d-1),round(200));
lineto(round(40+ac+m+s-0.6*d-1),round(200-3.5*d-3));
moveto(round(40+ac+m+s),round(200));
lineto(round(40+ac+m+s),round(200-3.5*d-3));
moveto(round(40+ac+m+s+f/2+1.5*d*tc),round(200));
lineto(round(40+ac+m+s+f/2+1.5*d*tc),round(200-3.5*d-3));
moveto(round(40+ac+m+s+f/2),round(200-d));
lineto(round(40+ac+m+s+f/2),round(200-3.5*d-3));
moveto(round(40+ac+m+s-0.6*d),round(200-3.5*d+5));
lineto(round(40+ac+m+s+f/2+d*1.5*tc+1),round(200-3.5*d+5));
moveto(round(43),round(200+d*1.5/2-1));
lineto(round(43),round(200-d*1.5/2));
moveto(round(40),round(200+1.5*d/2-1));
lineto(round(40+ac+m+s-0.6*d),round(200+1.5*d/2-1));
moveto(round(40),round(200-1.5*d/2));
lineto(round(40+ac+m+s-0.6*d),round(200-1.5*d/2));
Image1.Picture.Bitmap.Canvas.Pen.Width:=2;
rectangle(round(50+2.5*d*tc+70),round(200-3*d),round(50+2.5*d*tc+70+6*d),round(200+3*d));
ellipse(round(50+2.5*d*tc+70+d*3-d/2*1.5),round(200-d/2*1.5),round(50+2.5*d*tc+70+d*3+d/2*1.5),round(200+d/2*1.5));
Image1.Picture.Bitmap.Canvas.Pen.Width:=1;
With Image1.picture.Bitmap.Canvas Do
Begin
pen.Style:=psDashDot; //осевые
moveto(Round(50+2.5*d*tc+70-d),Round(200));
lineto(Round(50+2.5*d*tc+70+d*7),Round(200));
moveto(Round(50+2.5*d*tc+70+d*3),Round(200-3.5*d));
lineto(Round(50+2.5*d*tc+70+d*3),Round(200+3.5*d));
moveto(Round(45),Round(200));
lineto(Round(50+2.5*d*tc+70+5),Round(200));
brush.Style:=bssolid;
brush.color:=clwhite;
end;
Image1.Picture.Bitmap.Canvas.Pen.Width:=6;
moveto(round(50+2.5*d*tc+70+d*3+1.5*0.707*d/2-2),round(200-1.5*0.707*d/2+2));
lineto(round(50+2.5*d*tc+70+d*3-1.5*0.707*d/2+2),round(200+1.5*0.707*d/2-2));
moveto(round(40+ac+m+s-0.6*d+1),198);
lineto(round(40+ac+m+s-0.6*d+3),202);
moveto(round(40+ac+m+s-0.6*d+1),202);
lineto(round(40+ac+m+s-0.6*d+3),198);
textout(Round(40+0.68*m+ac),Round (200-3.85*d),'H');
textout(Round(40+0.1*f+ac+m+s),Round (200-3.85*d),'Ф1');
textout(Round(40+0.84*f+ac+m+s),Round (200-3.85*d),'Lвин');
textout(35,195,'d');
textout(Round(200),Round (390),'Винт М8 25.58 ГОСТ 1491-72');
pen.Style:=pssolid;
brush.Color:=clwhite;
end;
end;
end;
end;
end;
end;
procedure TForm1.tipClick(Sender: TObject);
begin
case tip.ItemIndex of
0:
begin
Panel1.Visible:=True;
Panel2.Visible:=FALSE;
Panel3.Visible:=False;
end;
1:
begin
Panel1.Visible:=False;
Panel2.Visible:=True;
Panel3.Visible:=False;
end;
2:
begin
Panel1.Visible:=False;
Panel2.Visible:=False;
Panel3.Visible:=True;
end;
end;
end;
end.
3.6. Тест программы, результат:
ЗАКЛЮЧЕНИЕ
В результате выполненной работы были получены следующие результаты долговечность подшипников: L =154 млн.об. Основные характеристики зубчатых колес: диаметр окружности впадин:d=295 мм., диаметр окружности вершины:da=300 мм., делительный диаметр:df=288,75 мм., ширина зубчатого венца колеса bw= 39,375 мм., диаметр ступицы Dc= 38,75мм., длина ступицы Lc= 42 мм. Основные характеристики резьбовых соединений: длина болта L=34,6мм., а выбранная в соответствии с ГОСтом 35мм, длина шпильки L=49,8 мм., а по ГОСТу =38 мм и длина винта L=24мм., а по ГОСТу 25мм. Курсовая работа была выполнена в соответствии с заданием.
Библиографический список
1. Партин А.С. Программирование на языке Паскаль. Конспект лекций.- Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2003, 77с.
2. Чекмарев А.А., Осипов В.К. Справочник по машиностроительному черчению.- М.: Высшая школа, 1994. - 671с.; ил.
3. Инженерная графика и машиностроительное черчение. Ч. II. Методические указания и контрольные задания для студентов всех технических специальностей и форм обучения. - Свердловск, изд. УПИ им. С.М. Кирова, 1977, с.28. Под редакцией канд. тех. наук Мальцева В.И.
4. Соединения разъёмные и неразъёмные: Методические указания по курсу "Инженерная графика" / В.А. Белоусова, О.В. Железнова, Е.Я. Жигалова, Э.Э. Истомина, Т.И. Кириллова. Екатеринбург: УГТУ-УПИ, 1994. 51с.
5. Проектирование одноступенчатого цилиндрического редуктора: Методические указания по курсам "Детали машин и основы конструирования" и "Механика" / Г.Л. Баранов. Екатеринбург: ГОУ ВПО УГТУ - УПИ, 2005. 47с.
6. Детали машин и основы конструирования: учебник / Г.Л. Баранов - Екатеринбург: УГТУ-УПИ, 2008, 288с.
2
Документ
Категория
Рефераты
Просмотров
54
Размер файла
834 Кб
Теги
kursovaya
1/--страниц
Пожаловаться на содержимое документа