Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

inf_meth_Delphi

.pdf
Скачиваний:
3
Добавлен:
12.05.2015
Размер:
1.55 Mб
Скачать

Procedure is completed by breaking connection with file variable (CloseFile).

Exit without saving results to file

Exit without saving results to file take place by pressing the button “Exit without saving results to file” (BitBtn2). Since all actions, bringing to display results using form elements, takes place in the moment of a form display, exit is performed by closing a form using value

bkCancel” of property “Kind” (BitBth2).

Thus, set of unit components OutputResult allows two tables output and saving results to file.

вывода контрольной информации процедуры ввода исходных данных, блоков вывода таблицы значений через 30 градусов и таблицы предельных значений из процедуры вывода результатов.

Завешается процедура закрытием связи с файловой переменной (CloseFile).

Выход без сохранения результатов в файле

Действия, приводящие к выходу без сохранения результатов в текстовом файле, возникают при нажатии на кнопку «Выйти без сохранения результотов в файле» (BitBtn2). Поскольку все действия, приводящие к отображению результатов элементами формы, происходят в момент отображения формы, то выход без сохранения результатов является простым закрытем формы, что необходимо указать как значение «bkCancel» свойства «Kind» компонента-кнопки BitBth2.

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

2.4.5 Design of unit “SimplyMech”

SimplyMech unit is assigned to provide output of simplified parametric scheme indicating main parameters. Creation of parametric image means that when changing one or a few mechanism parameters by user graphic image should be changed respectively.

Interface of output of simplified mechanism sketch is shown in fig.2.10.

Fig. 2.10. Simplified sheme

2.4.5 Проектирование модуля

SimplyMech

Назначение модуля SimplyMech – обеспечить вывод на форму графического изображения упрощенной параметрической схемы механизма с обозначением основных параметров. Создание параметрического изображения подразумевает, что при изменении пользователем одного или нескольких параметров механизма графический образ должен перестраиваться в соответствии с изменениями

Интерфейс модуля вывода упрощенного эскиза механизма на рис. 2.10.

Рис. 2.10. Упрощенная схема

31

Unit of simplified mechanism sketch output processes one event only, consisting of a form display which code is stated below.

Модуль вывода упрощенного эскиза механизма дожжен обрабатывать всего лишь одно событие – отображение формы, код которой приведен ниже.

procedure TfmSimplyMech.FormShow(Sender: TObject); var

x0,y0,xA,yA,xB,yB,xC,yC:integer; begin

{1}

Image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height));

{2}

alfa:=45*Pi/180;

fi:=Ffi(alfa,R,L,L1,L2);

{3}

x0:=250; y0:=200; xC:=x0+round(L); yC:=Y0; xA:=x0+round(R*cos(alfa)); yA:=y0-round(R*sin(alfa)); xB:=xC+round(L1*cos(fi)); yB:=yC-round(L1*sin(fi));

{4}

Opora(Image1,x0,y0,270);

Opora(Image1,xC,yC,270);

{5}

image1.Canvas.Pen.Width:=3;

Image1.Canvas.MoveTo(x0,y0); Image1.Canvas.LineTo(xA, yA); Image1.Canvas.MoveTo(xA, yA); Image1.Canvas.LineTo(xB,yB); Image1.Canvas.MoveTo(xB,yB); Image1.Canvas.LineTo(xC,yC);

{6}

Uzel(Image1,x0,y0,'0');

Uzel(Image1,xA,yA,'A');

Uzel(Image1,xB,yB,'B');

Uzel(Image1,xC,yC,'C');

{7}

RazmerLinear(Image1,x0,y0,xc,yc,'L');

RazmerLinear(Image1,x0,y0,xa,ya,'R');

RazmerLinear(Image1,xA,yA,xB,yB,'L2');

RazmerLinear(Image1,xC,yC,xB,yB,'L1');

RazmerAngular(Image1,x0,y0,xc,yc,xa,ya,'alfa');

RazmerAngular(Image1,xc,yc,xc+1,yc,xb,yb,'fi'); end;

