Разработка программного обеспечения для расчёта режимов резания при токарной обработке с использованием различных типов резцов и материала обрабатываемой детали

Выбор режима резания при токарной обработке с использованием различных типов резцов и материала обрабатываемой детали. Математическая модель и необходимые для расчетов таблицы. Функциональная схема автоматизации процесса расчета режима резания.

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

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

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

(MaterialDescMemo.text = 'МНЦ15-20') or (MaterialDescMemo.text = 'МН06') or

(MaterialDescMemo.text = 'МН16') or (MaterialDescMemo.text = 'БР.А5') or

(MaterialDescMemo.text = 'БР.А7') or

(MaterialDescMemo.text = 'БР.ОЦСН3-7-5-1') or

(MaterialDescMemo.text = 'БР.ОЦСН3-12-5') or

(MaterialDescMemo.text = 'БР.С30') or (MaterialDescMemo.text = 'БРОФ4-3') or

(MaterialDescMemo.text = 'БРА5') or (MaterialDescMemo.text = 'БРА7') or

(MaterialDescMemo.text = 'ЛН65') or (MaterialDescMemo.text = 'Л60') or

(MaterialDescMemo.text = 'ЛС63-3') or (MaterialDescMemo.text = 'ЛС59-1') or

(MaterialDescMemo.text = 'ЛН65-5') or (MaterialDescMemo.text = 'ЛК80-3') or

(MaterialDescMemo.text = 'Л63') or (MaterialDescMemo.text = 'Л68') or

(MaterialDescMemo.text = 'Л85') or (MaterialDescMemo.text = 'Л80') or

(MaterialDescMemo.text = 'Л90') or (MaterialDescMemo.text = 'Л96') then

begin

Label28.Caption := 'N';

Panel5.ParentBackground := false;

Panel5.Color := clMoneyGreen;

MaterialTypeCB.ItemIndex := 15;

BrinelTextBox.Caption := '100';

RokvellTextBox.Caption := '<20';

end;

if (MaterialDescMemo.text = '16М') or (MaterialDescMemo.text = '12МХ') or

(MaterialDescMemo.text = '18Х3МВ') or (MaterialDescMemo.text = 'ЭИ654') or

(MaterialDescMemo.text = '4Х14Н14В2М') or

(MaterialDescMemo.text = '25Х18Н8В2') or

(MaterialDescMemo.text = 'Х21Г7АН5Б') or (MaterialDescMemo.text = 'ХН60В')

or (MaterialDescMemo.text = 'ХН77ТЮ') or (MaterialDescMemo.text = 'ВНЛ-5')

or (MaterialDescMemo.text = 'ВЖЛ-10') or (MaterialDescMemo.text = 'Х18Н9Т')

then

begin

Label28.Caption := 'S';

Panel5.ParentBackground := false;

Panel5.Color := clFuchsia;

MaterialTypeCB.ItemIndex := 16;

BrinelTextBox.Caption := '240';

RokvellTextBox.Caption := '23';

end;

if (MaterialDescMemo.text = 'ХН60В') or (MaterialDescMemo.text = 'НХ9.5') or

(MaterialDescMemo.text = 'ЖС6-12') or (MaterialDescMemo.text = 'ВЖ36-172')

or (MaterialDescMemo.text = 'ВЖЛ-14') or (MaterialDescMemo.text = 'ХН77ТЮ')

or (MaterialDescMemo.text = 'ХН80ТБЮ') then

begin

Label28.Caption := 'S';

Panel5.ParentBackground := false;

Panel5.Color := clFuchsia;

MaterialTypeCB.ItemIndex := 17;

BrinelTextBox.Caption := '300';

RokvellTextBox.Caption := '30';

end;

if (MaterialDescMemo.text = 'ВТ1') or (MaterialDescMemo.text = 'ВТ1-1') or

(MaterialDescMemo.text = 'ВТ') or (MaterialDescMemo.text = 'В') or

(MaterialDescMemo.text = 'ВТ3-1') or (MaterialDescMemo.text = 'ВТ4') or

(MaterialDescMemo.text = 'ВТ5-1') or (MaterialDescMemo.text = 'ВТ6') or

(MaterialDescMemo.text = 'ВТ8') or (MaterialDescMemo.text = 'ВТ4-1') or

(MaterialDescMemo.text = 'ВТ15') or (MaterialDescMemo.text = 'ВТ16') then

begin

Label28.Caption := 'S';

Panel5.ParentBackground := false;

Panel5.Color := clFuchsia;

MaterialTypeCB.ItemIndex := 18;

BrinelTextBox.Caption := '220';

RokvellTextBox.Caption := '<20';

end;

if (MaterialDescMemo.text = '30ХГСНА') or (MaterialDescMemo.text = 'ЭИ643') or

(MaterialDescMemo.text = 'ВЛ-1') or (MaterialDescMemo.text = '30ХГСА') then

begin

Label28.Caption := 'H';

Panel5.ParentBackground := false;

Panel5.Color := clGray;

MaterialTypeCB.ItemIndex := 19;

BrinelTextBox.Caption := '600';

RokvellTextBox.Caption := '57';

end;

if (MaterialDescMemo.text = 'Х28') or (MaterialDescMemo.text = 'Х34') then

begin

Label28.Caption := 'H';

Panel5.ParentBackground := false;

Panel5.Color := clGray;

MaterialTypeCB.ItemIndex := 20;

BrinelTextBox.Caption := '400';

RokvellTextBox.Caption := '43';

end;

if (MaterialDescMemo.text = 'Пластмассы') or

(MaterialDescMemo.text = 'Оргстекло') or

(MaterialDescMemo.text = 'Полимеры') or (MaterialDescMemo.text = 'Композиты')

then

begin

Label28.Caption := 'N';

Panel5.ParentBackground := false;

Panel5.Color := clMoneyGreen;

MaterialTypeCB.ItemIndex := 22;

BrinelTextBox.Caption := '0';

RokvellTextBox.Caption := '0';

end;

