RSS    

   Дипломная работа: Обделка вертикальных стволов

Дипломная работа: Обделка вертикальных стволов

ВЫБОР МАТЕРИАЛА И РАСЧЕТ ПАРАМЕТРОВ ОБДЕЛОК ВЕРТИКАЛЬHЫХ СТВОЛОВ МЕТРОПОЛИТЕHОВ

Общий раздел

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

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

К началу прошлого столетия, когда появились метрополитены, население самого крупного города планеты - Лондона достигло миллиона человек (в 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А:

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

диаметр каната dК=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 ч поверх свинца укладывают замазку из водонепроницаемого n">расширяющегося цемента (ВНЦ) или быстротвердеющего уплотняющего состава (БУС).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обделка вертикальных стволов/g r

 

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. Проверка устойчивости тюбинговых обделок вертикальных стволов метрополитенов.

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

Обделка вертикальных стволов;

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

Приложения

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

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 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<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

raise Exception.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

raise Exception.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]) then begin

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 menu items 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 of MDI-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

raise Exception.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.



Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.