Реферат: Технология строительства метрополитена

<u/>

 

Оглавление.

 

 

1. Аннотация (Annotation)

стр.

2

2. Общий раздел

3

          2.1. История развития метрополитена. Метрополитен                     сегодня.

4

          2.2. Введение.

8

            2.3. Горно-геологические условия строительства.

9

            2.4. Выбор и расчет сечения вертикального ствола.

10

            2.5. Расчет паспорта буро-взрывных работ.

12

            2.6. Расчет параметров замораживания массива.

14

          2.7. Технология ведения работ по замораживанию породного массива.

17

            2.8. Производство горнопроходческих работ.

19

3. Основная часть.

21

          3.1. Нагрузки от горного давления на обделки вертикальных стволов метрополитенов.

22

          3.2. Проверка несущей способности тюбинговых обделок  вертикальных стволов метрополитенов.

29

          3.3. Расчет параметров и построение паспорта прочности       несущей способности тюбинговых обделок вертикальных стволов метрополитенов.

32

          3.4. Проверка устойчивости тюбинговых обделок вертикальных стволов метрополитенов.

35

4. Приложения.

36

4.1. Программа для проверки несущей способности и построения паспорта прочности тюбинговых обделок вертикальных стволов метрополитенов.

37

5. Список используемой литературы.

57

 

 

2.Общий раздел

 

 

2.1. ИСТОРИЯ РАЗВИТИЯ МОСКОВСКОГОМЕТРОПОЛИТЕНА. МЕТРОПОЛИТЕН СЕГОДНЯ.

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

К началу прошлого столетия,когда появились метрополитены, население самого  крупного города планеты — Лондона достигло миллиона человек (в 1800 г. — 950 тыс., а уже в 1801 г. — 1млн.145 тыс.чел) и продолжало возрастать.

Нашествие Наполеонапревратило пылающую столицу в  почти  безлюдный город. Но всего два года спустягород стал быстро оживать. В английской столице в 1814 году Александру Iпредставили члена  Лондонского королевского общества, талантливого военногоинженера Марка Брюнеля.  Речь зашла о насущной проблеме  устройства  постояннойшоссейной переправы через р.Неву в Петербурге,  в результате чего с Брюнелембыл заключен контракт на ее проектирование. Начатую в 1814 г. работу  он передал русским заказчикам в начале 20-х гг.  в двух вариантах: мостовом итоннельном. Вариант подводного тоннеля возник вследствие опасения разрушенияопор моста плывущими льдинами. В основе проекта оказалось замечательноеизобретение  -  тоннелепроходческий щит,  ставший  впоследствии  наиболее эффективным средством метростроения не только в России и Англии,  но и во всеммире. Идея возникла при наблюдении за морским моллюском-древоточцем,  пробуривавшимсвоей раковиной отверстия в обломках затонувшего корабля.  В первых эскизахБрюнель представил механическую копию такого цилиндрического червя для бурениятоннелей со сборной  тюбинговой  обделкой, монтируемой  по спирали,  — настоящего предшественника будущих механизированных щитов. Брюнеля не отпустилив Россию.  Страну, с которой он имел официальные деловые связи, и, лишившисьподдержки скончавшегося в 1825 г. Александра I,  он остался в Лондоне. Брюнельпереработал чертежи применительно к местным условия р.Темзы, сходным с Невой.

В 1863 г.  произошло главноесобытие в истории метростроения — пуск первого в мире 3,6-километровогоподземного участка внеуличной железной дороги в Лондоне. В 1863 г.парламентская комиссия одобрила сооружение подземной кольцевой линии общейпротяженностью 30 км. Она откралась в 1884 г.

Большое внимание привлеклапостройка первой  электрофицированной линии в Париже, с которой моглиознакомиться многочисленные посетители Всемирной выставки 1900 г.  Активное участие  в  создании этой и нескольких последующих линий принимал русскийинженер, энтузиаст отечественного метростроения С.Н.Розанов.

Наступило время увереннойпрокладки подземных линий метрополитенов в Берлине,  Гамбурге, Филадельфии,Мадриде, Барселоне, Токио. Началась борьба за метрополитен в Петербурге иМоскве.

Перед первой мировой войнойтранспортный кризис в Москве резко обостирлся, в результате чего появилосьнесколько новых предложений метрополитена, инициированных Городской Управой.Населенность Москвы к 1915 г.  достигла двухмиллионой отметки и, казалось, чтопроблема приобретает облик реальности,  но помешали военные и революционныесобытия, преобразовавшие страну.

Для быстрейшеговосстановления  городского  коммунального  хозяйства в Москве было созданоуправление МКХ.  Работу в нем возглавили опытные инженеры К.С.Мышенков  и С.Н.Розанов,  перешедшими  в 1931 г. в организованный «Метрострой».Проходка в этом же году началась с опытного участка по рабочим чертежамТехнического отдела Управления Метростроя,  а затем — Метропроекта, выпущеннымпод руководством проф.В.Л.Николаи.  Постройка первого в  мире Лондонского ипервого в нашей стране осуществлялась по чертежам,  разработанным еще досоздания строительных  организаций: в Лондоне — Брюнеля, а в Москве — опытноготоннеля С.Н.Розанова.

Сооружение линии  1 очередивелось с неподдельным энтузиазмом, а пуск первого в России метрополитенаознаменовался,  как подлинный праздник.

Сегодня невозможно себепредставить нашу  столицу  без  самого быстрого и эффективного городскоготранспорта — метрополитена.  Общая длина подземных магистралей превысила 250 кми продолжает  расти. Ежедневные  перевозки  достигли  8,7 млн.  пассажиров. Все это обеспечивается неустанным трудом 30-тысячного коллектива метрополитена.

Московский метрополитен — первенец отечественного  метростроения -  с момента своего открытия в 1935 годузанимает ведущее положение в отрасли,  являясь флагманом научно-техническогопрогресса в системе метрополитенов страны.

В жизни крупнейших городовмира,  в том числе и Москвы, метрополитен является  наиболее  удобным  длянаселения видом городского пассажирского транспорта.  15 мая 1995 г.исполнилось 60 лет со дня открытия движения поездов на первой линии Московскогометрополитена протяженностью 11,2 км с 13 станциями.

С тех  пор метрополитенпостоянно развивался,  совершенствовалось его сложное хозяйство. Сегодняэксплуатационная  длина  9  линий достигла 243,6 км со 150 станциями.

С увеличением протяженноститрассы постоянно возрастал и объем перевозок пассажиров: в 1935 г.среднесуточные показатели составляли 177 тыс., а в 1994 г. 8723 тыс.человек. Внастоящее время на долю метрополитена приходится 51,7 % объема всехпассажирских перевозок города.  Максимальная интенсивность движения — 42 пары8-вагонных составов в час, интервал между поездами 85 секунд (Замоскворецкаялиния). Такой интенсивности движения нет ни на одном метрополитене мира. Крометого,  заполняемость вагонов значительно превышает допустимые нормы,  чтоотрицательно сказывается на надежности  устройств вагонов, пути и,  в конечномсчете,  на выполнении графика движения поездов.