BrinelCuringEdit.Text:=BrinelTextBox.Caption;

CuringCB.ItemIndex:=0;

Recalculate;

end;

procedure TForm1.ManufacturerCBChange(Sender: TObject);

begin

Recalculate;

end;

/// Выбор стали для обработки и подбор основных характеристик/////

procedure TForm1.MaterialTypeCBChange(Sender: TObject);

begin

if MaterialTypeCB.ItemIndex = 0 then

begin

Label28.Caption := 'P';

Panel5.ParentBackground := false;

Panel5.Color := clSkyBlue;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('Ст.0, Ст.1, Ст.08, Ст.08КП, Ст.10, Ст.10КП, Ст.15К, Ст.20');

BrinelTextBox.Caption := '125';

RokvellTextBox.Caption := '<20';

end;

if MaterialTypeCB.ItemIndex = 1 then

begin

Label28.Caption := 'P';

Panel5.ParentBackground := false;

Panel5.Color := clSkyBlue;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add('Ст.3, Ст.25, Ст.30, Ст.35');

BrinelTextBox.Caption := '190';

RokvellTextBox.Caption := '<20';

end;

if MaterialTypeCB.ItemIndex = 2 then

begin

Label28.Caption := 'P';

Panel5.ParentBackground := false;

Panel5.Color := clSkyBlue;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add('Ст.40, Ст.45, Ст.50, Ст.55, Ст.5');

BrinelTextBox.Caption := '250';

RokvellTextBox.Caption := '25';

end;

if MaterialTypeCB.ItemIndex = 3 then

begin

Label28.Caption := 'P';

Panel5.ParentBackground := false;

Panel5.Color := clSkyBlue;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add('Ст.60, Ст65, Ст.70, Ст.75, Ст.80, Ст.6, Ст.7');

BrinelTextBox.Caption := '300';

RokvellTextBox.Caption := '32';

end;

if MaterialTypeCB.ItemIndex = 4 then

begin

Label28.Caption := 'P';

Panel5.ParentBackground := false;

Panel5.Color := clSkyBlue;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('15ГС, 18Г2С, 35ГС, 10Г2СД, 14ХГС, 30ХГ2С, 14ХГСН, 10ХГ2С, 12ХГН, 10ХГ2Н, 15ХГН, 14ХГ2Н, 14Г, 19Г, 24Г, 09Г2, 09Г2С, 14Г2, 10ГНД, 10ХНДП, 10ХСНД');

BrinelTextBox.Caption := '275';

RokvellTextBox.Caption := '28,5';

end;

if MaterialTypeCB.ItemIndex = 5 then

begin

Label28.Caption := 'P';

Panel5.ParentBackground := false;

Panel5.Color := clSkyBlue;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('15Х, 15ХА, 20Х, 30Х, 35Х, 38ХС, 15ХФ, 20ХН, 20ХГ, 20ХГСА, 12ХН3А, 30ХГС, 40ХЛ, 70ХЛ, 25ГС, 25ГСЛ, 12МХЛ, 25НЛ, 35ФАЛ, Х5МЛ, 12Х2НВФА');

BrinelTextBox.Caption := '200';

RokvellTextBox.Caption := '<=20';

end;

if MaterialTypeCB.ItemIndex = 6 then

begin

Label28.Caption := 'P';

Panel5.ParentBackground := false;

Panel5.Color := clSkyBlue;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('У7, У8, У9, У10, У11, У12, У13, Р18, Р9, Р18М, Р9М, Р2МА, Р9К10');

BrinelTextBox.Caption := '300';

RokvellTextBox.Caption := '32';

end;

if MaterialTypeCB.ItemIndex = 7 then

begin

Label28.Caption := 'P';

Panel5.ParentBackground := false;

Panel5.Color := clSkyBlue;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('15Л, 20Л, 25Л, 30Л, 35Л, 40Л, 45Л, 55Л, 70Л, 25ГЛ, 35ГЛ, 40ГЛ, 45ГЛ');

BrinelTextBox.Caption := '250';

RokvellTextBox.Caption := '25';

end;

if MaterialTypeCB.ItemIndex = 8 then

begin

Panel5.ParentBackground := false;

Panel5.Color := clYellow;

Label28.Caption := 'M';

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('1Х13, 1Х13Ш, 2Х13Л, 2Х13, 2Х13Ш, 13Х14НВФРА(ЭИ736), Х16Н6(ЭП288), 4Х13, Х17, Х17Н2, Х17Н2Ш, Х16Н6, 9Х18');

BrinelTextBox.Caption := '200';

RokvellTextBox.Caption := '<=20';

end;

if MaterialTypeCB.ItemIndex = 9 then

begin

Panel5.ParentBackground := false;

Panel5.Color := clYellow;

Label28.Caption := 'M';

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('Х6СМ, 20Х3МВФ, 1Х13, 1Х13Ш, 2Х13Л, 2Х13, 2Х13Ш, 13Х14НВФРА(ЭИ736), Х16Н6(ЭП288), 4Х13, Х17, Х17Н2, Х17Н2Ш, Х16Н6');

BrinelTextBox.Caption := '240';

RokvellTextBox.Caption := '23';

end;

if MaterialTypeCB.ItemIndex = 10 then

begin

Label28.Caption := 'M';

Panel5.ParentBackground := false;

Panel5.Color := clYellow;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('0Х18Н9, 08Х18Н10Т, 12Х18Н10Т, Х18Н9М, Х18Н9Л, 18Н10М, 2Х18Н9, Х23Н18, 1Х21Н5Т, Х15Н9Ю, Х17Н5М3');

BrinelTextBox.Caption := '180';

RokvellTextBox.Caption := '<20';

end;

if MaterialTypeCB.ItemIndex = 11 then

begin

Label28.Caption := 'K';

Panel5.ParentBackground := false;

Panel5.Color := clRed;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('ВЧ40, ВЧ42-12, ВЧ80, ВЧ100, ВЧ35, ВЧ45, ВЧ50, ВЧ60, ВЧ70');

