курсовая по информатике. Отчет по курсовой работе по теме Разработка программного модуля на языке программирования высокого уровня для решения инженерных задач
Скачать 1.16 Mb.
|
3. Разработка программного модуля на примере расчета и построения зубчатого зацепления3.1 Постановка задач Разработать программный модуль на примере расчета и построения зубчатого зацепления. Написать алгоритмы программ. Написать программы, которые должны позволять: вводить исходные данные; выводить необходимые расчётные параметры; формировать изображение соответствующих элементов; 3.2 Математическая модель В данной программе требуется рассчитать основные характеристики и геометрические характеристики зубчатого зацепления: Формула 1. Делительный диаметр (2.1) Где m- модуль; z- число зубьев колеса. Формула 2. Диаметр окружности вершин Где m- модуль; z- число зубьев колеса. Формула 3. Диаметр окружности вершин Где m- модуль; z- число зубьев колеса Формула 4. Ширина зубчатого венца колеса (2.4) Где Aw- Межосевое расстояние - угол Формула 5. Длина ступицы Где d-– диаметр посадочного отверстия зубчатого колеса. Формула 6. Диаметр ступицы Где d-– диаметр посадочного отверстия зубчатого колеса Зацепление цилиндрических зубчатых колёс с прямыми зубьями Рисунок 11. Изображение зацепления цилиндрических зубчатых колёс с прямыми зубьями Основные размеры зубчатых колес Рисунок 12. Изображение основных размеров зубчатых колёс Рисунок 13. Пазы шпоночные 3.3 Описание алгоритмаА. Начать исполнение. Создать форму. Нанести на созданную форму элементы: TButton, TImage, TLabel, TEdit. Назвать 2 кнопки «Расчет» и 1 кнопку «Чертеж». Если нажать на первую кнопку «Расчет», то выведется сообщение « = …», « =…», « =…». Если нажать на вторую кнопку «Расчет», то выведется сообщение « = …»,« = …» . Если нажать на кнопку «Чертеж», то на экране появится изображение подшипника с размерами, с помощью процедур: Polygon, Polyline, RoundRect, Ellipse, MoveTo, LineTo, TextOut. Конец цикла. Б. Закончить исполнение 3.4 Текст программыunit zadacha2; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Image1: TImage; Label1: TLabel; Label10: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private public end; var Form1: TForm1; m, z, d, dq, Aw, da, bw, df, h, Dc, Lc : real; Psi:Double; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin m:=StrToFloat(Edit1.text); z:=StrToFloat(edit2.text); dq:=m*z; df:=m*(z-2); da:=m*(z+2); if (m<=0)or(z<=0) then showmessage('некорркетный ввод') else begin showmessage('dq='+floattostrf(dq,ffFixed,4,2)+'мм'); showmessage('df='+floattostrf(df,ffFixed,4,2)+'мм'); showmessage('da='+floattostrf(da,ffFixed,4,2)+'мм'); end; end; procedure TForm1.Button2Click(Sender: TObject); begin d:=StrToFloat(edit3.text); Psi:=StrToFloat(edit4.text); Aw:=StrToFloat(edit5.text); bw:= Psi*Aw; Lc:=1.2*d; Dc:=1.6*d; if (1.2*d<=bw) or (1.2*d showmessage ('Увеличиваем d'); if (Aw<=0)or(Psi<=0)or(d<=0) then showmessage('некоректный ввод') else begin showmessage('bw='+floattostrf(bw,ffFixed,4,2)+'мм'); showmessage('Lc='+floattostrf(Lc,ffFixed,4,2)+'мм'); showmessage('Dc='+floattostrf(Dc,ffFixed,4,2)+'мм'); end; end; procedure TForm1.Button3Click(Sender: TObject); begin with Image1.Picture.Bitmap do begin Width:=-0; Height:=0; Width:=480; Height:=531; end; With image1.Canvas do begin Image1.Picture.Bitmap.Canvas.Pen.Color:=clWhite; Image1.Picture.Bitmap.Canvas.Brush.Color:=clWhite; Image1.Picture.Bitmap.Canvas.Brush.Style:= bsFDiagonal; Polyline ([Point(Round(Lc/2),0),Point(Round((Lc/2)+bw),0), Point(Round((Lc/2)+bw),Round((da-df)/2)), Point(Round(Lc/2),Round((da-df)/2)),Point (Round(Lc/2), 0)]); Polygon ([Point (Round(Lc/2), Round((da-df)/2)), Point (Round (Lc/2), Round ((da-dc)/2)) , Point (Round((Lc/2)-((Lc-bw)/2)), Round((da-dc)/2)), Point (Round((Lc/2)-(Lc-bw)/2), Round((((dc-d)/2)-3)+((da-dc)/2))), Point (Round(((Lc/2)+bw)+(Lc-bw)/2), Round((((dc-d)/2)-3)+((da-dc)/2))), Point(Round(((Lc/2)+bw)+(Lc-bw)/2), Round((da-dc)/2)), Point(Round((Lc/2)+bw),Round((da-dc)/2)), Point(Round((Lc/2)+bw),Round((da-df)/2))]); Polyline ([Point (Round((Lc/2)-((Lc-bw)/2)) ,Round((((dc-d)/2)-3)+((da-dc)/2))), Point (Round((Lc/2)-((Lc-bw)/2)),Round((((dc-d)/2)+3)+((da-dc)/2))), Point (Round((Lc/2)+bw+((Lc-bw)/2)),Round((((dc-d)/2)+3)+((da-dc)/2))), Point (Round((Lc/2)+bw+((Lc-bw)/2)),Round((((dc-d)/2)-3)+((da-dc)/2)))]); MoveTo (Round((Lc/2)-((Lc-bw)/2)), Round((((dc-d)/2)+3)+((da-dc)/2))); LineTo (Round((Lc/2)-((Lc-bw)/2)), Round(((((dc-d)/2)+3)+((da-dc)/2))+d)); MoveTo (Round((Lc/2)-((Lc-bw)/2)+1.6), Round((((dc-d)/2)+3)+((da-dc)/2))); LineTo (Round((Lc/2)-((Lc-bw)/2)+1.6), Round(((((dc-d)/2)+3)+((da-dc)/2))+d)); MoveTo (Round((Lc/2)+bw+((Lc-bw)/2)),Round((((dc-d)/2)+3)+((da-dc)/2))); LineTo (Round((Lc/2)+bw+((Lc-bw)/2)),Round(((((dc-d)/2)+3)+((da-dc)/2))+d)); MoveTo (Round((Lc/2)+bw+((Lc-bw)/2)-1.6),Round((((dc-d)/2)+3)+((da-dc)/2))); LineTo (Round((Lc/2)+bw+((Lc-bw)/2)-1.6),Round(((((dc-d)/2)+3)+((da-dc)/2))+d)); Polygon ([Point(Round((Lc/2)-((Lc-bw)/2)), Round(((((dc-d)/2)+3)+((da-dc)/2))+d)), Point (Round((Lc/2)-((Lc-bw)/2)),Round(((((dc-d)/2)+3)+((da-dc)/2))+d+((Dc/2)-(d/2)))), Point (Round(Lc/2), Round(((((dc-d)/2)+3)+((da-dc)/2))+d+((Dc/2)-(d/2)))), Point(Round(Lc/2), Round(da-((da-df)/2))), Point(Round((Lc/2)+bw),Round(da-(da-df)/2)), Point(Round((Lc/2)+bw), Round(((((dc-d)/2)+3)+((da-dc)/2))+d+((Dc/2)-(d/2)))), Point(Round(((Lc/2)+bw+((Lc-bw)/2))),Round(((((dc-d)/2)+3)+((da-dc)/2))+d+((Dc/2)-(d/2)))), Point (Round((Lc/2)+bw+((Lc-bw)/2)), Round(((((dc-d)/2)+3)+((da-dc)/2))+d))]); Polyline ([Point(Round(Lc/2),(Round(da-((da-df)/2)))), Point (Round(Lc/2), Round(da)), Point(Round((Lc/2)+bw), Round(da)), Point(Round((Lc/2)+bw), Round(da-((da-df)/2)))]); Image1.Picture.Bitmap.Canvas.Brush.Style:= bsClear; Arc(Round(4*bw),Round((((dc-d)/2)+3)+((da-dc)/2)),Round(4*bw+d), Round(((((dc-d)/2)+3)+((da-dc)/2))+d),Round(4*bw+d/2-6),Round((((dc-d)/2)+3)+((da-dc)/2)),Round(4*bw+d/2+6),Round((((dc-d)/2)+3)+((da-dc)/2))); MoveTo (Round(4*bw+d/2-6),Round((((dc-d)/2)+3)+((da-dc)/2))); LineTo(Round(4*bw+d/2-6),Round((((dc-d)/2)-3)+((da-dc)/2))); LineTo(Round(4*bw+d/2+6) ,Round((((dc-d)/2)-3)+((da-dc)/2))); LineTo (Round(4*bw+d/2+6),Round((((dc-d)/2)+3)+((da-dc)/2))); Image1.Picture.Bitmap.Canvas.Pen.Style:= psDashDot; MoveTo (Round(Lc/2-3),Round((da-d)/2)); LineTo (Round((Lc/2)+bw+3),Round((da-d)/2)); MoveTo (Round(Lc/2-3),Round(((da-dq)/2)+dq)); LineTo (Round((Lc/2)+bw+3),Round(((da-dq)/2)+dq)); MoveTo (Round((Lc/2)-((Lc-bw)/2)-3),Round(da/2)); LineTo (Round((Lc/2)+bw+((Lc-bw)/2)+3), Round(da/2)); MoveTo (Round(4*bw-6), Round (da/2)); LineTo (Round(4*bw+d+6), Round (da/2)); MoveTo (Round(4*bw+(d/2)), Round((((dc-d)/2)+3)+((da-dc)/2)-6)); LineTo (Round(4*bw+(d/2)), Round(((((dc-d)/2)+3)+((da-dc)/2))+d+6)); Image1.Picture.Bitmap.Canvas.Pen.Style:= psSolid; TextOut(150,150, '125'); end; end; end. |