По оценкам специалистов,метрополитену для полного обеспечения потребности столицы в перевозкахпассажиров неддостает около 100 км линий, В настоящее время плотность сети метрополитенана 1 км2 площади города составляет 0,26 км, в то время как вНью-Йорке этот показатель равен 0,5, в Лондоне — 1,2, в Париже — 2,8 км.

За 60 лет: перевезено более86 миллиардов пассажиров; пропущено около  111  миллионов  поездов,  из которых 99,93 % проследовало строго по графику; сэкономлено электроэнергии 515миллионов кВтч.

Среди метрополитеновРоссийской Федерации среднесуточная перевозка пассажиров  Московского метрополитена составляет около 80 %, что почти в 5,4 раза выше среднесуточнойперевозки С.-Петербургского и в 29 раз — Новосибирского метрополитенов.

МЕТРОПОЛИТЕН В ЦИФРАХ

Показатели

15 мая

1935 г.

15 мая

1995 г.

Протяженность линий, км 11,2 243,6 Их количество 1 9

Количество станций          

в том числе:                             

     — пересадочных

     — оборудованных эскалаторами

13

-

4

150

49

107

Количество вестибюлей 16 232 То же, эскалаторных машин 15 508 Протяженность лестничного полотна эскалаторов, км 1.5 55.2 Развернутая длина тоннелей, км 13.01 521.6 То же, пути, км 30.08 703.7 Среднесуточная перевозка пассажиров, тыс. чел. 177 8723 Годовой объем перевозки, млн. чел. 110.7 3183.9 Удельный вес в общегородских перевозках, % 2 51.7 Количество вагонов 58 4060 Максимальное число вагонов в составе 4 8 Максимальная частота движения поездов, пар/час 15 42 Минимальный интервал между поездами 5 мин. 85 сек Пропуск поездов в среднем за сутки (проезд) 487 7870 Конструктивная скорость движения, км/ч 50 90 Средняя эксплуатационная, км/ч 26.7 41 Удельный расход электроэнергии, кВтч/тыс.тн.-км 67.2 55.5 Численность работников по эксплуатации, чел 1991 24615 То же на 1 км пути, чел 181 104.3

 

 

 

 

 

 

 

 

 

 

 

2.2. Введение.

 

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

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

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

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

2.3. Горно-геологические условия строительства.

 

Горно-геологический районстроительства вертикального ствола круглой формы диаметром в проходке 6 м иглубиной 45 м состоит из водоносных песчаных и глинистых грунтови известняков:

— Рыхлые горные породы,галька, щебень, песок.

— Наносы, слежавшиеся грунты,пластичные глины, известняк белый мелкокристаллический.

Абсолютная отметка устьяствола 131 м. Глубина ствола 45м.

Мощности пластов песка />, глины /> и известняка /> равны соответственно 10, 15и 25 м.

Пористость песка, глины иизвестняка равны соответственно 38,  40 и 39%, а весовые влажности — 17, 22 и20%.

Удельные веса песка, глины иизвестняка равны соответсвенно 19, 19.6 и 21 Н/м3.

Начальная температура грунтаи температура замерзания равны соответственно />=+120С и />=00С.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.4. Выбор и расчет сечения вертикального ствола.

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

Определяем часовую производительностьподъема:

AЧ=/>, т/час,

где кр=1.5- коэффициент неравномерности подъема;

N=300 — число рабочих дней в году;

t=16 — ч/сут — время работы в сутки;

АГ — годовой объем грунта выдаваемый из ствола, АГ»100000 м3.

AЧ=/> т/час.

Определяем массу грузавыдаваемого за один раз:

/> AЧ, т,

где /> - высота подъема, м;

НСТ=45 м — глубина ствола;

h1=8.1 м — высота откаточного горизонта;

/> м;

q=12 сек — время разгрузки-загрузки клети.

/> т.

Определяем объем одновременноподнимаемого груза:

/>,м3,

где g=1.9 ¸ 2.1 т/м3 — средняя плотность выдаваемойпороды.

/> м3.

По полученной грузоподъемностивыбираем:

  — вагонетка УВГ — 1.6:

              вместимостькузова 1.6 м3;

              габариты — 850´1300´2700 мм;

              ширина колеи — 600 мм;

  — клеть марки 1УКН3.3Г-2, сразмерами:

              ширина — 1000мм:

              высота — 3040мм:

              длина — 3300мм;

  — подъемная машина марки2БМ-2000/1030-3А:

              двухбарабанная;

              диаметр каната =24мм;

              высота подъема- 170 м;

              потребляемаямощность — 90 кВт;

              масса машины — 31100 кг.

Произведем выбор армирующихэлементов.

В качестве проводниковпринимаем сосновый брус 160´180 мм. Расстреламипринимаем балки из двутавра №24.

Учитывая всеминимально-допустимые зазоры:

  — зазоры между расстреламии клетью — 200 мм;

  — зазоры между проводникамии направляющими башмаками клети — 10 мм;

  — зазор между углом клети иобделкой — 150 мм;

и размеры лесоспуска 1.5 м2,и лестничного отделения — 0.6´0.7 м, а так же учитываятолщину тюбингового кольца обделки, графически определяем искомое сечениествола.

Ближайшим к типовому сечениюствола является сечение ствола с наружним диаметром по обделке 6.0 м.

Принимаем DСТВ=6.0м.

2.5. Расчет паспорта буро-взрывных работ.

Определим удельный расходвзрывчатого вещества и примем его тип. При данных горно-геологических условияхстроительства наиболее целесообразно применить аммонит №6ЖВ, в патронахдиаметром 32 мм. Электродетонаторы типа ЭДКЗ-ПМ-15 с сериями замедления — 0;0.15; 0.30; 0.45; 0.60 сек.

/>,кг/м3,

где q1=0.1f,где f=4 — крепость вмещающих пород по профессору Протодьяконову;

/>,

/>

/>,

где Sпрох — сечение ствола в проходке

/>ВЧ/> м2

Sвч=28.26м2

/>

/> -коэффициент работоспособности;

/>

/> кг/м3.

Определим количество шпуров всечении

/>,

где

  />

  />

  />

  />

/> шпуров.

Определим и зададим остальныепараметры буро-взрывных работ:

  глубина шпура — /> м;

  глубина заходки — /> м;

  КИШ=0.8 (/>);

Определим расход взрывчатоговещества за цикл:

/>,

/> кг/цикл.

Заряжание шпуров призводитсяследующим образом:

в центральный (буферный) шпур заряжается одна шашкамассой 250 грамм, во врубовые — 3 шашки, в отбойные — 2 шашки. Общее числошашек — 98 штук. Взрывание производится методом обратного инициирования. Материалзабойки — песок средних фракций. Взрывание производится с четырьмя степенямизамедления.

2.6. Расчет параметров замораживания массива.

 

Расчет ледогрунтового ограждения.

Расчет толщины ледогрунтовогоограждения производим по формуле Ляме.

/>,

где /> м — радиус ствола впроходке;

/> МПа — допустимый предел прочности замороженных породна сжатие;

/> - коэффициент запаса прочности при сжатии, равный2-5.