BrinelTextBox.Caption := '220';

RokvellTextBox.Caption := '<20';

end;

if MaterialTypeCB.ItemIndex = 12 then

begin

Label28.Caption := 'K';

Panel5.ParentBackground := false;

Panel5.Color := clRed;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('СЧ15, СЧ24, СЧ25, СЧ18, СЧ21, СЧ28, СЧ36, СЧ32, СЧ44');

BrinelTextBox.Caption := '200';

RokvellTextBox.Caption := '<20';

end;

if MaterialTypeCB.ItemIndex = 13 then

begin

Label28.Caption := 'K';

Panel5.ParentBackground := false;

Panel5.Color := clRed;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('КЧ30, КЧ33, КЧ35, КЧ37, КЧ45, КЧ50, КЧ56, КЧ60');

BrinelTextBox.Caption := '180';

RokvellTextBox.Caption := '<20';

end;

if MaterialTypeCB.ItemIndex = 14 then

begin

Label28.Caption := 'N';

Panel5.ParentBackground := false;

Panel5.Color := clMoneyGreen;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('А0, А1, А2, А3, АД1, АМц, АМГ2, АМГ6, АМГ3, АМГ5, АК4, АК6, АК8');

BrinelTextBox.Caption := '80';

RokvellTextBox.Caption := '<20';

end;

if MaterialTypeCB.ItemIndex = 15 then

begin

Label28.Caption := 'N';

Panel5.ParentBackground := false;

Panel5.Color := clMoneyGreen;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('М0, М1, М2, М3, МН19, МНЦ15-20, МНА13-3, МН06, МН16, БР.А5, БР.А7, БР.ОЦСН3-7-5-1, БР.ОЦСН3-12-5, БР.С30, БРОФ4-3, БРА5, БРА7, БРМц5, Л96, Л90, Л85, Л80, Л70, Л68, Л63, Л60, ЛН65, ЛС63-3, ЛС59-1, ЛК80-3, ЛН65-5');

BrinelTextBox.Caption := '100';

RokvellTextBox.Caption := '<20';

end;

if MaterialTypeCB.ItemIndex = 16 then

begin

Label28.Caption := 'S';

Panel5.ParentBackground := false;

Panel5.Color := clFuchsia;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('16М, 12МХ, 18Х3МВ, ЭИ654, 4Х14Н14В2М, 25Х18Н8В2, Х21Г7АН5Б, 36НХТЮ, ХН60В, ХН77ТЮ, ВНЛ-5, ВЖЛ-10, Х18Н9Т');

BrinelTextBox.Caption := '240';

RokvellTextBox.Caption := '23';

end;

if MaterialTypeCB.ItemIndex = 17 then

begin

Label28.Caption := 'S';

Panel5.ParentBackground := false;

Panel5.Color := clFuchsia;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('ХН60В, ХН80ТБЮ, ХН77ТЮ, ВНЛ5, ВЖЛ-10, ВЖЛ-14, ВЖ36-172, ЖС6-12, НХ9.5');

BrinelTextBox.Caption := '300';

RokvellTextBox.Caption := '30';

end;

if MaterialTypeCB.ItemIndex = 18 then

begin

Label28.Caption := 'S';

Panel5.ParentBackground := false;

Panel5.Color := clFuchsia;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('ВТ1, ВТ1-1, ВТ3-1, ВТ4, ВТ5-1, ВТ6, ВТ8, ОТ4-1, ВТ15, ВТ16');

BrinelTextBox.Caption := '220';

RokvellTextBox.Caption := '<=20';

end;

if MaterialTypeCB.ItemIndex = 19 then

begin

Label28.Caption := 'H';

Panel5.ParentBackground := false;

Panel5.Color := clGray;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add

('Сталь 45(закаленная), Сталь 40Х(закаленная),30ХГСНА, ЭИ643, ВЛ-1, 30ХГСА');

BrinelTextBox.Caption := '600';

RokvellTextBox.Caption := '57';

end;

if MaterialTypeCB.ItemIndex = 20 then

begin

Label28.Caption := 'H';

Panel5.ParentBackground := false;

Panel5.Color := clGray;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add('Х28, Х34');

BrinelTextBox.Caption := '400';

RokvellTextBox.Caption := '43';

end;

if MaterialTypeCB.ItemIndex = 21 then

begin

Label28.Caption := 'H';

Panel5.ParentBackground := false;

Panel5.Color := clGray;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add('Обычныйчугунпрошедшийтермообработку');

BrinelTextBox.Caption := '600';

RokvellTextBox.Caption := '57';

end;

if MaterialTypeCB.ItemIndex = 22 then

begin

Label28.Caption := 'N';

Panel5.ParentBackground := false;

Panel5.Color := clMoneyGreen;

MaterialDescMemo.Lines.clear;

MaterialDescMemo.Lines.Add('Пластмассы, Оргстекло, Полимеры, Композиты');

BrinelTextBox.Caption := '0';

RokvellTextBox.Caption := '0';

end;

BrinelCuringEdit.Text:=BrinelTextBox.Caption;

CuringCB.ItemIndex:=0;

Recalculate;

end;

// Функцияподстроки Substr встроке MainStr///

function CheckSubStr(Substr, MainStr: string): Boolean;

begin

Result := false;

if (Pos(Substr, MainStr) = 0) = false then

Result := true;

end;

procedure TForm1.Serve();

begin

/// ПОДАЧА///

/// резец проходной(тв.сплав)///

if ToolMaterialCB.ItemIndex = 0 then

begin

case ToolTypeCB.ItemIndex of

0:

podacha := 'CProhodRezTvspl';

1:

podacha := 'CKryglRezTvspl';

2:

podacha := 'CTrehgrRezTvspl';

3:

podacha := 'CRezbRezTvspl';

4:

podacha := 'CProrezRezTvspl';

end;

end

else

begin

case ToolTypeCB.ItemIndex of

0:

podacha := 'CProhodRezAlmaz';

1:

