22840 (Обделка вертикальных стволов), страница 6

2016-07-29СтудИзба

Описание файла

Документ из архива "Обделка вертикальных стволов", который расположен в категории "". Всё это находится в предмете "география" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "география" в общих файлах.

Онлайн просмотр документа "22840"

Текст 6 страницы из документа "22840"

Label1: TLabel;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

DBGrid1: TDBGrid;

Label4: TLabel;

TableSTUFF: TTable;

DataSourceSTUFF: TDataSource;

rxDBFilter1: TrxDBFilter;

DataSourceDATA: TDataSource;

TableDATA: TTable;

TableDATAR: TFloatField;

TableDATAMass: TFloatField;

TableDATAR_press: TFloatField;

TableDATAR_stretch: TFloatField;

TableDATAPuasson: TFloatField;

TableDATAR1: TFloatField;

TableDATARb: TFloatField;

TableDATAA: TFloatField;

TableDATAB: TFloatField;

TableDATAStuff: TSmallintField;

BitBtn1: TBitBtn;

RadioGroup1: TRadioGroup;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

procedure rxDBLookupCombo1Change(Sender: TObject);

procedure DBGrid1DblClick(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses

Draw;

{$R *.DFM}

procedure TForm1.rxDBLookupCombo1Change(Sender: TObject);

var

S: String;

begin

rxDBFilter1.Deactivate;

rxDBFilter1.Filter.Clear;

s:='Stuff = '+TableSTUFF.FieldByName('Code').AsString;

rxDBFilter1.Filter.Add(S);

rxDBFilter1.Activate;

end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);

var

Mass, R_press, R_stretch, Puasson, PuassonP, R1, Rb, R, A, B: Double;

P0, P2: Double;

C1, C2: Double;

K0, K1, K2, K3, K4: Double;

L, L1: Double;

ALFA1, ALFA2: Double;

BETA, BETA1, BETA2: Double;

DELTA1, DELTA2: Double;

GAMMA1, GAMMA2: Double;

D1, D2: Double;

F: Double;

SIGMARS, SIGMARR, SIGMASS, SIGMASR: Double;

i: Integer;

Pkr, PkrOld: Double;

Eo, Ep, J: Double;

procedure Calc;

begin

C1 := R1/Rb;

C2 := R/R1;

F := (C2*C2-1)/(C1*C1-1)*(C2*C2-1)/(C1*C1-1)*

(C2*C2-1)/(C1*C1-1)*(1+B/A);

D2 := (C2*C2+1)*(C2*C2+1)*(C2*C2+1)/(Puasson+1);

D1 := (C1*C1-1)*(C1*C1-1)/(Puasson+1);

DELTA2 := C2*C2*(C2*C2+1);

DELTA1 := C2*C2*(3-C2*C2);

GAMMA2 := C2*C2*(2*C2*C2*C2*C2+C2*C2+1);

GAMMA1 := C2*C2*(3+C2*C2);

BETA := (3+R/Rb*R/Rb)/(3-R/Rb*R/Rb);

BETA2 := C2*C2*C2*C2*(C2*C2+1)-D2+F*(C1*C1+1+D1);

BETA1 := 3*C2*C2-1-D2+F*((3-C2*C2)*C1*C1*C1*C1+D1);

ALFA2 := C2*C2*(2+C2*C2+C2*C2*C2*C2)-

D2+F*(2*C1*C1*C1*C1+C1*C1+1+D1);

ALFA1 := 3*C2*C2+1+D2+F*((C1*C1+3)*C1*C1*C1*C1-D1);

K4 := (ALFA2*DELTA1-ALFA1*DELTA2)/(ALFA2*BETA1-ALFA1*BETA2);

K3 := (ALFA1*GAMMA2-ALFA2*GAMMA1)/(ALFA2*BETA1-ALFA1*BETA2);

K2 := (BETA2*DELTA1-BETA1*DELTA2)/(ALFA2*BETA1-ALFA1*BETA2);

K1 := (BETA1*GAMMA2-BETA2*GAMMA1)/(ALFA2*BETA1-ALFA1*BETA2);

L1 := 4*C2*C2*(C2*C2+1-BETA)-(K1+BETA*K2)*((C1*C1+1)*(C1*C1+1)

+4*C2*C2)+2*(K3+BETA*K4)*((C2*C2+1)*(C2*C2+1)-2);