/> - давление массива на ледогрунтовое ограждение, где

/> - удельный вес грунта, т/м3;

/> м — глубина замораживания;

/> МПа

/> м.

Расчет диаметра замораживания и числа замораживающих

 

Число колонок

/>,

где />;

/> м — диаметр ствола;

/> - глубина замораживания;

/> м

/> колонки,

где /> м — расстояние междуколонками.

Расчет хладопроизводительности замораживающей станции.

 

/>,

где /> ккал/час,

где /> м — диаметр замораживающейколонки;

/> - глубина замораживания;

/> ккал/м2.час

/> ккал/час

/> ккал/час

Таким образом исходя изполученной хладопроизводительности принимаем установку замораживания ПХУ-50.

Технические характеристики ПХУ-50:

— хладопроизводительность при

  /> и/>       — 203 ккал/час;

— общая установленнаямощность электродвигателя — 105 кВт;

— хладагент — фреон;

— одновременная зарядкахладоном R-22 — 550 кг;

— рабочее давлениеохлаждающей воды — 0.4 МПа;

— зарядка системы CaCl2 — 1.6 т.

На время эксплуатациииспользуются четыре станции ПХУ-50, одна из которых резервная, но иногдавключается в работу.

Расчет времени активного замораживания.

 

/>,сут,

где />, где

/> - объем породного цилиндра;

/>

/> м3

/>,

где />

/> м3

/>

/> -пористость

/> ккал/0С.кг

/> кг/м3

/>

/>

/> ккал/м3

/>,где

/> ккал/кг

/> ккал/кг

/>

/>

/> кг/м3

/> ккал/0С.кг

/>

/> ккал/м3

/>

/> м3

/> кг/м3

/> ккал/0С.кг

/> ккал/м3

/> ккал/м3

/> ккал/м3

/>

/> ккал/м2.час

/> м2

/> ккал

/> сут

Таким образом время активногозамораживания равно 23 суткам, так как необходимое время на подключение ипроверку хладопроизводительной станции около 7 дней.

Во время пассивного режимазамораживания хладопроизводительность станции берется равной 35% от активногорежима замораживания, что обеспечивается постоянной работой одной станцииПХУ-50 с периодическим подключением еще одной ПХУ-50.

2.7. Технология ведения работ по замораживанию породногомассива.

 

Сооружение ствола начинаетсяс возведения форшахты, которая выполняет роль оголовка ствола. Сначалаотрывается котлован на глубину 4 м и на бетонную подготовку толщиной 15 смводружаются четыре тюбинговых кольца ствола. Далее, предварительно вставивкондуктора под бурение замораживающих скважин, из труб диаметром 219 мм взатюбинговое пространство закачивается бетон марки В25. После схватываниябетона приступают к бурению замораживающих скважин диаметром 300 мм. Бурениеосуществляется станком СБУ-150 с глинистым пригрузом. Замораживающие скважинызаглубляются в водоупор не менее чем на 4 метра. Буровые работы производятся вследующей последовательности:

  — бурение замораживающих,дополнительных и термометрических скважин;

  — цементация затрубногопространства замораживающих и термометрических скважин; перед опусканием вскважину замораживающей колонки ее обязательно промывают водой;

  — по окончании проходкиствола все пробуренные скважины тампонируются или цементируются.

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

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

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

За время работы станции,осуществляются следующие виды контроля:

  — контроль за работойзамораживающей станции;

  — контроль за работойзамораживающих колонок;

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

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

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

2.8. Производство горно-строительных работ.

 

После создания ледогрунтовогоограждения приступают к проходке ствола.

В зоне мягких породразработка ведется вручную или отбойными молотками МО-10. При пересечениикрепких замороженных пород разработку ведут буро-взрывным способом. Шпуры бурятручными перфораторами марки ПР-30К. Взрывные работы проводятся малыми заходкамис максимальной осторожностью, чтобы не повредить ледогрунтовое ограждение изамораживающие колонки.

Погрузка породы производитсяэкскаваторным рабочим органом на подвесном проходческом полке в бадьи объемом 1м3, которые выдаются на поверхность и разгружаются в породныебункера.

После зачистки ипроветривания забоя после взрыва приступают к возведению постоянной обделки.

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

Гидроизоляция сборныхтюбинговых обделок состоит в  герметизации швов  между элементами обделки,болтовых отверстий и отверстий для нагнетания.

Последовательность ведениягидроизоляционных работ в стволе с чугунной тюбинговой обделкой:

  — проверка гидроизоляцииболтовых отверстий;

  — изоляция отверстий длянагнетания;

  — чеканка швов междутюбингами.

Гидроизоляцию болтовыхотверстий  выполняют  с  использованием гидроизоляционных шайб ( асбобитумныхили полимерных ),  устанавливаемых при сболчивании тюбингов. Отверстия длянагнетания очищают и изолируют постановкой  пробки  с гидроизоляционнойасбобитумной или пластмассовой шайбой.

Гидроизоляция швов чугуннойтюбинговой обделки  осуществляется на расстоянии  30-50  м от забоя путемзаполнения чеканочных канавок гидроизоляционными материалами с последующей их чеканкой.  Укладку замазки и чеканку швов ведут в два-три слоя толщиной по 2 смучастками длиной по 3-4 м.  Гидроизоляционные работы ведут с  чеканочнойтележки.

При большом  гидростатическомдавлении для чеканки швов применяют свинцовую проволоку или освинцованный  шнур. Стыки  проволоки или шнура  выполняют  внахлёстку.  После чеканки шнура через8-24 ч поверх свинца укладывают замазку из водонепроницаемого  расширяющегосяцемента (ВНЦ) или быстротвердеющего уплотняющего состава (БУС).

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

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

Особое внимание при работе внизких температурах следует уделить пневмоинструменту:

  — перфораторам;

  — отбойным молоткам;

  — болтокрутам;

  — пескоструйным шлифмашинами т.д.

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

Далее все проходческоеоборудование демонтируется и ствол оборудуется постоянным клетевым подъемом.

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

После проведения всех мергидроизоляции, армировке и оборудованию ствола, ствол сдается в эксплуатацию.

Общие сроки строительства ствола- четыре месяца.

После окончания эксплуатацииствола, он или забучивается или служит для вентиляции подземного сооружения.

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Основная часть

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.1. Нагрузки от горного давления на обделки вертикальныхстволов метрополитенов.

 

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

Наиболее неблагоприятныминагрузками по условию прочности и деформируемости обделки являются нормальные кконтуру /> и касательные к контуру /> нагрузки вида (см. лист 1):

/>

/>

где /> - полярный угол (см. лист1), отсчитываемый от точки приложения максимальных нагрузок />.

Соотношения между экстремальныминагрузками /> и /> (см. лист 1) и величинами /> и /> определяются выражениями:

/>

/>

/>

/>

Соотношения междумаксимальными /> и минимальными /> нагрузками по контуруствола характеризуются коэффициентом неравномерности /> равным:

/> 

Значения коэффициентанеравномерности при обычном способе проходки ствола составляют:

  — на протяженных участкахне выше 20 м — />;

  — вблизи сопряжений до 20 ми при наличии геологических нарушений — />;

  — на участках примыкающих кдневной поверхности — />.

