Зміст.
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А:
двухбарабанние;
діаметр каната 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 год поверх свинцю укладають замазку з водонепроникного розширюється цементу (ВНЦ) або швидкотверднучого ущільнюючого складу (БУС).
Після цього підвісний полиць опускається і проводяться роботи з монтажу розстрілів і провідників, нарощуванню вентиляції, кабелів і направляючих провідників.
У разі проникнення в забій води, проводять розкопки приямка і зібралася в ньому воду відкачують на поверхню.
Особливу увагу при роботі в низьких температурах слід приділити пневмоінструменту:
- Перфораторів;
- Відбійних молотків;
- Болтокрутам;
- Піскоструминним шлифмашина і т.д.
Необхідно вживати заходів по зневоднення стисненого повітря. Після проходки ствола на всю глибину проводиться його металлоізоляція шляхом ошпарювання його сталевими листами.
Далі все прохідницьке обладнання демонтується і стовбур обладнується постійним клітьового підйому.
Для того щоб ввести оброблення стовбура в роботу ропні мережа демонтують, колонки витягають, свердловини цементують. Таким чином відбувається відтавання ледогрунтового огорожі природним способом.
Після проведення всіх заходів гідроізоляції, армуванню та обладнанням стовбура, стовбур здається в експлуатацію.
Загальні терміни будівництва стовбура - чотири місяці.
Після закінчення експлуатації стовбура, він або забучівается або служить для вентиляції підземної споруди.
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_divss: 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_divss, 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_divss: = FieldByName ('R_divss'). 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_divss / 2 * C1 * C1 * K0 * (1 + B / A);
PLines [isP2, 1]: = (C1 * C1-1) * (C1 * C1-1) *
Mass * R_divss / 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_divss / (2 * C2 * C2-K0 *
(C2 * C2 +1));
PLines [isP2, 4]: = (C2 * C2-1) * (C2 * C2-1) * Mass * R_divss/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_divss / 2 * C1 * K0 * (1 + B / A);
PLines [isP2, 1]: = (C2 * C2-1) * (C2 * C2-1) *
Mass * R_divss / 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_divss / (2 * C2 * C2-K0 *
(C2 * C2 +1));
PLines [isP2, 4]: = (C2 * C2-1) * (C2 * C2-1) * Mass * R_divss/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_divss) or (SIGMARR> Mass * R_stretch) or
(SIGMASS> Mass * R_divss) 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 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 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_divss: 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.
5. Список використаної літератури.
1. Баклашов І.В., Картозія Б.А. "Механіка підземних споруд і конструкцій кріплень" - М., Недра, 1992, 543 с.
2. Насонов І.Д., Федюкін В.А., Шуплик М.Н., "Технологія будівництва підземних споруд" - М., Недра, 1992, 285 с.
3. Насонов І.Д., Шуплик М.М. "Закономірності формування ледопородних огорож при спорудженні стволів шахт" - М., Недра, 1976, 237 с.
4. Храпов В.Г. "Тунелі та метрополітени" - М., Транспорт, 1989, 383 с.
5. Білий В.В. "Довідник інженера шахтобудівникам" у 2-х томах - М., 1983
6. Туренськой Н.Г., Лєдяєв А.П. "Будівництво тунелів і метрополітенів" - М., Транспорт, 1992, 264 с.
7. Богомолов Г.М., Голіцинський Д.М. Сеславінський С.І. "Довідник інженера тунельники" - М., Транспорт, 1993, 389 с.