The first stage consists of sketching image outline. It is intended to delete the image patterned when procedure was invoked previously.

The second stage consists of defining crank incline angle (alfa) and calculating corresponding value of rocker rotation angle (fi).

The third stage consists of defining coordinates of basic mechanism points. They are: O, A, B, C. Point O is positioned free considering the mechanism to be completely displayed in a form. Positions of other points are calculated according to parameters. Thus, when changing any parameter or position of point O all basic points will change the position.

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

Второй этап – определение угла наклона кривошипа (alfa) и расчет, соответствующего ему значения угла поворота коромысла (fi).

Третий этап – расчет координат базовых точе механизма. Всего их четыре – О, А, B, C. Положение точки О мы задаем произвольным образом, но с учетом того, чтобы механизм целиком отображался на форме. Положения всех остальных точек рассчитывается через параметры. Таким образом, при изменении любого из параметров или положения точки О, базовые точки будут изменять свое положение.

32

The fourth stage consists of drawing mechanism supports using procedure “Opora” of additional unit PV_Add.

The fifth stage consists of drawing mechanism links. Standard procedures MoveTo and LineTo are used. Line width is 3 pixels.

The six stage consists ofin drawing knot points near the supports. Procedure Uzel of additional unit PV_Add is used.

The seventh stage consists of drawing dimension lines for indicating linear (RazmerLinear) ans angular (RazmerAngular) parameters.

Comments to procedures Opora, Uzel,

ParameterLinear, RazmerAngular are stated in Apendix C.

Четвертый этап – рисование опор механизма, при котором задействована процедура Opora из дополнительного модуля

PV_Add.

Пятый этап – рисование звеньев механизма. Для рисования использованы стандарнтые процедуры MoveTo и LineTo. Перед рисованием устанавливается толшина линий в 3 пикселя.

Шестой этап – рисование узлов возле опор, при котором задействована процедура Uzel из дополнительного модуля PV_Add.

Седьмой этап – нанаесение размерных линий для обозначения линейных

(RazmerLinear) и угловых (RazmerAngular)

параметров.

Комментарии по использованию процедур Opora, Uzel, RazmerLinear, RazmerAngular смотри в приложении C.

2.4.6. Design of unit “FullMech”

Unit FullMetch is assigned to output graphic image of full parametric mechanism scheme indicating basic parameters.

Interface of full mechanism sketch output unit is shown in fig.2.11.

Fig. 2.11. Full sheme

2.4.6 Проектирование модуля

FullMech

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

Интерфейс модуля вывода полного эскиза механизма приведен на рис. 2.11.

Рис. 2.11. Полная схема

Unit of full mechanism sketch output should process one event only consisting of output of form code which is stated below.

Модуль вывода полного эскиза механизма дожжен обрабатывать всего лишь одно событие – отображение формы, код которой приведен ниже.

procedure TfmFullMech.FormShow(Sender: TObject); var

x0,y0,xA,yA,xB,yB,xC,yC,rMax,rMin,i:integer; xp,yp:array[1..3,1..2] of integer;

s:string;

33

begin

{1}

Image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height));

{2}

alfa:=45*Pi/180;

fi:=Ffi(alfa,R,L,L1,L2);

{3}

x0:=250; y0:=200; xC:=x0+round(L); yC:=Y0; xA:=x0+round(R*cos(alfa)); yA:=y0-round(R*sin(alfa)); rMax:=round(R); rMin:=round(0.2*R); xB:=xC+round(L1*cos(fi)); yB:=yC-round(L1*sin(fi));

{4}

Image1.Canvas.Pen.Width:=2; Image1.Canvas.Ellipse(x0-round(d/2),y0-round(d/2),

x0+round(d/2),y0+round(d/2)); for i:= 1 to 3 do begin

xp[i,1]:=x0+round(rMax*cos(alfa+Pi+2*Pi/3*(i-1))); yp[i,1]:=y0-round(rMax*sin(alfa+Pi+2*Pi/3*(i-1))); xp[i,2]:=x0+round(rMin*cos(alfa+Pi+2*Pi/3*(i-1))); yp[i,2]:=y0-round(rMin*sin(alfa+Pi+2*Pi/3*(i-1))); Zveno(Image1,xp[i,1],yp[i,1],xp[i,2],yp[i,2],3);