Максимальные касательныенапряжения /> на контакте системы“порода-обделка” определяются по формуле:

/>

где /> - коэффициент, зависящий отдеформативных свойств системы  “порода-обделка” и отношения наружного радиусаобделки /> к его внутреннему радиусу />.

Параметр /> можно определить по формулеили по таблице 1:

/>,

где /> и /> - соответственно модульдеформации обделки и породы.

Таблица 1.

Значения параметра />.

r/rв

/> при G0/Gn

0.10 1.0 10 50 100 250 500 1.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 1.05 2.161 2.162 2.167 2.186 2.212 2.287 2.430 1.10 2.350 2.352 2.388 2.555 2.795 3.744 7.127 1.15 2.582 2.584 2.703 3.398 7.744 --- --- 1.20 2.815 2.846 3.177 5.751 --- --- ---

1. Участки ствола в наносах, слабых сыпучих иливыветренных грунтах.

 

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

Расчетная максимальнаянагрузка /> на обделку стволаопределяется по формуле:

/>,

где /> - коэффициент перегрузки,принимаемый равным />;

/> - коэффициент, учитывающий неравномерность нагрузкиза счет близости рассматриваемого участка с координатой /> к сопряжению сгоризонтальной выработкой: при /> - />, при /> - />.

Нормативная нагрузка отгорного давления /> в выветренныхпородах определяется по формуле или из таблицы 2:

/>,

где /> - глубина заложениярассматриваемого участка ствола;

/>;

/> - нормативное значение угла внутреннего трениягрунта, принимаемое для песчаных и глинистых грунтов по таблице 3 (составленана основании СНиП II-15-74 “Основания зданий и сооружений. Нормыпроектирования”).

Примечание: для промежуточныхзначений /> и /> величина /> может определяться линейныминтерполированием данных по таблице 2.

Таблица 2.

Значения нормативной нагрузки от горного давления /> на обделку ствола внаносах, слабых сыпучих или выветренных коренных породах в зависимости отглубины, радиуса и грунтовых условий.

H/r

/>/gr

j=50

j=100

j=150

j=200

j=250

j=300

j=350

j=400

0.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.50 0.4042 0.3260 0.2618 0.2084 0.1653 0.1293 0.0997 0.0753 1.00 0.7843 0.6132 0.4767 0.3662 0.2807 0.2114 0.1563 0.1131 1.75 1.3238 0.9965 0.7448 0.5477 0.4031 0.2902 0.1919 0.1613 2.50 1.8363 1.3405 0.9700 0.6888 0.4906 0.3411 0.2327 0.1553 3.75 2.6178 1.8540 1.2845 0.8701 0.5937 0.3950 0.2586 0.1664 5.00 4.4198 2.3149 1.5485 1.0220 0.6664 0.4288 0.2727 0.1716 6.25 4.1619 2.7383 1.7780 1.1240 0.7214 0.4521 0.2814 0.1742 7.50 4.8802 3.1327 1.9822 1.2197 0.7945 0.4691 0.2871 0.1757 8.75 5.5786 3.5038 2.1671 1.3022 0.8000 0.4820 0.2911 0.1767 10.0 6.2603 3.8553 2.3367 1.3979 0.8296 0.4921 0.2940 0.1774 15.0 8.8574 5.1213 2.9069 1.6302 0.9131 0.5176 0.3002 0.1786

Нормативная нагрузка отгорного давления /> в слабых сыпучихпородах определяется по формуле:

/>.

Нормативная дополнительнаянагрузка /> на обделку ствола,вызванная весом наземных зданий, сооружений или оборудования учитывается, еслинагружающий объект отстоит от контура ствола не дальше чем на /> (/>, см. лист 1). При этомобязательно определение для участка ствола при />.

Таблица 3.

Нормативные значения угла внутреннего трения />, град, для песчаных иглинистых грунтов.

Виды грунтов

Значения /> при к — те пористости /> 

0.45 0.55 0.65 0.75 0.85 0.95 1.05 Пески гравелистые и крупные

430

400

380

--- --- --- --- Пески средней крупности

400

380

350

--- --- --- --- Пески мелкие

380

360

320

280

--- --- --- Пески пылеватые

360

340

300

260

--- --- --- Супеси (консистенция  0 — 0.25)

300

290

270

--- --- --- --- Супеси (консистенция  0.25 — 0.75)

280

260

240

210

--- --- --- Суглинки (консистенция  0 — 0.25)

260

250

240

230

220

200

--- Суглинки (консистенция  0.25 — 0.5)

240

230

220

210

190

170

--- Суглинки (консистенция  0.5 — 0.75) --- ---

190

180

160

140

120

Глины (консистенция  0 — 0.25) ---

210

200

190

180

160

140

Глины (консистенция  0.25 — 0.5) --- ---

180

170

160

140

110

Глины (консистенция  0.5 — 0.75) --- ---

150

140

120

100

70

Нормативная дополнительная нагрузка/> по глубине ствола приналичии одной пригрузки (см. лист 1) или нескольких, центры тяжести которыходинаково удалены от ствола и лежат на перпендикулярных друг другу осях,определяются по формуле:

/>,

где /> - расстояние от внешнегоконтура ствола до наиболее удаленной точки нагружающего объекта;

/> - средний поперечный размер нагружающего объекта;

/> - вес нагружающего объекта.

Дополнительную нагрузку /> можно также определять поданным таблицы 4 в зависимости от глубины ствола, его радиуса и грунтовыхусловий по формуле, используя для промежуточных значений /> и /> линейную интерполяцию:

/>,

в которой

/>

и где значение безразмерногопараметра

/>

в зависимости от грунтовых условий и отношения /> приведены в таблице 4.

Таблица 4.

Значения безразмерного параметра /> в зависимости от глубиныствола, его радиуса и грунтовых условий.

H/r

/>

j=50

j=100

j=150

j=200

j=250

j=300

j=350

j=400

0.00 0.8396 0.7041 0.5871 0.4903 0.4059 0.3334 0.2710 0.2174 0.50 0.7812 0.6077 0.4680 0.3571 0.2708 0.2008 0.1454 0.1022 1.00 0.7415 0.5451 0.3945 0.2800 0.1973 0.1340 0.0878 0.0543 1.75 0.6994 0.4817 0.3240 0.2107 0.1356 0.0825 0.0475 0.025 2.50 0.6688 0.4376 0.2780 0.1685 0.1006 0.0558 0.0288 0.0135 3.75 0.6317 0.3873 0.2280 0.1258 0.680 0.033 0.0147 0.0057 5.00 0.6046 0.3523 0.1954 0.1002 0.0500 0.021 0.0086 0.0029 6.25 0.5834 0.3261 0.1722 0.0830 0.0387 0.0157 0.0055 0.0016 7.50 0.5661 0.3055 0.1541 0.0708 0.0311 0.0117 0.0038 0.0010 8.75 0.5516 0.2887 0.1410 0.0616 0.0258 0.0091 0.0027 0.0006 10.0 0.5392 0.2741 0.1300 0.0540 0.0218 0.0073 0.0020 0.0004 15.0 0.5022 0.2352 0.1006 0.0372 0.0129 0.0036 0.0008 0.0001

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