podacha := 'CKryglRezAlmaz';

2:

podacha := 'CTrehgrRezAlmaz';

3:

podacha := 'CRezbRezAlmaz';

4:

podacha := 'CProrezRezAlmaz';

end;

end;

end;

/// /Работа Подменю/////

/// /Проверка на вводимые символы////

procedure TForm1.BrinelCuringEditKeyPress(Sender: TObject; var Key: Char);

begin

if not(Key in [#8, '0' .. '9', FormatSettings.DecimalSeparator]) then

begin

showmessage('Недопустимыйсимвол: ' + '(' + Key + ').' +

' Вводите: (0..9) или ( , ).');

Key := #0;

end;

end;

procedure TForm1.DiameterEditKeyPress(Sender: TObject; var Key: Char);

begin

if not(Key in [#8, '0' .. '9', FormatSettings.DecimalSeparator]) then

begin

showmessage('Недопустимыйсимвол: ' + '(' + Key + ').' +

' Вводите: (0..9) или ( , ).');

Key := #0;

end;

end;

/// загрузкакартинки///

procedure TForm1.ToolTypeCBChange(Sender: TObject);

begin

/// /длятокарки////

case ToolTypeCB.ItemIndex of

0:

Image1.Picture.LoadFromFile('Image/Diamond insert.bmp');

1:

Image1.Picture.LoadFromFile('Image/Round insert.bmp');

2:

Image1.Picture.LoadFromFile('Image/Triangularinsert.bmp');

3:

Image1.Picture.LoadFromFile('Image/Threading insert.bmp');

4:

Image1.Picture.LoadFromFile('Image/Groove.bmp');

end;

Serve; Recalculate;

end;

/// Дополнительная информация о материале резца///

procedure TForm1.ToolMaterialCBChange(Sender: TObject);

begin

Serve;

Recalculate;

end;

procedure TForm1.SpindleSpeed();

var

roundSpeed: Integer;

begin

SpindleSpeedEdit.Caption := floattostr(1000 * strtofloat(Label58.Caption) /

(3.14159265 * strtofloat(DiameterEdit.text)));

/// оборотышпинделя

roundSpeed := round(strtofloat(SpindleSpeedEdit.Caption));

/// округлениеоборотов

if roundSpeed >= strtofloat(oborotmax) then

SpindleSpeedEdit.Caption := oborotmax;

if roundSpeed < strtofloat(oborotmax) then

SpindleSpeedEdit.Caption := floattostr(roundSpeed);

end;

/// /Выбор дополнительных параметров/////

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

procedure TForm1.Curing();

begin

if (MaterialTypeCB.ItemIndex <= 18) then

Case CuringCB.ItemIndex of

0:

BrinelCuringEdit.text :=

floattostr(strtoint(BrinelTextBox.Caption) * 1);

1:

BrinelCuringEdit.text :=

floattostr(strtoint(BrinelTextBox.Caption) * 1.8);

2:

BrinelCuringEdit.text :=

floattostr(strtoint(BrinelTextBox.Caption) * 2.2);

3:

BrinelCuringEdit.text :=

floattostr(strtoint(BrinelTextBox.Caption) * 2);

4:

BrinelCuringEdit.text :=

floattostr(strtoint(BrinelTextBox.Caption) * 0.8);

5:

BrinelCuringEdit.text :=

floattostr(strtoint(BrinelTextBox.Caption) * 1.5);

6:

BrinelCuringEdit.text :=

floattostr(strtoint(BrinelTextBox.Caption) * 1.6);

7:

BrinelCuringEdit.text :=

floattostr(strtoint(BrinelTextBox.Caption) * 1.8);

End;

end;

procedure TForm1.CuringCBChange(Sender: TObject);

begin

Recalculate;

end;

/// Типобработки///

procedure TForm1.ProcessingType();

begin

if RadioButton1.Checked then

begin

Label58.Caption :=

floattostr(RoundTo(strtofloat(Label58.Caption) / 0.8, -2));

Label59.Caption :=

floattostr(RoundTo(strtofloat(Label59.Caption) * 0.8, -2));

end;

if RadioButton3.Checked then

begin

Label58.Caption :=

floattostr(RoundTo(strtofloat(Label58.Caption) * 0.8, -2));

Label59.Caption :=

floattostr(RoundTo(strtofloat(Label59.Caption) / 0.8, -2));

end;

/// для скорости и твердости в edit и поправочного коэффициента

V := strtofloat(Label58.Caption);

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

Recalculate;

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

Recalculate;

end;

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

Recalculate;

end;

/// СОЖ

procedure TForm1.Cooling();

begin

if CheckBox1.Checked = true then

Label58.Caption :=

floattostr(RoundTo(strtofloat(Label58.Caption) / 0.8, -2));

end;

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

Recalculate;

end;

/// Наличие корки у поковки и отливки///

procedure TForm1.Crust();

begin

if CheckBox2.Checked = true then

Label58.Caption :=

floattostr(RoundTo(strtofloat(Label58.Caption) * 0.8, -2));

end;

procedure TForm1.CheckBox2Click(Sender: TObject);

begin

Recalculate;

end;

/// /Термообработка(твердость после нее)////

procedure TForm1.BrinelCuring();

begin

/// Проверяем не пусто ли поле с твердостью и если пусто, то принимаем 1

if (BrinelCuringEdit.text = '') or (BrinelCuringEdit.text = ' ') then

BrinelCuringEdit.text := '1';

if strtofloat(BrinelCuringEdit.text) <> strtofloat(BrinelTextBox.Caption) then

begin

Label58.Caption := floattostr(V / strtofloat(BrinelCuringEdit.text) *

strtofloat(BrinelTextBox.Caption));

end;

Label58.Caption := floattostr(RoundTo(strtofloat(Label58.Caption), -2));

// расчетоборотов

SpindleSpeed;

end;

procedure TForm1.BrinelCuringEditChange(Sender: TObject);

begin

Recalculate;

end;

/// износстанка//

procedure TForm1.DegreeOfWear();

begin

if DegreeOfWearCB.ItemIndex = 1 then

Label58.Caption := floattostr(strtofloat(Label58.Caption) * 0.9);

if DegreeOfWearCB.ItemIndex = 2 then

Label58.Caption := floattostr(strtofloat(Label58.Caption) * sqr(0.9));

V := strtofloat(Label58.Caption);

/// флаг для то, чтобы работала твердость (обязательно нужен)

Label58.Caption := floattostr(RoundTo(strtofloat(Label58.Caption), -2));

end;

procedure TForm1.DegreeOfWearCBChange(Sender: TObject);

begin

Recalculate;

end;

/// периодстойкости///

procedure TForm1.ResistancePeriod();

begin

if ResistancePeriodCB.ItemIndex = 1 then

Label58.Caption := floattostr(strtofloat(Label58.Caption) * 0.918);

if ResistancePeriodCB.ItemIndex = 2 then

Label58.Caption := floattostr(strtofloat(Label58.Caption) / 1.23);

if ResistancePeriodCB.ItemIndex = 3 then

Label58.Caption := floattostr(strtofloat(Label58.Caption) * 0.723);

if ResistancePeriodCB.ItemIndex = 4 then

Label58.Caption := floattostr(strtofloat(Label58.Caption) * 0.658);

if ResistancePeriodCB.ItemIndex = 5 then

Label58.Caption := floattostr(strtofloat(Label58.Caption) * 0.585);

V := strtofloat(Label58.Caption);

/// флаг для то, чтобы работала твердость (обязательно нужен)

Label58.Caption := floattostr(RoundTo(strtofloat(Label58.Caption), -2));

end;

procedure TForm1.ResistancePeriodCBChange(Sender: TObject);

begin

Recalculate;

end;

/// /изменение диаметра вляиющее на изменение оборотов///

procedure TForm1.DiameterEditChange(Sender: TObject);

begin

if DiameterEdit.text = '' then

DiameterEdit.text := '1';

if strtofloat(DiameterEdit.text) < 1 then

DiameterEdit.text := '1';

Recalculate;

end;

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

procedure TForm1.FormShow(Sender: TObject);

begin

Serve;

/// Начальныеусловия///

MaterialTypeCB.ItemIndex := 0;

ManufacturerCB.ItemIndex := 0;

ToolTypeCB.ItemIndex := 0;

ToolMaterialCB.ItemIndex := 0;

Recalculate;

end;

procedure TForm1.CuttingSpeed(n: Integer);

begin

DBGrid1.DataSource.DataSet.First;

while not DBGrid1.DataSource.DataSet.Eof do

begin

if MaterialTypeCB.text = DBGrid1.DataSource.DataSet.Fields[0].value then

Label58.Caption := floattostr(DBGrid1.DataSource.DataSet.Fields[n].value);

DBGrid1.DataSource.DataSet.next;

end;

end;

/// основнойтекстпрограммы///

//procedure TForm1.Timer1Timer(Sender: TObject);

procedure TForm1.Recalculate();

begin

Panel5.ParentBackground := false;

/// для отображения буквы стали

Panel2.ParentBackground := false;

/// для отображения полосок разделителей

Panel1.ParentBackground := false;

/// для отображения полосок разделителей

/// Определение фирмы производителя///

case ManufacturerCB.ItemIndex of

0:

DBGrid1.DataSource.DataSet := ADOTable2;

1:

DBGrid1.DataSource.DataSet := ADOTable3;

2:

DBGrid1.DataSource.DataSet := ADOTable4;

end;

/// /СКОРОСТЬ РЕЗАНИЯ PRAMIT,SANDVIK,ISKAR ИНСТРУМЕНТ/////

if ToolMaterialCB.ItemIndex = 0 then

CuttingSpeed(ToolTypeCB.ItemIndex + 1)

else

CuttingSpeed(ToolTypeCB.ItemIndex + 6);

V := strtofloat(Label58.Caption);

/// для расчета оборотов///

SpindleSpeed;

/// /обнулить для того, чтобы при следующем заходе исправить на вновь изменившееся

/// /ПОДАЧА////

ADOTable5.Active := false;

ADOTable5.TableName := podacha;

ADOTable5.Active := false;

DataSource6.DataSet.Active := true;

DBGrid6.DataSource.DataSet.First;

if DBGrid6.DataSource.DataSet.Fields[2].value = 'Линейнаяфункция' then

Label61.Caption := floattostr(strtofloat(DiameterEdit.text) *

DBGrid6.DataSource.DataSet.Fields[3].value +

DBGrid6.DataSource.DataSet.Fields[4].value);

if DBGrid6.DataSource.DataSet.Fields[2].value = 'Степеннаяфункция' then

Label61.Caption := floattostr(Power(strtofloat(DiameterEdit.text),

DBGrid6.DataSource.DataSet.Fields[4].value) *

DBGrid6.DataSource.DataSet.Fields[3].value);

if DBGrid6.DataSource.DataSet.Fields[2].value = 'Показательнаяфункция' then

Label61.Caption :=

floattostr(EXP(strtofloat(DiameterEdit.text) *

ln(DBGrid6.DataSource.DataSet.Fields[4].value) +

ln(DBGrid6.DataSource.DataSet.Fields[3].value)));

/// дляокругленияподачинаоборот

Label61.Caption := floattostr(RoundTo(strtofloat(Label61.Caption), -4));

Label59.Caption := floattostr(strtofloat(Label61.Caption) *

strtofloat(SpindleSpeedEdit.Caption));

/// дляокругленияминутнойподачи

Label59.Caption := floattostr(round(strtofloat(Label59.Caption)));

Calculate;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

ini := TiniFile.Create(extractfilepath(paramstr(0)) + 'inf.ini');

oborotmax := ini.ReadString('Максимальное число оборотов шпинделя', 'n',

Edit6.text);

MaterialTypeCB.ItemIndex := 0;

ManufacturerCB.ItemIndex := 0;

ToolTypeCB.ItemIndex := 0;

ToolMaterialCB.ItemIndex := 0;

end;

/// /Нажатие кнопки OK после выбора максимальных оборотов шпинделя///

procedure TForm1.Button23Click(Sender: TObject);

begin

Panel14.Visible := false;

Panel14.left := 1312;

Panel14.top := 400;

ini := TiniFile.Create(extractfilepath(paramstr(0)) + 'inf.ini');

ini.WriteString('Максимальное число оборотов шпинделя', 'n', Edit6.text);

oborotmax := Edit6.text;

TabSheet1.Enabled := true;

TabSheet2.Enabled := true;

end;

/// /НажатиеменюМаксимальныеоборотышпинделя//

procedure TForm1.N24Click(Sender: TObject);

begin

Panel14.left := 352;

Panel14.top := 136;

Panel14.Visible := true;

Edit6.text := oborotmax;

TabSheet1.Enabled := false;

TabSheet2.Enabled := false;

end;

/// Открытие окна смены зависимости величины подачи от скорости ///

procedure TForm1.N22Click(Sender: TObject);

begin

PageControl1.ActivePage := TabSheet1;

Panel15.Visible := true;

Panel15.top := -3;

Panel15.left := 475;

Timer3.Enabled := true;

Panel19.Visible := false;

end;

/// Кнопка ОК после внесения изменения в зависимость подачи от скорости///

procedure TForm1.Button24Click(Sender: TObject);

begin

Panel15.Visible := false;

Panel15.top := 500;

Panel15.left := 305;

Timer3.Enabled := false;

end;

/// РЕГРЕССИОННЫЙАНАЛИЗ///

procedure TForm1.N25Click(Sender: TObject);

begin

Button26.Enabled := false;

Edit13.Enabled := false;

Label86.Enabled := false;

Label91.Enabled := false;

Label87.Enabled := false;

Label88.Enabled := false;

Label89.Enabled := false;

Edit14.Enabled := false;

Edit15.Enabled := false;

Edit16.Enabled := false;

Label99.Enabled := true;

Edit18.Enabled := true;

PageControl1.ActivePage := TabSheet1;

if podacha <> 'pysto' then

begin

Label99.Caption := 'Текущаямодель';

Panel19.Visible := true;

Panel19.top := -3;

Panel19.left := 475;

Timer3.Enabled := true;

Panel15.Visible := false;

ADOQuery1.close;

ADOQuery1.SQL.text := 'SELECT * FROM ' + podacha;

ADOQuery1.ExecSQL;

ADOQuery1.Active := true;

DBGrid5.DataSource.DataSet.First;

while not DBGrid5.DataSource.DataSet.Eof do

begin

DBGrid5.DataSource.DataSet.Edit;

if DBGrid5.DataSource.DataSet.Fields[2].AsString <> '' then

Edit18.text := DBGrid5.DataSource.DataSet.Fields[2].value;

DBGrid5.DataSource.DataSet.Post;

DBGrid5.DataSource.DataSet.Last;

end;

ADOQuery1.close;

ADOQuery1.SQL.text := 'SELECT Подача, Диаметр FROM ' + podacha;

ADOQuery1.ExecSQL;

ADOQuery1.Active := true;

If Edit18.text = '' then

Edit18.text := 'Нетрасчета';

end

else

showmessage

('Этой таблицы нет в базе данный подача-диаметр, обратитесь к разработчикам для ее добавления.');

end;

/// Кнопка Расчет после регрессионного анализа///

procedure TForm1.Button25Click(Sender: TObject);

var

a: string; // подача

b: string; // диаметр

Line: real; // линейная модель

Step: real; // степенная модель

Pokaz: real; // показательная модель

chetchik: Integer; // счетчик

begin

/// начальныеусловия///

Button26.Enabled := true;

chetchik := 2;

Edit13.Enabled := true;

Label86.Enabled := true;

Label91.Enabled := true;

Label87.Enabled := true;

Label88.Enabled := true;

Label89.Enabled := true;

Edit14.Enabled := true;

Edit15.Enabled := true;

Edit16.Enabled := true;

Edit13.text := '';

Edit14.text := '';

Edit15.text := '';

Edit16.text := '';

Excel := CreateOleObject('Excel.Application');

Excel.Workbooks.Open[extractfilepath(paramstr(0)) +

'Вариант однофакторной регрессии.xls'];

// Excel.Visible := True;

Excel.ActiveWorkBook.Sheets.Item[5].Activate;

DBGrid5.DataSource.DataSet.First;

while not DBGrid5.DataSource.DataSet.Eof do

begin

if DBGrid5.DataSource.DataSet.Fields[1].AsString <> '' then

begin

a := 'D' + inttostr(chetchik);

b := 'B' + inttostr(chetchik);

DBGrid5.DataSource.DataSet.Edit;

Excel.Range[a] := DBGrid5.DataSource.DataSet.Fields[0].value;

Excel.Range[b] := DBGrid5.DataSource.DataSet.Fields[1].value;

DBGrid5.DataSource.DataSet.Post;

inc(chetchik);

end;

DBGrid5.DataSource.DataSet.next;

end;

If chetchik < 4 then

showmessage

('Слишком мало значений в базе данных для того чтобы подобрать модель.')

else

begin

Excel.ActiveWorkBook.Sheets.Item[1].Activate;

Line := Excel.ActiveWorkBook.ActiveSheet.Cells[8, 12].value;

/// сначала указывается номер строки а затем номер столбца

Step := Excel.ActiveWorkBook.ActiveSheet.Cells[9, 12].value;

Pokaz := Excel.ActiveWorkBook.ActiveSheet.Cells[10, 12].value;

if Line > Step then

begin

if Line > Pokaz then

begin

Edit16.text := floattostr(Line * 100);

Edit13.text := 'Линейнаяфункция';

Edit14.text := Excel.ActiveWorkBook.ActiveSheet.Cells[8, 2].value;

Edit15.text := Excel.ActiveWorkBook.ActiveSheet.Cells[8, 3].value;

end

else

begin

Edit16.text := floattostr(Pokaz * 100);

Edit13.text := 'Показательнаяфункция';

Edit14.text := Excel.ActiveWorkBook.ActiveSheet.Cells[10, 2].value;

Edit15.text := Excel.ActiveWorkBook.ActiveSheet.Cells[10, 3].value;

end;

end

else

begin

if Step > Pokaz then

Begin

Edit13.text := 'Степеннаяфункция';

Edit16.text := floattostr(Step * 100);

Edit14.text := Excel.ActiveWorkBook.ActiveSheet.Cells[9, 2].value;

Edit15.text := Excel.ActiveWorkBook.ActiveSheet.Cells[9, 3].value;

end

else

begin

Edit13.text := 'Показательнаяфункция';

Edit16.text := floattostr(Pokaz * 100);

Edit14.text := Excel.ActiveWorkBook.ActiveSheet.Cells[10, 2].value;

Edit15.text := Excel.ActiveWorkBook.ActiveSheet.Cells[10, 3].value;

end;

end;

end;

Excel.DisplayAlerts := false;

Excel.application.Quit;

end;

/// Кнопка Отмена после регрессионного анализа///

procedure TForm1.Button27Click(Sender: TObject);

begin

Panel19.Visible := false;

Panel19.top := 500;

Panel19.left := 305;

Timer3.Enabled := false;

Button26.Enabled := false;

Edit13.text := 'Нажмитекнопку "Расчет"';

Edit14.text := '';

Edit15.text := '';

Edit16.text := '';

end;

procedure TForm1.QueryServe(Serve: String);

begin

ADOQuery1.close;

ADOQuery1.SQL.text := 'SELECT Подача, Диаметр FROM ' + Serve;

ADOQuery1.ExecSQL;

ADOQuery1.Active := true;

Edit17.text := Serve;

end;

procedure TForm1.Timer3Timer(Sender: TObject);

begin

if Edit17.text <> podacha then

begin

if ToolMaterialCB.ItemIndex = 0 then

case ToolTypeCB.ItemIndex of

0:

QueryServe('CProhodRezTvspl');

1:

QueryServe('CKryglRezTvspl');

2:

QueryServe('CTrehgrRezTvspl');

3:

QueryServe('CRezbRezTvspl');

4:

QueryServe('CProrezRezTvspl');

end;

if ToolMaterialCB.ItemIndex = 1 then

case ToolTypeCB.ItemIndex of

0:

QueryServe('CProhodRezAlmaz');

1:

QueryServe('CKryglRezAlmaz');

2:

QueryServe('CTrehgrRezAlmaz');

3:

QueryServe('CRezbRezAlmaz');

4:

QueryServe('CProrezRezAlmaz');

end;

end;

if Panel15.Visible = true then

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

begin

ADOQuery1.close;

ADOQuery1.SQL.text := 'SELECT * FROM ' + Edit17.text;

ADOQuery1.ExecSQL;

ADOQuery1.Active := true;

DBGrid5.DataSource.DataSet.First;

while not DBGrid5.DataSource.DataSet.Eof do

begin

DBGrid5.DataSource.DataSet.Edit;

tipmodel := DBGrid5.DataSource.DataSet.Fields[2].value;

koeffK := DBGrid5.DataSource.DataSet.Fields[3].value;

koeffC := DBGrid5.DataSource.DataSet.Fields[4].value;

DBGrid5.DataSource.DataSet.Post;

DBGrid5.DataSource.DataSet.Last;

end;

if tipmodel = 'Линейнаяфункция' then

begin

RadioButton4.Enabled := true;

Edit7.Enabled := true;

Edit8.Enabled := true;

Edit7.text := floattostr(koeffK);

Edit8.text := floattostr(koeffC);

RadioButton5.Enabled := false;

RadioButton6.Enabled := false;

Edit9.Enabled := false;

Edit10.Enabled := false;

Edit11.Enabled := false;

Edit12.Enabled := false;

Edit9.text := '';

Edit10.text := '';

Edit11.text := '';

Edit12.text := '';

end;

if tipmodel = 'Степеннаяфункция' then

begin

RadioButton5.Enabled := true;

Edit10.Enabled := true;

Edit9.Enabled := true;

Edit9.text := floattostr(koeffK);

Edit10.text := floattostr(koeffC);

RadioButton4.Enabled := false;

RadioButton6.Enabled := false;

Edit7.Enabled := false;

Edit8.Enabled := false;

Edit11.Enabled := false;

Edit12.Enabled := false;

Edit11.text := '';

Edit12.text := '';

Edit7.text := '';

Edit8.text := '';

end;

if tipmodel = 'Показательнаяфункция' then

begin

RadioButton6.Enabled := true;

Edit11.Enabled := true;

Edit12.Enabled := true;

Edit11.text := floattostr(koeffK);

Edit12.text := floattostr(koeffC);

RadioButton5.Enabled := false;

RadioButton4.Enabled := false;

Edit9.Enabled := false;

Edit10.Enabled := false;

Edit7.Enabled := false;

Edit8.Enabled := false;

Edit9.text := '';

Edit10.text := '';

Edit7.text := '';

Edit8.text := '';

end;

end;

end;

/// Кнопка сохранить изменения (внести изменения в базу данных)///

procedure TForm1.Button26Click(Sender: TObject);

begin

Label99.Enabled := false;

Edit18.Enabled := false;

ADOQuery1.close;

ADOQuery1.SQL.text := 'SELECT * FROM ' + Edit17.text;

ADOQuery1.ExecSQL;

ADOQuery1.Active := true;

DBGrid5.DataSource.DataSet.First;

Label99.Caption := 'Предыдущаямодель';

Edit18.text := DBGrid5.DataSource.DataSet.Fields[2].value;

while not DBGrid5.DataSource.DataSet.Eof do

begin

DBGrid5.DataSource.DataSet.Edit;

DBGrid5.DataSource.DataSet.Fields[2].value := Edit13.text;

DBGrid5.DataSource.DataSet.Fields[3].value := strtofloat(Edit14.text);

DBGrid5.DataSource.DataSet.Fields[4].value := strtofloat(Edit15.text);

DBGrid5.DataSource.DataSet.Post;

DBGrid5.DataSource.DataSet.Last;

end;

ADOQuery1.close;

ADOQuery1.SQL.text := 'SELECT Подача, Диаметр FROM ' + Edit17.text;

ADOQuery1.ExecSQL;

ADOQuery1.Active := true;

end;

/// Кнопкаизменить///

procedure TForm1.Button29Click(Sender: TObject);

begin

Timer3.Enabled := false;

Button28.Enabled := true;

Edit9.Enabled := true;

Edit10.Enabled := true;

Edit7.Enabled := true;

Edit8.Enabled := true;

Edit11.Enabled := true;

Edit12.Enabled := true;

RadioButton4.Enabled := true;

RadioButton5.Enabled := true;

RadioButton6.Enabled := true;

end;

/// Кнопкасохранить///

procedure TForm1.Button28Click(Sender: TObject);

begin

if RadioButton4.Checked = true then

begin

tipmodel := 'Линейнаяфункция';

koeffK := strtofloat(Edit7.text);

koeffC := strtofloat(Edit8.text);

end;

if RadioButton5.Checked = true then

begin

tipmodel := 'Степеннаяфункция';

koeffK := strtofloat(Edit9.text);

koeffC := strtofloat(Edit10.text);

end;

if RadioButton6.Checked = true then

begin

tipmodel := 'Показательнаяфункция';

koeffK := strtofloat(Edit11.text);

koeffC := strtofloat(Edit12.text);

end;

ADOQuery1.close;

ADOQuery1.SQL.text := 'SELECT * FROM ' + Edit17.text;

ADOQuery1.ExecSQL;

ADOQuery1.Active := true;

DBGrid5.DataSource.DataSet.First;

while not DBGrid5.DataSource.DataSet.Eof do

begin

DBGrid5.DataSource.DataSet.Edit;

DBGrid5.DataSource.DataSet.Fields[2].value := tipmodel;

DBGrid5.DataSource.DataSet.Fields[3].value := koeffK;

DBGrid5.DataSource.DataSet.Fields[4].value := koeffC;

DBGrid5.DataSource.DataSet.Post;

DBGrid5.DataSource.DataSet.Last;

end;

Timer3.Enabled := true;

Button28.Enabled := false;

end;

procedure TForm1.Calculate;

begin

Curing;

ProcessingType;

Cooling;

Crust;

DegreeOfWear;

ResistancePeriod;

/// для скорости и твердости в edit и поправочного коэффициента

V := strtofloat(Label58.Caption);

BrinelCuring;

/// расчет оборотов

SpindleSpeed;

end;

/// Открыть отчет///

procedure TForm1.N12Click(Sender: TObject);

begin

Panel12.left := 144;

Panel12.top := 8;

Panel12.Visible := true;

Panel12.SetFocus;

Panel12.Focused;

Memo3.Lines.clear;

/// Формирование отчета///

Memo3.Lines.Add('///______________ОТЧЕТ______________///');

Memo3.Lines.Add(' ');

Memo3.Lines.Add(' ОСНОВНЫЕ ПАРАМЕТРЫ');

Memo3.Lines.Add('Скорость резания:......................' + Label58.Caption +

' м/мин;');

Memo3.Lines.Add('Минутная подача:.......................' + Label59.Caption +

' мм/мин;');

Memo3.Lines.Add('Оборотышпинделя:...................' + SpindleSpeedEdit.Caption +

' об/мин.');

Memo3.Lines.Add('Подача на один оборот:............' + Label61.Caption +

' мм/об;');

Memo3.Lines.Add(' ');

Memo3.Lines.Add(' СВЕДЕНИЯ О МАТЕРИАЛЕ И ИНСТРУМЕНТЕ');

Memo3.Lines.Add(' ');

Memo3.Lines.Add('Обрабатываемый материал:...' + MaterialTypeCB.text + ';');

Memo3.Lines.Add('Компания производитель:.......' + ManufacturerCB.text + ';');

Memo3.Lines.Add('Режущийинструмент:................' +

ToolTypeCB.text + ';');

Memo3.Lines.Add('Диаметррежущегоинструмента(детали): ' + DiameterEdit.text

+ ' мм;');

Memo3.Lines.Add('Материал инструмента:...........' +

ToolMaterialCB.text + ';');

Memo3.Lines.Add(' ');

Memo3.Lines.Add(' ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ');

Memo3.Lines.Add(' ');

Memo3.Lines.Add('Период стойкости инструмента:...........' +

ResistancePeriodCB.text + ' мин;');

Memo3.Lines.Add('Состояния оборудования:.......................' +

DegreeOfWearCB.text + ';');

Memo3.Lines.Add('Твердость после термообработки:......' +

BrinelCuringEdit.text + ' HB;');

if RadioButton2.Checked = true then

Memo3.Lines.Add('Типобработки:............................................'

+ RadioButton2.Caption + ';');

if RadioButton1.Checked = true then

Memo3.Lines.Add('Типобработки:............................................'

+ RadioButton1.Caption + ';');

if RadioButton3.Checked = true then

Memo3.Lines.Add('Типобработки:............................................'

+ RadioButton3.Caption + ';');

if CheckBox2.Checked = true then

Memo3.Lines.Add('У заготовки присутсвует корка;');

if CheckBox2.Checked = false then

Memo3.Lines.Add('Узаготовкиотсутсвуеткорка;');

if CheckBox1.Checked = true then

Memo3.Lines.Add('ОбработкасприменениемСОЖ;');

if CheckBox1.Checked = false then

Memo3.Lines.Add('ОбработкабезСОЖ;');

end;

procedure TForm1.BitBtn17Click(Sender: TObject);

begin

Panel12.Visible:=False;

end;

end.

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


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

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