end;

{5}

Image1.Canvas.Pen.Color:=clRed; Image1.Canvas.Arc(x0-20,y0-20,x0+20,y0+20,x0,y0-1,x0-1,y0); Image1.Canvas.Arc(xc-20,yc-20,xc+20,yc+20,xc+1,yc,xc,yc-1); Image1.Canvas.MoveTo(x0,Y0-20); Image1.Canvas.LineTo(Xc,Yc-20); Image1.Canvas.MoveTo(x0-20,y0); Image1.Canvas.LineTo(x0-20,y0+round(B)); Image1.Canvas.MoveTo(xC+20,yC); Image1.Canvas.LineTo(xC+20,yC+round(B)); Image1.Canvas.MoveTo(xC+20,yC+round(B)); Image1.Canvas.LineTo(x0-20,y0+round(B));

{6}

Image1.Canvas.Pen.Color:=clGreen;

Zveno(Image1,xa,ya,xb,yb,10);

Image1.Canvas.Pen.Color:=clBlue;

Zveno(Image1,xc,yc,xb,yb,10);

{7}

Image1.Canvas.Pen.Color:=clYellow;

Uzel(Image1,x0,y0,'0');

Uzel(Image1,xA,yA,'A');

Uzel(Image1,xB,yB,'B');

Uzel(Image1,xC,yC,'C');

{8}

Image1.Canvas.Pen.Color:=clMaroon;

str(L:6:2,s); RazmerLinear(Image1,x0,y0,xc,yc,s); str(R:6:2,s); RazmerLinear(Image1,x0,y0,xa,ya,s); str(L2:6:2,s); RazmerLinear(Image1,xa,ya,xb,yb,s); str(L1:6:2,s); RazmerLinear(Image1,xc,yc,xb,yb,s); str(alfa*180/Pi:6:2,s); RazmerAngular(Image1,x0,y0,xc,yc,xa,ya,s); str(fi*180/Pi:6:2,s); RazmerAngular(Image1,xc,yc,xc+1,yc,xb,yb,s); str(B:6:2,s); RazmerLinear(Image1,x0,y0,x0,y0+round(B),s); str(D:6:2,s); RazmerLinear(Image1,x0-round(D/2),y0,x0+round(D/2),y0,s);

end;

34

The first, second and third stages of the procedure are almost similar as the previous one.

The fourth stage consists of drawing a crank which consists of a disk and (procedure Ellipse) and three slits made by internal procedure Zveno code which is stated below.

The fifth stage consists of drawing redcolour mechanism frame using standard procedures MoveTo, LineTo, Arc. Note that all drawing parameters use basic points O and C. This provides parametrization during frame making.

The sixth stage consists of drawing connecting-rod (green colour) and rocker (blue colour). Internal procedure “Zveno” is used.

The seventh stage consists of drawing knot points of mechanism. Procedure “Uzel” of additional unit PV_Add is used.

The eighth stage is drawing dimensions. Before being output each dimension value is converted into string variable s, linear and angular dimensions are output by means of

RazmerLinear and RazmerAngular of unit

PV_Add afterwards.

Comments to procedures Opora, Uzel,

RazmerLinear, RazmerAngular are stated in Appendix C.

Первый, второй и третий этапы

данной процедуры практически полностью соответствуют тем же этапам предыдущей.

Четвертый этап предназначен для рисования кривошипа, который состоит из диска (процедура Ellipse) и трех прорезей, для рисования которых использована внутренняя процедура Zveno, код которой будет приведен ниже.

На пятом этапе с использованием стандертных процедур MoveTo, LineTo, Arc красным цетом рисуется корпус механизма. Обратите внимание на то, что все параметры рисования используют базовые точки О и С. Этим обепечивается параметризация при рисовании корпуса.