Если же пригрузки имеютразличный вес, но расположены на равном расстоянии /> отконтура ствола, в формуле подставляется большее значение />.

Если же пригрузки имеютразличный вес и расположены на различных расстояниях от контура ствола, расчетведется для каждой пригрузки в отдельности и в расчет принимается наибольшее изполученных значений />.

При наличии несколькихпригрузок, центры тяжести которых пересекаются относительно центра сеченияствола под углами меньшими 900 и составляют соответственно углы />, наибольшая дополнительнаяравнодействующая нагрузка /> определяетсяпо формуле:

/>,

где /> - порядковый номернагружающего объекта;

/> - дополнительные нагрузки от /> - й пригрузки определяемыепо формулам при соответствующих значениях />;

/> - угол, соответствующий расчетному направлениюприложения наибольшей равнодействующей нагрузки, определяемой по формуле:

/>.

2. Участки ствола в коренных породах.

 

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

 Средняя нормативнаянагрузка  на обделку ствола от горного давления /> определяетсяпо формуле:

/>,

где /> - коэффициент, учитывающийстепень разгрузки породной поверхности ствола при принятой технологиикрепления, конструкции и материала обделки. Коэффициент может приниматься потаблице 5.

При проходке ствола вводоносных породах имеющих напор />, полнаясредняя нормативная нагрузка на обделку принимается равной сумме нагрузок /> и />.

Расчетные максимальныенагрузки />, минимальные нагрузки />, а также расчетные значения/> и /> определяются как произведениесредней нормативной нагрузки /> исоответствующих коэффициентов, приведенных при проходке ствола обычным способомв таблице 6 и при проходке ствола бурением — в таблице 7.

Таблица 5.

Значения коэффициента />.

Тип и способ сооружения ствола

/>

Монолитная при совмещенной схеме проходке 5 То же при параллельной и параллельно-щитовой схеме проходки 3 Тюбинговая, вводимая в работу на расстоянии от забоя не менее    20 м при обычном способе проходки 1.1 То же при возведении крепи с предварительной откачкой раствора и полной разгрузкой породных стенок при проходке стволов бурением 0.8

Таблица 6.

Соотношения между расчетными значениями />, />, />, /> и средней нормативнойнагрузкой /> при обычном способепроходки.

Участок ствола Характеристики нагрузок

Pmax

/>

Pmin

/>

P0

/>

P2

/>

P2

P0

Протяженный 2.8 0.33 1.56 1.24 0.8 Вблизи сопряжения (до 20 м) 3.1 0.17 1.64 1.46 0.9 На участке пересечения геологического нарушения 3.3 0.17 1.74 1.56 0.9

Таблица 7.

Соотношения между расчетными значениями />, />, />, /> и средней нормативной нагрузкой/> при проходке стволабурением.

Участок ствола Характеристики нагрузок

Pmax

/>

Pmin

/>

P0

/>

P2

/>

P2

P0

Протяженный 1.4 0.6 1.0 0.4 0.4 Вблизи сопряжения 1.5 0.3 0.9 0.6 0.6

3.2. Проверка несущей способности  тюбинговых обделоквертикальных стволов метрополитенов.

 

Расчет тюбинговой обделкивертикальных стволов метрополитенов будем производить как для двухслойногосостава кольца (см. лист 1), наружным слоем которого является оболочка изспинок тюбингов, внутренним — кольцевые ребра жесткости.

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

/>;           />,

где /> - расчетное сопротивлениематериала обделки (железобетона или чугуна) принимаемое по СНиП II-21-75“Бетонные и железобетонные конструкции. Нормы проектирования.” или СНиПII-8.3-72 “Стальные конструкции. Нормы проектирования.”

Несущая способностьтюбинговой обделки с расчетными характеристиками материала /> и /> обеспечена если выполняютсяусловия:

  для ребра (сечение Б-Б налисте 1):

/>

  для спинки (сечение В-В налисте 1):

/>

где знак “+” относится взависимости от материала конструкции к расчетным характеристикам железобетона,а “-” — к расчетным характеристикам чугуна;

/>;

/>;

/> - радиус конструкции тюбинговой обделки по спинкетюбинга (см. лист 1);

/> - внутренний радиус тюбинговой обделки по кольцевомуребру (см. лист 1);

/> - расстояние в свету между кольцевыми ребрами тюбинга(см. лист 1);

/> - высота кольцевого ребра тюбинга (см. лист 1);

/>;

/>;

/>

/>, />, />, /> - коэффициенты передачинагрузок через наружний слой, в зависимости от геометрических размеровконструкции и определяемые по формулам:

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/>;

/> - коэффициент Пуассона материала обделки, принимаемыйравным 0.25 для бетонной и железобетонной,  0.23 — 0.27 — для чугунной и 0.3 — для остальных.

При определении областиприменения типовой тюбинговой обделки ствола на различное сочетание нагрузок />, />, /> следует построить паспортпрочности конструкции в координатах /> - />. Несущая способностьконструкции будет обеспечена если комбинации нагрузок  />, /> и /> лежат в области,ограниченной нижними границами линий, характеризующих условия прочности посжимающим и растягивающим напряжениям в спинке и ребре тюбинга и условияположительности нагрузок по формуле />.

:

3.3. Расчет параметров и построение паспорта прочностинесущей способности тюбинговых обделок вертикальных стволов метрополитенов.

 

Параметры паспорта несущейспособности тюбинговой обделки, т.е. координаты точек пересечения линий с осями/> и />, определяются по формулам:

1. Железобетоннаятюбинговая обделка:

  линия 1 — условие прочностипо сжимающим напряжениям в ребре тюбинга:

/>;

/>;

  линия 2 — условие прочностипо растягивающим напряжениям в ребре тюбинга:

/>;

/>;

  линия 3 — условиеположительности нагрузок:

/>;

  линия 4 — условие прочностипо сжимающим напряжениям в спинке тюбинга:

/>;

/>;

  линия 5 — условие прочностипо растягивающим напряжениям в спинке тюбинга:

/>;

/>;

2. Чугунная тюбинговаяобделка:

  линия 1 — условие прочностипо сжимающим напряжениям в ребре тюбинга:

/>;

/>;

  линия 2 — условие прочностипо растягивающим напряжениям в ребре тюбинга:

/>;

/>;

  линия 3 — условиеположительности нагрузок:

/>;

  линия 4 — условие прочностипо сжимающим напряжениям в спинке тюбинга:

/>;

/>;

  линия 5 — условие прочностипо растягивающим напряжениям в спинке тюбинга:

/>;

/>;

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

При /> несущую способностьжелезобетонных обделок конструкции ВНИИМШС, марка бетона 400 для стволовдиаметром 4.5 — 8.0 м можно определить по паспортам прочности приведенным налистах 3 и 4.

При /> несущую способностьчугунных тюбинговых обделок конструкции Шахтспецстрой, чугун марки СЧ 12-28 длястволов диаметром 6.0 — 7.0 м можно определить по паспортам прочностиприведенным на листе 4.