L := (K1+BETA*K2)*(C1*C1+1)-(K3+BETA*K4);

K0 := 3*C2*C2/((1+B/A)*(C2*C2-1)/(C1*C1-1)*(2+C1*C1)+2*C2*C2+1);

end;

begin

with TableDATA do begin

Mass := FieldByName('Mass').AsFloat;

R_press := FieldByName('R_press').AsFloat;

R_stretch := FieldByName('R_stretch').AsFloat;

Puasson := FieldByName('Puasson').AsFloat;

R1 := FieldByName('R1').AsFloat;

Rb := FieldByName('Rb').AsFloat;

R := FieldByName('R').AsFloat;

A := FieldByName('A').AsFloat;

B := FieldByName('B').AsFloat;

end;

if RadioButton1.Checked then begin

Calc;

if TableDATA.FieldByName('Stuff').AsInteger = 0 {Железо-бетон} then begin

PLines[isP0,1] := (C1*C1-1)*Mass*R_press/2*C1*C1*K0*(1+B/A);

PLines[isP2,1] := (C1*C1-1)*(C1*C1-1)*

Mass*R_press/4*C1*C1*K0*(1+B/A);

PLines[isP0,2] := -(C1*C1-1)*Mass*R_stretch/2*C1*C1*K0*(1+B/A);

PLines[isP2,2] := (C1*C1-1)*(C1*C1-1)*

Mass*R_stretch/4*C1*C1*K0*(1+B/A);

PLines[isP0,4] := (C2*C2-1)*Mass*R_press/(2*C2*C2-K0*

(C2*C2+1));

PLines[isP2,4] := (C2*C2-1)*(C2*C2-1)*Mass*R_press/L1;

PLines[isP0,5] := -(C2*C2-1)*

Mass*R_stretch/(2*C2*C2-K0*(C2*C2+1));

PLines[isP2,5] := (C2*C2-1)*(C2*C2-1)*Mass*R_stretch/L1;

end

else begin {Чугун}

PLines[isP0,1] := (C1*C1-1)*Mass*R_press/2*C1*K0*(1+B/A);

PLines[isP2,1] := (C2*C2-1)*(C2*C2-1)*

Mass*R_press/4*C1*C1*K0*(1+B/A);

PLines[isP0,2] := -(C2*C2-1)*Mass*R_stretch/2*C1*K0*(1+B/A);

PLines[isP2,2] := (C1*C1-1)*(C1*C1-1)*

Mass*R_stretch/4*C1*C1*K0*(1+B/A);

PLines[isP0,4] := (C2*C2-1)*Mass*R_press/(2*C2*C2-K0*

(C2*C2+1));

PLines[isP2,4] := (C2*C2-1)*(C2*C2-1)*Mass*R_press/L1;

PLines[isP0,5] := -(C2*C2-1)*Mass*R_stretch/(2*C2*C2-K0*

(C2*C2+1));

PLines[isP2,5] := (C2*C2-1)*(C2*C2-1)*Mass*R_stretch/L1;

end;

DrawForm.ShowModal;

end

else if RadioButton2.Checked then begin

Calc;

P0 := StrToFloat(Edit1.Text);

P2 := StrToFloat(Edit2.Text);

SIGMARS := ABS(2*C1*C1/(C1*C1-1)*(1+B/A)*(P0*K0+2*P2*L/

(C1*C1-1)));

SIGMARR := ABS(2*C1*C1/(C1*C1-1)*(1+B/A)*(P0*K0-2*P2*L/

(C1*C1-1)));

SIGMASS := ABS(P0/(C2*C2-1)*(2*C2*C2-K0*(C2*C2+1))+P2*L1/

(C2*C2-1)*(C2*C2-1));

SIGMASR := ABS(P0/(C2*C2-1)*(2*C2*C2-K0*(C2*C2+1))-P2*L1/

(C2*C2-1)*(C2*C2-1));

if (SIGMARS>Mass*R_press) or (SIGMARR>Mass*R_stretch) or

(SIGMASS>Mass*R_press) or (SIGMASR>Mass*R_stretch)

then