Шестой этап – рисование шатуна (зеленым цветом) и коромысла (синим цветом). Используется внутренняя процедура

Zveno.

Седьмой этап – рисование узлов в базовых точках механизма. Задействована процедура Uzel из дополнительного модуля

PV_Add.

Восьмой этап – рисование размеров. Значение каждого размера перед выводом преобразовывается в строковую переменную s, после чего с помощью RazmerLinear и RazmerAngular из модуля PV_Add выводятся линейные и угловые размеры.

Комментарии по использованию процедур Opora, Uzel, RazmerLinear,

RazmerAngular смотри в приложении C.

procedure Zveno(Image:TImage;x1,y1,x2,y2,B:longint); var L:real;

p,xa,ya,xb,yb,xc,yc,xd,yd:integer; begin

//SetLineStyle(SolidLn,0,ThickWidth); L:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); xa:=x1+round((y2-y1)*B/L); ya:=y1-round((x2-x1)*B/L); xb:=x2+round((y2-y1)*B/L); yb:=y2-round((x2-x1)*B/L); xc:=x1-round((y2-y1)*B/L); yc:=y1+round((x2-x1)*B/L); xd:=x2-round((y2-y1)*B/L); yd:=y2+round((x2-x1)*B/L); Image.Canvas.MoveTo(xa,ya); Image.Canvas.LineTo(xb,yb); Image.Canvas.MoveTo(xc,yc); Image.Canvas.LineTo(xd,yd); Image1.Canvas.Ellipse(x1-B,y1-B,x1+B,y1+B); Image1.Canvas.Ellipse(x2-B,y2-B,x2+B,y2+B);

end; { procedure Zveno }

Six parameters are required for procedure

Процедура Zveno

требует передачи

Zveno.

шести параметров:

 

The first parameter is the name of

Первый параметр

имя изображения

image of TImage class, which is the

класса TImage, на канве которого будет

foundation for drawing a link;

рисоваться звено;

 

Next four parameters are coordinates

Следующие четыре параметра

of knot points of link;

координаты узловых точек звена;

The last parameter is half-width of a

Последний параметр – полуширина звена.

link.

 

 

35

Coordinates of four additional points are calculated on the grounds of two basic points of link and intended for drawing two lines. Further two circles are made with the center in the basic points of a link and radius equal to half-width of link.

Thus, we created a procedure for drawing full parametric mechanism scheme with device dimensions.

По значениям двух исходных базовых точек звена рассчитываются координаты дополнительных четырех точек, через которые проводится две лини. В конце рисуются две окружности с центрами в базовых точках звена и радиусом, равным полуширине звена.

Таким образом, нами создана процедура, которая рисует полную параметрическую схему механизма с реальными размерами.

2.4.7 Design of unit “Kinematics”

Unit “Kinematics” is assigned for simulation of machanism work having possibility to change speed and rotation direction of a crank, as well as drawing of all mechanism positions.

Interface of mechanism work simulation unit is shown in fig. 2.12.

Fig. 2.12. Simulation of

mechanism work

Mechanism work simulation unit should process several events:

Timer signal;

Pressing button “Start”;

Pressing button “Stop”’

Form close.

Processing of timer signal

Animation in Delphi can be performed by locating a timer in a form (Timer1). The timer in a certain period of time, using property Interval, generates events. These events are resulted in frequent execution of the following procedure.

2.4.7 Проектирование модуля

Kinematics

Назначение модуля Kinematics – имитировать работу механизма с возможностью изменения скорости и направления вращения кривошипа, а также с возможностью зарисовки всех положений механизма.

Интерфейс модуля имитации работы механизма показан на рис. 2.12.

Рис. 2.12. Имитация работы механизма

Модуль имитации работы механизма должен обрабатывать несколько событий:

Сигнал от таймера;

Нажатие на кнопку Start;

Нажатие на кнопку Stop;

Закрытие формы.

Обработка сигнала таймера