3.4. Проверка устойчивости тюбинговых обделоквертикальных стволов метрополитенов.

 

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

/>;

где /> - коэффициент формы упругойлинии кольца обделки при потере устойчивости; расчетное критическое давление /> находится как наименьшеезначение функции />.

4. Приложения

4.1. Программа для проверки несущей способности ипостроения паспорта прочности тюбинговых обделок вертикальных стволовметрополитенов.

 

unit Calc1;

interface

uses

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

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

  RXLookup, ExtCtrls,Buttons;

type

  TForm1 = class(TForm)

    Panel1: TPanel;

    Panel2: TPanel;

    rxDBLookupCombo1:TrxDBLookupCombo;

    Edit1: TEdit;

    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 thenNy := 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<MaxX do begin

      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<MaxY do begin

      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;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    DBEdit2: TDBEdit;

    DBEdit3: TDBEdit;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    DBEdit4: TDBEdit;

    DBEdit5: TDBEdit;

    DBEdit6: TDBEdit;

    Label7: TLabel;

    DBEdit7: TDBEdit;

    Label8: TLabel;

    Label9: TLabel;

    Panel2: TPanel;

    Panel3: TPanel;

    DBEdit8: TDBEdit;

    DBEdit9: TDBEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    Table1: TTable;

    Label10: TLabel;

    DBText1: TDBText;

    DataSource2: TDataSource;

    Query1: TQuery;

    Query1Material:TStringField;

procedure FormCreate(Sender: TObject);

public

    FCode: Integer;

    function EditTub(Table: TTable; IsNew: Boolean; Code: Integer):

                     Boolean;

  end;

var

  EdTubForm: TEdTubForm;

function EditDataTub(Table: TTable; IsNew: Boolean; Code:Integer):

                    Boolean;

implementation

{$R *.DFM}

function EditDataTub(Table: TTable; IsNew: Boolean; Code:Integer):

                    Boolean;

begin

  Result := False;

  with TEdTubForm.Create(Application) do

  try

    FCode := Code;

    Result := EditTub(Table,IsNew, Code);

  finally

    Free;

  end;

end;

function TEdTubForm.EditTub(Table: TTable; IsNew: Boolean;Code:

                           Integer): Boolean;

begin

  if Table <> nil then

    DataSource1.DataSet :=Table

  else begin

    Table1.Open;

    DataSource1.DataSet :=Table1;

  end;

  if IsNew then begin

   DataSource1.DataSet.Append;

   DataSource1.DataSet.FieldByName('Stuff').AsInteger := Code;

  end

    else DataSource1.DataSet.Edit;

  Result := ShowModal = mrOk;

  if Result then

    DataSource1.DataSet.Post

  else

    DataSource1.DataSet.Cancel;

end;

procedure TEdTubForm.FormCreate(Sender: TObject);

begin

  Query1.Active := False;

 Query1.ParamByName('St').AsInteger := FCode;

  Query1.Active := True;

end;

end.

unit EditUser;

interface

uses

  SysUtils, WinTypes,WinProcs, Classes, Graphics, Forms, Controls,  

  Buttons, StdCtrls, ExtCtrls, DBCtrls, Mask, DB,DBTables;

type

    TEditUserDialog =class(TForm)

    OKBtn: TBitBtn;

    CancelBtn: TBitBtn;

    UsersTable: TTable;

    dsUsers: TDataSource;

    NameEdit: TDBEdit;

    FullNameEdit: TDBEdit;

    GroupBox: TGroupBox;

    PasswordEdit: TDBEdit;

    ConfirmPassword: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    LevelGroup:TDBRadioGroup;

    procedure OKBtnClick(Sender:TObject);

    procedure CancelBtnClick(Sender:TObject);

    procedure FormHide(Sender:TObject);

private

    { Private declarations }

public

    { Public declarations }

    function EditUser(const UserName: string; Table: TTable; IsNew:

                     Boolean): Boolean;

end;

var

  EditUserDialog:TEditUserDialog;

function EditUserData(const UserName: string; Table: TTable;

                     IsNew: Boolean): Boolean;

implementation

uses

  Global, Crypt;

{$R *.DFM}

const

  SNotFound = 'Записей необнаружено';

  SNoConfirmPassword = 'Выввели разные пароли. Проверьте  

                       правильность ввода';

 

function EditUserData(const UserName: string; Table: TTable;

                     IsNew: Boolean): Boolean;

var

  SUName: string;

begin

  Result := False;

  SUName := UserName;

  if glUserLevel <> ulAdministrator then begin

    Table := nil;

    SUName := glUserName;

  end;

  with TEditUserDialog.Create(Application) do

  try

    Result :=EditUser(SUName, Table, IsNew);

  finally

    Free;

  end;

end;

{ TEditUserDialog }

function TEditUserDialog.EditUser(const UserName: string;Table:

                                 Ttable; IsNew:Boolean): Boolean;

begin

  NameEdit.Enabled :=(glUserLevel = ulAdministrator);

  LevelGroup.Enabled :=(glUserLevel = ulAdministrator);

  if Table <> nil then begin

    dsUsers.DataSet := Table;

    UsersTable.Close;

  end

  else begin

    UsersTable.Open;

    if UserName <> '' then begin

      if not UsersTable.FindKey([UserName]) then

        raiseException.Create(SNotFound);

    end;

    dsUsers.DataSet :=UsersTable;

  end;

  if IsNew then dsUsers.DataSet.Append

  else dsUsers.DataSet.Edit;

  ConfirmPassword.Text :=PasswordEdit.Text;

  Result := ShowModal = mrOk;

end;

procedure TEditUserDialog.OKBtnClick(Sender: TObject);

begin

  if PasswordEdit.Text <> ConfirmPassword.Text then

    raiseException.Create(SNoConfirmPassword);

  dsUsers.DataSet.Post;

  ModalResult := mrOk;

end;

procedure TEditUserDialog.CancelBtnClick(Sender: TObject);

begin

  dsUsers.DataSet.Cancel;

  ModalResult := mrCancel;

end;

procedure TEditUserDialog.FormHide(Sender: TObject);

begin

  dsUsers.DataSet.Cancel;

  UsersTable.Close;

end;

end.

unit Global;

interface

type

  TUserLevel = (ulInvalid,ulOperator, ulManager, ulAdministrator);

const

  InvalidID = 0;

  glUserLevel: TUserLevel =ulInvalid;

  glUserName: string = '';

  glUserID: Longint =InvalidID;

function cUserLevel(Code: Longint): TUserLevel;

implementation

function cUserLevel(Code: Longint): TUserLevel;

begin

  Result := ulInvalid;

  if (Code in[Integer(Low(TUserLevel))..Integer(High(TUserLevel))]) then

    Result :=TUserLevel(Code);

end;

end.

 

unit Global;

interface

type

  TUserLevel = (ulInvalid,ulOperator, ulManager, ulAdministrator);

const

  InvalidID = 0;

  glUserLevel: TUserLevel =ulInvalid;

  glUserName: string = '';

  glUserID: Longint =InvalidID;

function cUserLevel(Code: Longint): TUserLevel;

implementation