MessageDlg('Несущая способность не

обеспечена',mtInformation,[mbOk],0)

else

MessageDlg('Несущая способность

обеспечена',mtInformation,[mbOk],0);

end

else begin

i:=1;

PkrOld :=0;

repeat

i := i+1;

Pkr := (i*i-1)*Eo*J/((1-Puasson)*(1-Puasson)*R*R*R)+Ep/(2*

(1+PuassonP))*((i+1)*(i+1)/(i*i*(i-1))+(i-1)*

(i-1)/(i*i*(i+1)*(3-4*PuassonP)));

if Pkr < PkrOld then PkrOld := Pkr else i:=0;

until i = 0;

P0 := StrToFloat(Edit1.Text);

if P0<=Pkr then

MessageDlg('Устойчивость обеспечена',mtInformation,[mbOk],0)

else

MessageDlg('Устойчивость не

обеспечена',mtInformation,[mbOk],0);

end;

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

Label2.Visible := False;

Label3.Visible := False;

Edit1.Visible := False;

Edit2.Visible := False;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

Label2.Visible := True;

Label3.Visible := True;

Edit1.Visible := True;

Edit2.Visible := True;

end;

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

Label2.Visible := True;

Label3.Visible := False;

Edit1.Visible := True;

Edit2.Visible := False;

end;

end.

unit Draw;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;

type

TDrawForm = class(TForm)

BitBtn1: TBitBtn;

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

TPaintData = (isP0,isP2);

TDiagramArray = Array[TPaintData,1..5] of Double;

var

PLines : TDiagramArray;

DrawForm: TDrawForm;

implementation

{$R *.DFM}

procedure TDrawForm.FormActivate(Sender: TObject);

var

R: TRect;

MaxX, MinX: Double;

MaxY, MinY: Double;

Nx, Ny: Integer;

Kx, Ky: Double;

i: Byte;

PointMin, PointMax: Double;

procedure DrawLine(X0, k, b:Double);

begin

Canvas.MoveTo(R.Left+60+Round(Kx*X0),R.Bottom-30);

if k<0 then

Canvas.LineTo(R.Left+60,Round(R.Bottom - 33 -

(Ky*(b+(k*(10)/Kx)))))

else

Canvas.LineTo(R.Right-10,Round(R.Bottom - 33 -

(Ky*(-b+(k*((R.Right-R.Left-70)/Kx))))));

end;

begin

PLines[isP0,3] := 0;

PLines[isP2,3] := 0;

MaxX := 0.0;

MinX := 0.0;

MaxY := 0.0;

MinY := 0.0;

for i := 1 to 5 do begin

if PLines[isP0,i] > MaxX then MaxX := PLines[isP0,i];

if PLines[isP2,i] > MaxY then MaxY := PLines[isP2,i];

if PLines[isP0,i] < MinX then MinX := PLines[isP0,i];

if PLines[isP2,i] < MinY then MinY := PLines[isP2,i];

end;

if MaxX > 200 then Nx := 100 else Nx := 10;

MaxX := Round(MaxX/Nx)*Nx+Nx;

if MaxY > 200 then Ny := 100 else Ny := 10;

MaxY := Round(MaxY/Ny)*Ny+Ny;

with DrawForm do begin

Canvas.Pen.Color := clBlack;

R.Left := 10;

R.Top := 10;

R.Right := Width - 15;

R.Bottom := Height - 70;

Canvas.FrameRect(R);

Canvas.Brush.Color := clBtnFace;

Kx := (R.Right - R.Left - 80)/MaxX;

Ky := (R.Bottom - R.Top - 80)/MaxY;

{Ось Po}

Canvas.MoveTo(R.Left+10,R.Bottom-30);

Canvas.LineTo(R.Right-10,R.Bottom-30);

{Ось P2}

Canvas.MoveTo(R.Left+60,R.Top+30);

Canvas.LineTo(R.Left+60,R.Bottom-30);

i := 0;

while i*Nx

Inc(i);

Canvas.MoveTo(R.Left+60+Round(Kx*i*Nx),R.Bottom-33);

Canvas.LineTo(R.Left+60+Round(Kx*i*Nx),R.Bottom-27);

Canvas.TextOut(R.Left+50+Round(Kx*i*Nx), R.Bottom-20,

IntToStr(i*Nx));

end;

i := 0;

while i*Ny

Inc(i);

Canvas.MoveTo(R.Left+63,R.Bottom-30-Round(Ky*i*Ny));

Canvas.LineTo(R.Left+57,R.Bottom-30-Round(Ky*i*Ny));

Canvas.TextOut(R.Left+30, R.Bottom-35-Round(Ky*i*Ny),

IntToStr(i*Ny));

end;

if PLines[isP0,1] > PLines[isP0,4] then

PointMax := PLines[isP0,4]

else PointMax := PLines[isP0,1];

if PLines[isP0,2] > PLines[isP0,5] then

PointMin := PLines[isP0,2]

else PointMin := PLines[isP0,5];

if PointMin < 0 then PointMin := 0.0;

DrawLine(PLines[isP0,1],

-(PLines[isP2,1]/PLines[isP0,1]),PLines[isP2,1]);

DrawLine(PLines[isP0,2],

-(PLines[isP2,2]/PLines[isP0,2]),PLines[isP2,2]);

DrawLine(0,1,0);

DrawLine(PLines[isP0,4],

-(PLines[isP2,4]/PLines[isP0,4]),PLines[isP2,4]);

DrawLine(PLines[isP0,5],

-(PLines[isP2,5]/PLines[isP0,5]),PLines[isP2,5]);

Canvas.Brush.Color := clGreen;

Canvas.FloodFill(Round((((PointMax-PointMin)/2)*Kx)+R.Left+60),

R.Bottom-55, clBlack, fsBorder);

Canvas.Brush.Color := clBtnFace;

Canvas.TextOut(R.Right-80, R.Bottom-50, 'P0, TC/M*2');

Canvas.TextOut(R.Left+20, R.Top+10, 'P2, TC/M*2');

end;

end;

end.

unit Edittub;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,

Controls,Forms, Dialogs, DBFilter, DB, DBTables, Grids, DBGrids,

RXLookup, ExtCtrls, DBCtrls;

type

TEditDataForm = class(TForm)

Panel1: TPanel;

rxDBLookupCombo1: TrxDBLookupCombo;

TableSTUFF: TTable;

DataSourceSTUFF: TDataSource;

DBGrid1: TDBGrid;

DataSourceDATA: TDataSource;

TableDATA: TTable;

TableDATAMass: TFloatField;

TableDATAR_press: TFloatField;

TableDATAR_stretch: TFloatField;

TableDATAPuasson: TFloatField;

TableDATAR1: TFloatField;

TableDATARb: TFloatField;

TableDATAR: TFloatField;

TableDATAA: TFloatField;

TableDATAB: TFloatField;

rxDBFilter1: TrxDBFilter;

TableDATAStuff: TSmallintField;

DBNavigator1: TDBNavigator;

procedure rxDBLookupCombo1Change(Sender: TObject);

procedure DBNavigator1Click(Sender: TObject; Button:

TNavigateBtn);

procedure DBGrid1DblClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

EditDataForm: TEditDataForm;

implementation

{$R *.DFM}

uses

EditForm;

procedure TEditDataForm.rxDBLookupCombo1Change(Sender: TObject);

var

S: String;

begin

rxDBFilter1.Deactivate;

rxDBFilter1.Filter.Clear;

s:='Stuff = '+TableSTUFF.FieldByName('Code').AsString;

rxDBFilter1.Filter.Add(S);

rxDBFilter1.Activate;

end;

procedure TEditDataForm.DBNavigator1Click(Sender: TObject; Button:

TNavigateBtn);

begin

case Button of

nbInsert:

begin

EditDataTub(TableDATA, True,

TableSTUFF.FieldByName('Code').AsInteger);

end;

nbEdit:

begin

EditDataTub(TableDATA, False,

TableSTUFF.FieldByName('Code').AsInteger);

end;

end;

end;

procedure TEditDataForm.DBGrid1DblClick(Sender: TObject);

begin

EditDataTub(TableDATA, False,

TableSTUFF.FieldByName('Code').AsInteger);

end;

end.

unit Editform;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, ExtCtrls, DB,

DBTables, Buttons;

type

TEdTubForm = class(TForm)

DataSource1: TDataSource;

Panel1: TPanel;

DBEdit1: TDBEdit;

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5231
Авторов
на СтудИзбе
425
Средний доход
с одного платного файла
Обучение Подробнее