Анимацию в Delphi можно реализовать с использованием таймера, экземляр которого (Timer1) следует разместить на форме. Такой таймер через определенное время, заданное его свойством Interval генерирует события. Такие события приводят к многократному виполнению процедуры, текст которой приведен далее.

36

procedure TfmKinematika.Timer1Timer(Sender: TObject); begin

{1}

i:=i+strToInt(Edit1.Text);

{2}

alfa:=i*Pi/180;

fi:=Ffi(alfa,R,L,L1,L2);

{3}

x0:=250; y0:=200; xC:=x0+round(L); yC:=Y0; xA:=x0+round(R*cos(alfa)); yA:=y0-round(R*sin(alfa)); xB:=xC+round(L1*cos(fi)); yB:=yC-round(L1*sin(fi));

{4}

if cbClear.Checked

then Image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height));

{5}

Opora(Image1,x0,y0,270);

Opora(Image1,xC,yC,270);

Image1.Canvas.Pen.Width:=3;

Image1.Canvas.MoveTo(x0,y0);

Image1.Canvas.LineTo(xA, yA);

Image1.Canvas.MoveTo(xA, yA);

Image1.Canvas.LineTo(xB,yB);

Image1.Canvas.MoveTo(xB,yB);

Image1.Canvas.LineTo(xC,yC);

Uzel(Image1,x0,y0,'0');

Uzel(Image1,xA,yA,'A');

Uzel(Image1,xB,yB,'B');

Uzel(Image1,xC,yC,'C');

end;

 

 

 

 

In the first stage variable name i is

На

первом

этапе

процедуры

determined which changes its value according to

определяется значение переменной i, которая

the value of component Edit1. Variable i is a

при каждом пересчете увеличивает или

prototype of crank rotation angle (in degrees)

уменьшает свое значение в соответствии со

and increment is prototype of a speed.

значением, записанным в компоненте Edit1.

 

Переменная i является аналогом угла

 

поворота кривошипа (в градусах), а

 

приращение является аналогом скорости.

In the second stage crank (alfa) and

На

втором

этапе

определяются

rocker (fi) rotation angle values are determined.

значения углов поворота кривошипа (alfa) и

 

коромысла (fi).

 

 

The third stage is determination of

Третий этап – расчет координат

coordinates of machanism basic points.

базовых точек механизма.

 

The fourth stage implements mechanism

Четвертый этап реализует отобра-

display either with clearing the screen for every

жение механихма с очисткой при каждом

procedure invoking or not. Logic condition of

вызове процедуры либо без очистки.

clearing the screen is determined by condition of

Логическое условие

очистки

определяется

component cbClear. If its property “Checked

состоянием компонента cbClear. Если его

takes logical value “true”, then the form is

свойство

Checked

принимает логическое

cleared which allows watching simulation of

значение true, тогда перед каждым

mechanism work, otherwise the form won’t be

рисованием форма очищается, что позволяет

cleared resulting in overlaying of lines displaying

видеть имитацию работы механизма, иначе

mechanism position on each other. This mode

форма не

очищается, что

приводит к

can be used for visual estimation of mechanism

«зарисовыванию» формы всеми возможными

casing form.

положениями механизма. Такой режим может

 

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

 

кожуха механизма.

 

 

37

The fifth stage is drawing one of mechanism position that is realized similar to procedure of drawing of simplified model.

Processing of form closing

The event of pressing button “Start

(BitBtn1) should be resulted in timer activation only. Procedure code is stated below.

Пятый этап – рисование одного из положений механизма реализутся аналогично процедуре рисования упрощенной модели.

Обработка закрытия формы

Событие нажатия кнопки Start (BitBtn1) должно приводить всего лишь к активизации таймера. Код процедуры приведен далее.

procedure TfmKinematika.BitBtn1Click(Sender: TObject); begin

Timer1.Enabled:=true end;

Processing of pressing button “Stop

Обработка нажатия кнопки Stop

 

The event of pressing button “Stop

Событие нажатия кнопки Stop (BitBtn2)

(BitBtn2) should be resulted in timer deactivation

должно

приводить

всего

лишь

к

 

only. Procedure code is stated below.