function cUserLevel(Code: Longint): TUserLevel;

begin

  Result := ulInvalid;

  if (Code in[Integer(Low(TUserLevel))..Integer(High(TUserLevel))]) then

    Result :=TUserLevel(Code);

end;

end.

 

unit Main;

interface

uses

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

  Controls, Forms, Dialogs,SpeedBar, Menus, ExtCtrls, Placemnt, DB, 

  DBSecur, DBTables;

type

    TStaftForm = class(TForm)

    SpeedBar: TSpeedBar;

    ExitItem: TSpeedItem;

    MainMenu: TMainMenu;

    FileMenu: TMenuItem;

    InsuranceMenuItem:TMenuItem;

    FileMenuSeperator:TMenuItem;

    PrinterSetupMenuItem:TMenuItem;

    ExitMenuItem: TMenuItem;

    DictSetupMenu: TMenuItem;

    UserMenuItem: TMenuItem;

    WindowMenu: TMenuItem;

    TileMenuItem: TMenuItem;

    CascadeMenuItem:TMenuItem;

    MinimizeAllMenuItem:TMenuItem;

    ArrangeAllMenuItem:TMenuItem;

    HelpMenu: TMenuItem;

    HelpContentsMenuItem:TMenuItem;

    HelpMenuSeparator:TMenuItem;

    AboutMenuItem: TMenuItem;

    ChangePasswordItem:TSpeedItem;

    PrintSetupItem:TSpeedItem;

    CalcItem: TSpeedItem;

    PrinterSetup:TPrinterSetupDialog;

    TileWindowsItem:TSpeedItem;

    CascadeWindowsItem:TSpeedItem;

    HintPanel: TPanel;

    DBSecurity1: TDBSecurity;

    Database1: TDatabase;

    EditItem: TMenuItem;

    FormPlacement:TFormPlacement;

    procedure ArrangeAllMenuItemClick(Sender:TObject);

    procedure TileMenuItemClick(Sender:TObject);

    procedure CascadeMenuItemClick(Sender:TObject);

    procedure MinimizeAllMenuItemClick(Sender:TObject);

    procedure AboutMenuItemClick(Sender: TObject);

    procedure PrinterSetupMenuItemClick(Sender:TObject);

    procedure ExitMenuItemClick(Sender:TObject);

    procedure FormStorageRestorePlacement(Sender:TObject);

    procedure FormStorageSavePlacement(Sender:TObject);

    function DBSecurity1CheckUser(UsersTable:TTable;

const

    Password: String):Boolean;

    procedure UserMenuItemClick(Sender:TObject);

    procedure FormCreate(Sender:TObject);

    procedure FormDestroy(Sender:TObject);

    procedure InsuranceMenuItemClick(Sender:TObject);

    procedure ShowHint(Sender:TObject);

    procedure EditItemClick(Sender:TObject);

private

    procedure SetUserLevel;

    procedure UpdateMenuItems(Sender:TObject);

    function ShowForm(FormClass:TFormClass): TForm;

end;

var

  StaftForm: TStaftForm;

implementation

uses

   About, rxIni, VCLUtils,Global, AppUtils, EditUser, UserList,

   EditTub, Calc1;

{$R *.DFM}

const

  siMDIChilds ='OpenMDIChilds';

procedure TStaftForm.SetUserLevel;

begin

  case glUserLevel of

    ulOperator:

      begin

        DictSetupMenu.Visible:= False;

        DictSetupMenu.Enabled:= False;

        UserMenuItem.Visible:= False;

        UserMenuItem.Enabled:= False;

      end;

    ulManager:

      begin

        DictSetupMenu.Visible:= True;

        DictSetupMenu.Enabled:= True;

        UserMenuItem.Visible:= False;

        UserMenuItem.Enabled:= False;

      end;

    ulAdministrator:

      begin

        DictSetupMenu.Visible:= True;

        DictSetupMenu.Enabled:= True;

        UserMenuItem.Visible:= True;

        UserMenuItem.Enabled:= True;

      end;

  end;

end;

procedure TStaftForm.TileMenuItemClick(Sender: TObject);

begin

  Tile;

end;

procedure TStaftForm.CascadeMenuItemClick(Sender: TObject);

begin

  Cascade;

end;

procedure TStaftForm.MinimizeAllMenuItemClick(Sender: TObject);

var

  I: Integer;

begin

  for I := MDIChildCount — 1 downto 0 do

   MDIChildren[I].WindowState := wsMinimized;

end;

procedure TStaftForm.ArrangeAllMenuItemClick(Sender: TObject);

begin

  ArrangeIcons;

end;

procedure TStaftForm.AboutMenuItemClick(Sender: TObject);

begin

  ShowAboutDialog('Расчеттюбинговой обделки', 'Королев А.В.',  

                  'МГГУ', nil, 1, 0, 1996);

end;

procedure TStaftForm.PrinterSetupMenuItemClick(Sender: TObject);

begin

  PrinterSetup.Execute;

end;

procedure TStaftForm.ExitMenuItemClick(Sender: TObject);

begin

  Close;

end;

function TStaftForm.ShowForm(FormClass: TFormClass): TForm;

var

  Form: TForm;

begin

  Result := nil;

  StartWait;

  try

    Form :=FindForm(FormClass);

    if Form = nil then

     Application.CreateForm(FormClass, Form);

    with Form do begin

      if WindowState = wsMinimized then WindowState :=wsNormal;

      Show;

    end;

    Result := Form;

  finally

    StopWait;

  end;

end;

procedure TStaftForm.FormStorageRestorePlacement(Sender:TObject);

var

  IniFile: TrxIniFile;

  List: TStrings;

  I: Integer;

  FormClass: TFormClass;

  Form: TForm;

begin

  StartWait;

  try

    SpeedBar.Visible := True;

    IniFile :=TrxIniFile.Create(FormPlacement.IniFileName);

    try

      if (glUserLevel in [ulManager, ulAdministrator]) thenbegin

        List :=TStringList.Create;

        try

         IniFile.ReadList(siMDIChilds, List);

          for I := 0 to List.Count — 1 do begin

            FormClass :=TFormClass(GetClass(List[I]));

            if FormClass <> nil then ShowForm(FormClass);

          end;

        finally

          List.Free;

        end;

      end;

    finally

      IniFile.Free;

    end;

  finally

    StopWait;

  end;

end;

procedure TStaftForm.FormStorageSavePlacement(Sender: TObject);

var

  IniFile: TrxIniFile;

  List: TStrings;

  I: Integer;

begin

  IniFile :=TrxIniFile.Create(FormPlacement.IniFileName);

  try

   IniFile.EraseSection(siMDIChilds);

    List :=TStringList.Create;

    try

      for I := MDIChildCount — 1 downto 0 do

        List.Add(MDIChildren[I].ClassName);

      if List.Count > 0 then

       IniFile.WriteList(siMDIChilds, List);

    finally

      List.Free;

    end;

  finally

    IniFile.Free;

  end;

end;

function TStaftForm.DBSecurity1CheckUser(UsersTable: TTable;

const

  Password: String): Boolean;