деактивизации таймера. Код процедуры

 

 

приведен далее.

procedure TfmKinematika.BitBtn2Click(Sender: TObject); begin

Timer1.Enabled:=false end;

2.4.8 Design of unit “Diagrams”

Unit Diagrams is assigned for output of two graphs:

Graph showing relationship between rocker rotation angle and crank rotation angle;

Graph showing relationship between

transmission ratio and crank rotation angle. Interface of graph output unit is shown in

fig.2.13.

Graph output unit uses powerful component “Chart” which allows quick and qualitative creation of various diagrams and graphs. Two components, Chart1 and Chart2, should be located in a form. In each component it is necessary to create batch data “Series1” and “Series2” and to make caption for them.

The unit should process one event of displaying the form code which is stated below.

2.4.8 Проектирование модуля

Diagrams

Назначение модуля Diagrams – отобразить два графика:

зависимости угла поворота коромысла от угла поворота кривошипа;

график зависимости передаточного отношения от угла поворота кривошипа

Интерфейс модуля вывода графиков представлен на рис. 2.13.

Модуль отображения графиков использует мощный компонент Chart, позволяющий быстро и качественно создавать различные диаграммы и графики. На форме необходимо разместить два объекта

Chart1 и Chart2. В каждом из них необходимо создать серию данных Series1 и Series2 и соответствующим образом оформить заголовки.

Сам модуль должен обрабатывать одно событие – отображение формы, код которого приведен ниже.

38

Fig. 2.13. Graphs

Рис. 2.13. Графики

procedure TfmDiagrams.FormShow(Sender: TObject); var i:integer;

begin

for i:= 0 to 360 do begin alfa:=i; fi:=FFi(alfa*Pi/180,R,L,L1,L2); u := FU(alfa*Pi/180,R,L,L1,L2);

Series1.Add(fi*180/Pi,'',clRed);

Series2.Add(u,'',clBlue); end;

end;

The procedure is based on a cycle in which variable i changes its value from 0 to 360. Angle “alfa” (in degrees), angle “fi” (in radians) and transmission ratio should be determined for each parameter i.

Further determined values are included to corresponding batch data, angle “fi” is not converted into degrees.

Основу процедуры составляет цикл, в котором переменная i изменяет свое значение с 0 до 360. Через параметр i пересчитывается угол alfa (в градусах), угол fi (в радианах) и передаточное отношение.

Далее рассчитанные значения добавляются к соответствующим сериям данных, причем угол fi переводится в градусы.

2.4.9 Design of unit “AboutProgram”

2.4.9 Проектирование модуля

 

AboutProgram

Unit “AboutProgram” is assigned to output brief information about simulated mechanism and basic capabilities of program.

English interface of unit “AboutProgram” is shown in fig. 2.14.

Назначение модуля AboutProgram – вывести короткую информацию о моделируемом механизме и об основных возможностях программы.

Интерфейс английского варианта модуля информации о программе представлен на рис. 2.14.

39

Fig. 2.14. Interface of unit

“AboutProgram”

Interface of information unit “AboutProgram” is implemented at the stage of form making and it responses to form exit only.

Component “Memo1” is used for information output using property “Lines”.

Рис. 2.14. Интерфейс модуля информации о программе

Интерфейс модуля вывода информации о программе реализуется на этапе конструирования формы и реагирует только на загрытие формы. Для вывода информации использован объект Memo1, свойство которого Lines содержит строки информации.

2.4.10 Design of unit “AboutAuthor”

Unit “AboutAutor” is assigned for output of brief information about author of program and organizing the program is performed in.

English interface of information unit

AboutAuthor” is shown in fig. 2.15. The structure of this unit is similar to information unit

AboutProgram”.

2.4.10 Проектирование модуля

AboutAuthor

Назначение модуля AboutAuthor – вывести короткую информацию об авторе программы и организации, в которой випполнена работа.

Интерфейс английского варианта модуля информации об авторе представлен на рис. 2.15. Структура модуля аналогична структуре модуля с информацией о прогрмме.

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]