begin

  Result := (Password =UsersTable.FieldByName('Password').AsString);

  if Result then begin

    glUserName :=UsersTable.FieldByName('UserName').AsString;

    glUserID :=UsersTable.FieldByName('ID').AsInteger;

    glUserLevel := cUserLevel(UsersTable.FieldByName('UserLevel')

                  .AsInteger);

    Result := (glUserLevel<> ulInvalid);

  end;

  if Result then SetUserLevel;

end;

procedure TStaftForm.UserMenuItemClick(Sender: TObject);

begin

  ShowForm(TUserListForm);

end;

procedure TStaftForm.ShowHint(Sender: TObject);

begin

  HintPanel.Caption :=Application.Hint;

end;

procedure TStaftForm.UpdateMenuItems(Sender: TObject);

begin

  { Enable or disable menuitems and buttons }

  CascadeMenuItem.Enabled :=MDIChildCount > 0;

  TileMenuItem.Enabled :=MDIChildCount > 0;

  ArrangeAllMenuItem.Enabled:= MDIChildCount > 0;

  MinimizeAllMenuItem.Enabled:= MDIChildCount > 0;

  TileWindowsItem.Enabled :=MDIChildCount > 0;

  CascadeWindowsItem.Enabled:= MDIChildCount > 0;

end;

procedure TStaftForm.FormCreate(Sender: TObject);

begin

  Application.OnHint :=ShowHint;

  Screen.OnActiveFormChange:= UpdateMenuItems;

  SetAutoSubClass(True);

  { set wait cursor to SQL }

  WaitCursor := crSQLWait;

  { register classes ofMDI-child forms }

 {RegisterClasses([TDictForm, TRatesForm, TItemReportForm]);}

end;

procedure TStaftForm.FormDestroy(Sender: TObject);

begin

  Screen.OnActiveFormChange:= nil;

 Application.HelpCommand(HELP_QUIT,0);

end;

procedure TStaftForm.InsuranceMenuItemClick(Sender: TObject);

begin

  Form1.ShowModal;

end;

procedure TStaftForm.EditItemClick(Sender: TObject);

begin

  EditDataForm.Show;

end;

end.

unit UserList;

interface

uses

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

  Controls, Forms, Dialogs,DBCtrls, ExtCtrls, DBTables, DB, Grids,

  DBGrids, RXDBCtrl,Placemnt, StdCtrls, Buttons;

type

    TUserListForm =class(TForm)

    UsersTable: TTable;

    dsUsers: TDataSource;

    UsersGrid: TrxDBGrid;

    UsersTablePassword:TStringField;

    Panel1: TPanel;

    DBNavigator:TDBNavigator;

    FormPlacement:TFormPlacement;

    UsersTableID:TFloatField;

    UsersTableUserName:TStringField;

    UsersTableFullName:TStringField;

    UsersTableUserLevel:TFloatField;

    BitBtn1: TBitBtn;

    procedure DBNavigatorClick(Sender: TObject; Button:

                              TNavigateBtn);

    procedure UsersGridDblClick(Sender:TObject);

    procedure FormPlacementSavePlacement(Sender:TObject);

    procedure FormPlacementRestorePlacement(Sender:TObject);

    procedure FormCreate(Sender:TObject);

    procedure FormClose(Sender:TObject; var Action: TCloseAction);

end;

var

  UserListForm:TUserListForm;

implementation

uses

   EditUser, IniFiles, Global;

const

  SAccessDenied ='Недостаточно прав. Доступ запрещен';

{$R *.DFM}

procedure TUserListForm.DBNavigatorClick(Sender: TObject;

                                        Button: TNavigateBtn);

begin

  case Button of

    nbInsert:

      begin

        EditUserData('',UsersTable, True);

      end;

    nbEdit:

      begin

        EditUserData('',UsersTable, False);

      end;

  end;

end;

procedure TUserListForm.UsersGridDblClick(Sender: TObject);

begin

  EditUserData('',UsersTable, False);

end;

procedure TUserListForm.FormPlacementSavePlacement(Sender:TObject);

var

  IniFile: TIniFile;

  I: Integer;

begin

  IniFile :=TIniFile.Create(FormPlacement.IniFileName);

  try

    for I := 0 to ComponentCount- 1 do begin

      if Components[I] is TrxDBGrid then

       TrxDBGrid(Components[I]).SaveLayout(IniFile);

    end;

  finally

    IniFile.Free;

  end;

end;

procedure TUserListForm.FormPlacementRestorePlacement(Sender:

                                                      TObject);

var

  IniFile: TIniFile;

  I: Integer;

begin

  IniFile :=TIniFile.Create(FormPlacement.IniFileName);

  try

    for I := 0 to ComponentCount — 1 do begin

      if Components[I] is TrxDBGrid then

       TrxDBGrid(Components[I]).RestoreLayout(IniFile);

    end;

  finally

    IniFile.Free;

  end;

end;

procedure TUserListForm.FormCreate(Sender: TObject);

begin

  if not (glUserLevel in [ulAdministrator]) then begin

    raiseException.Create(SAccessDenied);

  end;

  UsersTable.Open;

end;

procedure TUserListForm.FormClose(Sender: TObject;

var

  Action: TCloseAction);

begin

  Action := caFree;

end;

end.

program Shaft;

uses

  Forms,

  Main in 'MAIN.PAS'{StaftForm},

  Global in 'GLOBAL.PAS',

  EditUser in 'EDITUSER.PAS',

  UserList in 'USERLIST.PAS'{UserListForm},

  Edittub in 'EDITTUB.PAS'{EditDataForm},

  Editform in 'EDITFORM.PAS'{EdTubForm},

  Calc1 in 'CALC1.PAS'{Form1},

  Draw in 'DRAW.PAS'{DrawForm};

{$R *.RES}

begin

  Application.CreateForm(TStaftForm,StaftForm);

 Application.CreateForm(TEditDataForm, EditDataForm);

 Application.CreateForm(TEdTubForm, EdTubForm);

 Application.CreateForm(TForm1, Form1);

 Application.CreateForm(TDrawForm, DrawForm);

  Application.Run;

end.

5. Список использованной литературы.

1. БаклашовИ.В., Картозия Б.А. “Механика подземных сооружений и конструкций крепей” — М.,Недра, 1992, 543 с.

2. НасоновИ.Д., Федюкин В.А., Шуплик М.Н., “Технология строительства подземныхсооружений” — М., Недра, 1992, 285 с.

3. Насонов И.Д., Шуплик М.Н. “Закономерности формированияледопородных ограждений при сооружении стволов шахт” — М., Недра, 1976, 237 с.

4. Храпов В.Г. “Тоннели и метрополитены” — М., Транспорт,1989, 383 с.

5. Белый В.В. “Справочник инженера шахтостроителя” в 2-хтомах — М., 1983

6. Туренский Н.Г., Ледяев А.П. “Строительство тоннелей иметрополитенов” — М., Транспорт, 1992, 264 с.

7. Богомолов Г.М., Голицынский Д.М. Сеславинский С.И.“Справочник инженера тоннельщика” — М., Транспорт, 1993, 389 с.

еще рефераты
Еще работы по промышленности, производству