Дослідження можливостей інтеграції Delphi та AutoCAD при тривимірному моделюванні

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    830,5 Кб
  • Опубликовано:
    2012-09-17
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Дослідження можливостей інтеграції Delphi та AutoCAD при тривимірному моделюванні

Міністерство освіти та науки України

Криворізький інститут

Кременчуцького університету економіки, інформаційних технологій та управління

Кафедра Технічної кібернетики





ДИПЛОМНА РОБОТА

зі спеціальності

.091402 “Гнучкі комп’ютеризовані системи та робототехніка“

ПОЯСНЮВАЛЬНА ЗАПИСКА

«Дослідження можливостей інтеграції Delphi та AutoCAD при тривимірному моделюванні»

Студента групи ГКС-04-д Рябоконь Віталія Вікторовича

Керівник роботи доц., к.ф-м.н. Китова Валентина Олексіївна

Консультанти:

зі спеціальної частини доц., к.т.н. Старіков О.М

з програмної частини проф., д.т.н. Мурашко А.Г.

з економічної частини доц., к.е.н. Тимко Є.В.

з охорони праці доц., к.т.н. Климович Г.Б.

нормоконтроль ст. викл. Супрунова Ю.А.

Завідувач кафедри ТК доц. Вдовиченко І.Н..

Кривий Ріг 2009

Міністерство освіти та науки України

Криворізький інститут

Кременчуцького університету економіки, інформаційних технологій та управління

Кафедра Технічної кібернетики

Спеціальність 7.091402 “Гнучкі комп’ютеризовані системи та робототехніка“

ЗАТВЕРДЖУЮ

Зав. кафедрою доц., к.т.н. Вдовиченко І.Н.

_______________________

" 31 " жовтня 2008 р.

ЗАВДАННЯ

на дипломну роботу студента

Рябоконь Віталія Вікторовича

. Тема роботи: Дослідження можливостей інтеграції Delphi та AutoCAD при тривимірному моделюванні _____________________________

затверджена наказом по інституту від " 29 " жовтня 2008 р. № 62С-01__

2. Термін здачі студентом закінченої роботи 01.06.09. _

. Вхідні дані до роботи: Вимоги до кінцевого програмного продукту, довідкова інформація, об’єктна модель AutoCAD

. Зміст розрахунково-пояснювальної записки (перелік питань, що підлягають розробці): Постановка задачі, Проектування систем автоматизації розробки конструкторської документації. Основи технології COM. Теоретичне дослідження об’єктної моделі AutoCAD. Експериментальне дослідження та програмна реалізація проектованої системи. Економічне обґрунтування доцільності розробки програмного продукту. Охорона праці.

. Перелік графічного матеріалу (з точними вказівками обов'язкових креслень)

. Логіко-функціональна схема роботи системи;___________________

. Структура системи АКД, заснованої на двовимірному геометричному моделюванні;_________

. Структура системи АКД, заснованої на використанні просторової моделі геометричного об'єкту;_____________________________________

. Фрагмент об’єктної моделі AutoCAD;__________________________

. Методичне, інформаційне, технічне, програмне і організаційне забезпечення системи АКД;___

. Приклади діалогових вікон системи у різних робочих режимах;________________________

. Зображення тривимірних моделей, створених за допомогою системи.______________________

6. Консультанти з роботи, з вказівками розділів роботи, що належать до них

Розділ

Консультант

Підпис, дата



Завдання видав

Завдання прийняв

Спеціальна частина

Старіков О.М.



Програмна частина

Мурашко А.Г.



Економічна частина

Тимко Є.В.



Охорона праці

Климович Г.Б.




. Дата видачі завдання 31.10.08 р.

Керівник                                          ____________________

Завдання прийняв до виконання             ____________________

КАЛЕНДАРНИЙ ПЛАН

№ п/п

Найменування етапів дипломної роботи

Термін виконання етапів роботи

Примітки

1.

Отримання завдання на дипломну роботу

31.10.08


2.

Огляд існуючих рішень

20.02.09


3.

Теоретичне дослідження об’єктної моделі AutoCAD

23.03.09


4.

Програмна частина (постановка задачі, створення програмного забезпечення, опис алгоритму рішення задачі, проектування та опис інтерфейсу користувача, опис програми)

28.04.09


5.

Оформлення пояснювальної записки

14.05.09


6.

Оформлення графічної документації

25.05.09


7.

Оформлення електронних додатків до диплому

27.05.09


8.

Представлення дипломної роботи до захисту

01.06.09



Студент-дипломник     _________________

Керівник роботи          _________________

Анотація

Метою роботи є створення системи, яка дозволяє наочно проілюструвати основні принципи управління САПР AutoCAD із зовнішніх додатків. Система базується на використанні технології COM і об'єктної моделі AutoCAD.

Розроблена система може розглядатися в якості довідника, який містить збірку „готових рецептів” для вирішення конкретних конструкторських завдань.

Розділів 7, схем та малюнків 25, таблиць 7, бібліографічних посилань 27, загальний обсяг - 83.

Аннотация

Целью работы является создание системы, которая позволяет наглядно проиллюстрировать основные принципы управления САПР AutoCAD из внешних приложений. Система базируется на использовании технологии COM и объектной модели AutoCAD.

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

Разделов 7, схем и рисунков 25, таблиц 7, библиографических ссылок 27, общий объем - 83.

The summary

purpose of this diploma work is development of the system which allows for evidently illustrating basic principles of AutoCAD management from the external system. The system is based on the use of COM technology and objective model of AutoCAD.developed system can be examined as a reference book which contains collection „ready recipes” for the decision of concrete designer’s tasks.

Sections 7, circuits and figures 25, tables 7, bibliographic references 27, total amount - 83.

ЗМІСТ

 

ВСТУП

. ПОСТАНОВКА ЗАВДАННЯ

.1 Найменування та галузь застосування

.2 Підстава для створення

.3 Характеристика розробленого програмного забезпечення

.4 Мета й призначення

.5 Загальні вимоги до розробки

.6 Джерела розробки

. ПРОЕКТУВАННЯ СИСТЕМ АВТОМАТИЗАЦІЇ РОЗРОБКИ КОНСТРУКТОРСЬКОЇ ДОКУМЕНТАЦІЇ

.1 Призначення і основні характеристики систем автоматизації конструкторської документації

.2 Методи створення графічних зображень і геометричних об’єктів

.3 Структура й основні принципи побудови систем автоматизації конструкторської документації

. ОСНОВИ ТЕХНОЛОГІЇ COM

.1 Загальні принципи COM-технології

.2 Склад COM-об'єкту

.3 Інтерфейси як основна будівельна одиниця COM

.4 Властивості COM-об'єктів

.5 COM-сервери

.6 Механізм маршаллінга

.7 Фабрики класів

.8 Бібліотеки типів

.9 Диспетчерський інтерфейс

. ТЕОРЕТИЧНЕ ДОСЛІДЖЕННЯ ОБ’ЄКТНОЇ МОДЕЛІ AUTOCAD

.1 Загальний опис об’єктної моделі AutoCAD

.2 Методи побудови тривимірних примітивів

.3 Візуалізація тривимірних об’єктів

.4 Редагування 3D-об’єктів

. ЕКСПЕРИМЕНТАЛЬНЕ ДОСЛІДЖЕННЯ ТА ПРОГРАМНА РЕАЛІЗАЦІЯ ПРОЕКТОВАНОЇ СИСТЕМИ

.1 Функціональне призначення та технологічні особливості розробки

.2 Розробка логіко-функціональної схеми системи

.3 Опис інтерфейсу користувача системи

.4 Програмна реалізація та опис основних процедур і функцій розробленої системи

. ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ

. ОХОРОНА ПРАЦІ

.1 Аналіз небезпечних і шкідливих факторів в комп’ютерних класах та обчислювальному центрі

.2 Заходи щодо нормалізації шкідливих і небезпечних факторів

.3 Пожежна безпека

ВИСНОВКИ

СПИСОК ЛІТЕРАТУРИ

ДОДАТОК А - Вихідний текст файлів системи

ВСТУП


З появою технічних і програмних засобів графічної взаємодії проектувальника з ЕОМ завдання автоматизації проектування стало можливим вирішувати інтерактивно. Важливу роль при цьому грає графічне сприйняття і можливість маніпулювати графічними образами. Використання графічних засобів є одним з прийомів інженерної діяльності.

Системи автоматичного проектування дозволяють автоматизувати розробку конструкторської документації варіантів виробів залежно від заданих параметрів, наприклад, на основі базових або уніфікованих несучих конструкцій; модернізацію існуючих конструкцій; виконання креслень з великою кількістю однотипних графічних зображень; трудомісткий процес складання переліків елементів, специфікацій і інших текстових документів. Засобами ЕОМ можна автоматизувати рішення графічних задач: визначення габаритних розмірів конструкцій, їх площ, об'ємів, параметрів, умов їх взаємного розташування і т.п.

Система AutoCAD є однією з найпопулярнішої в світі систем автоматичного проектування. AutoCAD є могутнім графічним ядром, на якому базуються багато прикладних пакетів як і від самої фірми AutoDESK, так і від незалежних виробників.

Тепер використання AutoCAD вже не зводиться до відтворення роботи на креслярській дошці. Відносини і зв'язки між окремими тілами в тривимірному просторі можуть задаватися в структурі самих елементів конструкцій. Внутрішня форма опису кожного елементу геометричної моделі в AutoCAD передбачає можливість запису практично будь-якої супутньої інформації. Починаючи з версії 13, AutoCAD забезпечує функціональну структуризацію. Для кожної серйозної прикладної роботи, пов'язаної з проектуванням, існують різноманітні настройки, що розширюють базовий AutoCAD до функціонального інструменту, призначеного для роботи в конкретних умовах. Картографія, машинобудування, магістральні об'єкти, архітектура, промислове, цивільне будівництво і землеустрій, і багато що інше породили цілу гамму додатків до AutoCAD, що перетворюють його на налаштований на конкретну роботу інструмент. На більшості крупних проектно-конструкторських підприємств створені спеціальні відділи по підтримці процесу проектування - Відділи Інформаційних Технологій. У їх завдання входить підтримка в порядку «конструкторських » інструментів - комп'ютерів і програм. Їх роль підібрати необхідний інструмент, налогодити його на заданий режим роботи, стежити, щоб він працював правильно, і навчити основний персонал використовувати вибрані і «заточені» «пили і сокири » ефективно і безпечно.

Система AutoCAD в об'ємі базового постачання дозволяє виконувати креслярські і конструкторські роботи в об'ємі тільки штатних засобів. За допомогою стандартних примітивів (відрізків, кіл, дуг і т.д.) можна намалювати майже все, що завгодно. Але кінцевим користувачам (інженерам і конструкторам різних профілів) необхідно малювати не просто примітиви, а проектувати конкретні об'єкти (деталі устаткування, електричні і принципові схеми, будівельні плани і багато що інше). Робити це треба швидко і якісно відповідно до стандартів в тій або іншій країні або галузі.

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

1. ПОСТАНОВКА ЗАВДАННЯ

 

1.1 Найменування та галузь застосування


Розроблений програмний продукт є наочною ілюстрацією дослідження можливостей інтеграції Delphi та AutoCAD при тривимірному моделюванні.

Розроблена система може розглядатися в якості довідника, який містить збірку „готових рецептів” для вирішення конкретних конструкторських завдань.

1.2 Підстава для створення


Підставою для розробки є наказ № 62С-01 від 29 жовтня 2008 р. по Криворізькому інституту КУЕІТУ.

Початок робіт: 31.10.08. Закінчення робіт: 01.06.09.

1.3 Характеристика розробленого програмного забезпечення


Система розроблена в середовищі Turbo Delphi 2006 Explorer та базується на використанні технології COM і об'єктної моделі AutoCAD. Система призначена для автоматизації креслення та візуалізації тривимірних моделей в середі AutoCAD із зовнішніх додатків.

Програмний продукт може використовувати в якості сервера автоматизації AutoCAD 2006 та наступні версії.

До складу системи входять:

-    Delphi+AutoCAD.exe - виконавчий файл системи;

- електронний підручник в форматі html, якій містить опис об’єктної моделі AutoCAD, структури колекцій, методів та властивостей.

1.4 Мета й призначення

Метою роботи є створення системи, яка дозволяє наочно проілюструвати основні принципи управління САПР AutoCAD із зовнішніх додатків. Також в роботі було розглянуто теоретичні аспекти використання інструментів проектування систем автоматизації розробки конструкторської документації.

1.5 Загальні вимоги до розробки


Вимоги до програмного забезпечення:

·        Робота в середовищі операційних систем Windows 2000/XP;

·        Простота й зрозумілість інтерфейсу.

Мінімальні вимоги до апаратного забезпечення:

·        IBM-сумісний комп'ютер, не нижче Pentium IІI, RAM-256Mb, SVGA-800*600*16bit;

·        Вільний простір на жорсткому диску не менш 800 Мб;

·        Додаткове програмне забезпечення: інсталяція AutoCAD 2006 або наступних версій

 

1.6 Джерела розробки


Джерелами розробки дипломної роботи є:

·        довідкова література;

·        наукова література;

·        технічна література;

·        програмна документація.

2. ПРОЕКТУВАННЯ СИСТЕМ АВТОМАТИЗАЦІЇ РОЗРОБКИ КОНСТРУКТОРСЬКОЇ ДОКУМЕНТАЦІЇ


2.1 Призначення і основні характеристики систем автоматизації конструкторської документації

графічний тривимірних об’єкт інтерфейс

Сучасний рівень програмних і технічних засобів електронної обчислювальної техніки дозволяє перейти до нових інформаційних комп'ютерних технологій, створювати системи автоматизації розробки і виконання конструкторської документації (АКД), що задовольняють стандартам ЄСКД як за якістю виконання документів, так і по дотриманню вимог стандартів. На комп'ютері можуть бути створені конструкторські документи (креслення і схеми) як з використанням, наприклад графічних примітивів типу відрізка, кола, полілінії та ін., так і фрагментів раніше створених конструктивних елементів: графічних зображень (ГЗ) стандартних виробів, типових і уніфікованих конструкцій, їх частин і т.д. При цьому моделі вищезгаданих фрагментів можуть бути параметрично заданими. За допомогою завдання різних значень параметрів конструктор може змінити їх розміри і геометричну форму, забезпечуючи багатоваріантність ГЗ і відповідно креслень і схем. При такому підході до конструювання використання комп'ютерної графіки не усуває креслення (рис. 2.1) як основу конструювання, комп'ютер використовується як «електронний кульман», що полегшує працю конструктора. Такий підхід базується на двовимірному геометричному моделюванні.

Рис. 2.1 Структура системи АКД, заснованої на двовимірному геометричному моделюванні

При розробці КД в цьому випадку ефективність застосування комп'ютерної графіки забезпечується наступними її можливостями:

·        наявністю у всіх графічних редакторах засобів перетворень: повороту, перенесення, масштабування, побудови дзеркального зображення і др.;

·        використання готових фрагментів креслень з бібліотеки: конструктивних і геометричних елементів, уніфікованих і типових конструкцій, стандартних виробів;

·        формуванням креслень з використанням об'єктно-орієнтованих інтерфейсів користувача, ведення діалогу з комп'ютером в звичних для конструктора (у вигляді піктограм) термінах і із звичними для нього об'єктами ГЗ;

·        наявністю пакетів програм опису типових моделей-представників креслень об'єктів, коли процес створення конкретного креслення виробу полягає в маніпулюванні розмірами, представленими у вигляді параметрів;

·        отриманням креслень високої якості, оформлених за стандартами ЄСКД (формується на етапі конструювання) шляхом виводу на графічні пристрої, принтери і інші пристрої.

Для використання цих можливостей застосовуються системи-надбудови над базовою графічною системою (наприклад, над AutoCAD), що містять спеціалізовані для конкретного виробу моделі необхідних фрагментів ГЗ, інтерфейсів користувача, що є об'єктно-орієнтованими «падаючими» і піктографічними меню і відповідними бібліотеками слайду.

Існують і інші підходи до автоматизації конструкторської діяльності, наприклад на основі просторового геометричного моделювання, коли формується просторова модель геометричного об'єкту (ГО), що є наочнішим способом представлення оригіналу і могутнішим і зручнішим інструментом для вирішення геометричних завдань (рис 2.2). Креслення тут грає допоміжну роль, а методи його створення засновані на методах комп'ютерної графіки, методах відображення просторової моделі (у AutoCAD - тривимірне моделювання). При першому підході - традиційному процесі конструювання - обмін інформацією здійснюється на основі конструкторської, нормативно-довідкової і технологічної документації; при другому - на основі внутрішньо-машинного представлення ГО, загальної бази даних, що сприяє ефективному функціонуванню програмного забезпечення систем автоматизованого проектування (САПР) конкретного виробу.

Рис. 2.2 Структура системи АКД, заснованої на використанні просторової моделі геометричного об'єкту

2.2 Методи створення графічних зображень і геометричних об’єктів

Формування моделі параметрично заданого ГО забезпечується з використанням програм створення моделі або об'єктно-орієнтованих систем-надбудов (скажемо, за допомогою мови програмування Autolisp) над Autocad.

Методи створення моделей, параметрично керованих ГО, характеризуються більшими витратами на формування внутрімашинного розуміння. Щоб скоротити ці витрати, при описі деяких груп технічних об'єктів можна користуватися одним із двох принципово різних методів: варіантним або генерируючим.

Варіантний метод заснований на тому, що для певного класу виробів виявляється модель-представник, за допомогою якої отримують всі геометричні форми цього класу виробів. Представника класу виробів називають типізованою, або комплексною моделлю, а отримані з неї форми - варіантами виконань. Виконання виробу визначається заданими параметрами, обнулення яких приводить до виключення складових елементів ГО. У простому випадку змінюються тільки розміри, а конструкція окремих варіантів сімейства виробів залишається незмінною. Опис ГО, заданого параметрами, лежить в основі багатоваріантного конструювання. Витрати на опис типової моделі великі в порівнянні з витратами на отримання варіантів, тому багато систем використовують принцип вкладеності моделей: один раз описані типові моделі використовуються для опису інших типових моделей як макрокоманди.

Генеруючий метод заснований на розділенні ГО на конструктивні і геометричні елементи і створенні нових ГО з наявних елементів за допомогою вибору різних їх поєднань. На рис. 2.3 приведений приклад розділення деталі на елементи. Системи АКД, що працюють по генеруючому методу, володіють високою гнучкістю і ефективні, оскільки досвід показує, що більшість конструкторських розробок створюються шляхом поєднання елементів, що не використалося, раніше відомих, як за принципом функціонування, так і по виконанню.

Рис.2.3 Структурна схема елементів геометричного об’єкту

2.3 Структура й основні принципи побудови систем автоматизації конструкторської документації


Система АКД виконує введення, зберігання, обробку і виведення графічної інформації у вигляді конструкторських документів. Для реалізації системи необхідні: документи, що регламентують роботу системи АКД; початкова інформація для формування інформаційної бази; інформаційна база, що містить моделі ГО, ГЗ, елементи оформлення креслення по ДОСТ ЄСКД; технічні і програмні засоби створення ГО і ГЗ і їх виводу; інтерфейс користувача у вигляді діалогу з комп'ютером.

Всі перераховані складові утворюють методичне, інформаційне, технічне, програмне і організаційне забезпечення системи АКД (рис. 2.4).

Основними принципами побудови системи АКД є:

·        мобільність - адаптуються системи АКД до різних САПР. Шлях до цього - використання поширених базових графічних систем (наприклад, AutoCAD) і мов програмування;

·        інформаційна єдність всіх частин АКД і САПР, яке передбачає єдність бази даних для різних призначень (скажімо, користування моделі ГО і ГЗ як для формування креслень, так і для розрахунків і виготовлення виробу);

·        інваріантність - максимальна незалежність складових частин і системи АКД в цілому по відношенню до об’єктно-орієнтованих систем АКД і САПР. Наприклад, система електронних пристроїв може бути використана як графічна підсистема в системі управління робототехнічним комплексом і як графічна підсистема в системі управління контрольно-вимірювальним пристроєм;

·        можливість розширення системи АКД шляхом доповнення нових складових частин й розвиток старих.

Рис. 2.4 Методичне, інформаційне, технічне, програмне та організаційне забезпечення системи АКД

3. ОСНОВИ ТЕХНОЛОГІЇ COM

 

3.1 Загальні принципи COM-технології

графічний тривимірних об’єкт інтерфейс

Технологія COM (Component Object Technology) - об’єктно-орієнтована програмна специфікація, запропонована Mіcrosoft. COM призначена для підвищення надійності взаємодії програмних продуктів між собою. Дана технологія не визначає структуру програмного продукту, мову програмування та інші деталі реалізації. COM є стандартом, що регламентує модель програмного об'єкта, що відповідає вимогам COM-технології. Програмний об'єкт, створений відповідно до специфікації COM називається COM-об'єктом. Дана технологія визначає механізм взаємодії COM-об'єктів між собою. COM відноситься до так називаним двійкових стандартів, тому що додається до віттрансльованого в двійковий код програмного об'єкту. Взаємодія COM-об'єктів забезпечується набором визначених підпрограм, називаними інтерфейсами, доступ до яких забезпечується через унікальні ідентифікатори інтерфейсів GUІ (Global Unіque Іnterface Іdentіfyer), унікальність яких гарантує операційна система. Такий механізм схожий з використанням покажчиків при доступі до об'єктів в об’єктно-орієнтована мовах програмування, що дає можливість прозорого керування об'єктами, тому що доступ до них забезпечується через покажчики. COM-технологія розширює цей механізм, переносячи застосування покажчиків (у виді GUІ) для доступу до об'єктів на рівень операційної системи. Таким чином, COM-об'єкти можуть прозоро друг для друга модифікуватися, тому що доступ до об'єктів забезпечується через GUІ. COM технологія містить у собі також бібліотеку, у якій міститься набір стандартних інтерфейсів, що визначають ядро функціональності COM і невеликий набір APІ функцій, розроблених для створення COM-об'єктів і керування ними.

Архітектура COM є розширюваною, і на ній базуються інші технології Mіcrosoft, такі як OLE і Actіve Х. Ці технології в даний час є розширеннями операційної системи, і визначають свої власні правила роботи і пропонують свої бібліотеки для створення об'єктів і для керування об'єктами на основі даних технологій. Використовуючи COM як основу, розробники програмного забезпечення одержують можливість створювати свої власні розширення таким чином, що програмні об'єкти створені, за правилами COM-технології можуть працювати з іншими COM-об'єктами через уніфікований механізм взаємодії, що пропонує COM.використовує таке поняття як "клас", що за змістом означає те ж саме, що й в об’єктно-орієнтованих засобах розробки. COM-об'єкт є об'єктом COM-класу (COM class). COM-класи, для розходження з класами в об’єктно-орієнтована мовах, за допомогою яких може створюватися додаток, звичайно називаються співкласами (CoClass). Далі в тексті буде використовуватися термінологія, що виходить з об’єктно-орієнтована програмування.

 

3.2 Склад COM-об'єкту


У COM-технології розрізняються наступні будівельні блоки, використовувані для створення об'єктів:

·        Іnterface (COM-інтерфейс) - безліч прототипів функцій (методів), чисто визначених. Термін "чисто визначений метод" чи "абстрактний метод" виходить теорії об’єктно - орієнтованого аналізу, і означає, що у визначенні класу відсутня реалізація методу, а є присутнім тільки його визначення. Від такого класу не можна створювати об'єкти. Його призначення - описати фундаментальні спільності для всіх похідних класів;

·        COM object (COM-об'єкт) - об'єкт класу CoClass, що містить реалізацію COM інтерфейсу;

·        COM/ActіveX server (COM-сервер чи ActіveX-сервер)- модуль, такий як EXE, DLL чи OCX, що містить машинний код COM чи ActіveX об'єктів;

·        Class factory (фабрика класів)- об'єкт, що може створювати COM-об'єкти з CoClass;lіbrary (бібліотека типів) - файл, що містить інформацію про типи даних, що використовує COM/ActіveХ сервер

3.3 Інтерфейси як основна будівельна одиниця COM


Інтерфейси є основними будівельними одиницями COM. Вони поєднуються в семантично зв'язані групи підпрограм, через які COM-об'єкти здійснюють взаємодію:

 визначає наступні ключові аспекти, зв'язані з COM-інтерфейсами:

·        Методи інтерфейсу абстрактні (чисто визначені). Інтерфейс являє собою набір прототипів методів, чиє призначення складається тільки у визначенні інтерфейсу. Визначення прототипів методів містить у собі визначення числа і типів переданих значень, а також очікуваного поводження об'єкта. Як методи реалізовані, у визначення інтерфейсу не включається. Таким чином, реалізується поліморфізм інтерфейсу, тому що кожен нащадок, що успадковує інтерфейс, може включати власну реалізацію методу;

·        Інтерфейс підкоряється двійковому стандарту. Тому що всі методи інтерфейсу абстрактні, інтерфейс представлений як покажчик на vtable (vіrtual table). Кожен запис у vtable являє собою посилання на відповідний метод класу, що містить реалізацію інтерфейсу. Визначення інтерфейсу як покажчика встановлює протокол для доступу до COM-об'єкта, що є двійковим. Таким чином, одержання доступу до реалізації методу інтерфейсу об'єкта являє собою через послідовну процедуру одержання покажчиків:

Рис. 3.1 Структура інтерфейсу COM

З GUІ системe зв'язує покажчик на інтерфейс. Покажчик на інтерфейс, у свою чергу є покажчиком на vtable, через яку забезпечується покажчик на таблицю покажчиків на код з реалізаціями методів. Безліч об'єктів одного класу в системі використовують одну загальну vtable, і для кожного такого об'єкта створюється структура з частками даними, необхідними для коректного виклику функцій.

·        Інтерфейс містить у собі визначену функціональність. Методи інтерфейсу семантично зв'язані по функціональності і призначенню. Відповідно до цього, методи інтерфейсу звичайно іменується відповідно до свого призначення, і ім'я випереджається заголовною І. Для приклада, метод ІMalloc - призначений для розміщення і звільнення пам'яті;

·        Інтерфейс має унікальний ідентифікатор. Інтерфейси розрізняються за допомогою використання глобальних ідентифікаторів GUІ, що використовуються для посилання на ідентифікатори конкретних інтерфейсів ІІ (Іnterface Іdentіfіer). Кожен інтерфейс має свій ІІ, і при реєстрації в системі одержує зв'язаний з ним GUІ. Використання GUІ більш досконале, чим використання символьних імен, тому що гарантує відсутність конфліктів імен при відновленні програмних продуктів (виходу нових версій) і при використанні програмного забезпечення від різних виробників;

·        Інтерфейс не може змінитися після реєстрації в системі. Кожен інтерфейс призначений для виконання визначеної задачі, і визначає, які дані надходять на обробку і які дані виводяться. Таким чином, після того, як інтерфейс опублікований у системі, і став доступний для використання, він не повинний мінятися. Будь-яка зміна в семантиці інтерфейсу веде до необхідності з’явлення нового інтерфейсу. Однак існує можливість безпечної реалізації багатоінтерфейсних об'єктів за допомогою використання для доступу до різних версій інтерфейсу різні ІІ.

·        Інтерфейси успадковують функціональність від одного базового предка. Всі інтерфейси прямо чи побічно є нащадками інтерфейсу ІUnknown. Цей інтерфейс забезпечує базову функціональність інтерфейсу, що містить у собі динамічне опитування об'єкта (dynamіc querіng) і керування життєвим циклом об'єкта (lіfetіme managment). Ця функціональність забезпечується трьома методами інтерфейсу ІUnknown: Queryіnterface, AddRef і Release. Кожен клас, що реалізує інтерфейс, повинний реалізувати ці три методи, поряд з методами, що успадковані від іншого інтерфейсу, і своїми власними методами. Нижче представлено короткий опис функціонального призначення згаданих методів.

Queryіnetrface забезпечує опитування об'єкта і доступ до покажчика на інтерфейс. Queryіnerface є першим записом у vtable, і пропонує ефективний шлях для визначення можливостей об'єкта, у найпростішому випадку через цей метод при встановленні зв'язку забезпечується передача покажчика на інтерфейс ІUnknown тому об'єкту, що намагається одержати доступ до даного об'єкта. Даний метод також уможливлює відновлення COM об'єкта без утрат на відновлення інших залежних об'єктів, тому що об'єкт може бути динамічно опитаний клієнтами через покажчик на ІUnknown. Це функція зветься dynamіc querіng;

AddRef і Release знаходяться на другому і третім місцях у vtable. Це прості рахункові функції, що надаються для керування часом життя об'єкта. Поки внутрішній лічильник об'єкта, що відбиває кількості разів виклику AddRef і Release більше нуля (виклик AddRef може збільшувати його значення), об'єкт залишається в пам'яті. Як тільки значення лічильника досягає нуля (виклик Release може зменшувати його значення), реалізація інтерфейсу може безпечно видалити всі залежні нижележащие об'єкти. Це функція зветься lіfetіme managment;

3.4 Властивості COM-об'єктів

-об'єкт - це об'єкт CoClass, що є класом, що реалізує один чи більш інтерфейсів. COM-об'єкт надає функції, що доступні через покажчик на один з його інтерфейсів. В зв’язку з цим, COM- об’єкт має наступні особливості:

·        COM-об'єкт захищений від прямої зміни зовнішніми програмами у своїх даних, тому що доступ до COM-об'єкта можливий тільки через покажчик на інтерфейс;

·        COM-об'єкт може бути використаний додатками, реалізованими практично на будь-яких сучасних засобах розробки додатків (алгоритмічних мовах), з будь-якою внутрішньою організацією додатка, головне, щоб засіб розробки дозволяв працювати з покажчиками на структури, на масиви і на функції.

3.5 COM-сервери


Об'єкт COM-класу повинний мати у своєму складі фабрику класів, і ідентифікатор класу CLSІ (Class Іdentіfіer), так щоб COM-об'єкт міг бути створений на основі існуючого модуля.

COM-сервер - це додаток, чи бібліотека, що надає визначений набір сервісних функцій для клієнтських додатків чи бібліотек. COM-сервер складається з COM-об'єктів. Наприклад, COM-сервер, що містить у собі код елементів керування Actіve (Actіve control)- є ActіveX-сервером. Для розроблювача є в наявності велике число бібліотек, які можна використовувати для створення COM-об'єктів. Як приклад можна привести бібліотеку Mіcrosoft Actіve Template Lіbrary, що надає набір шаблонів, на основі яких можна створювати свої власні програмні продукти, побудовані по COM-технології. Наприклад, шаблон для COM-сервера містить у собі код для основних функцій, що повинний забезпечувати COM-сервер: реєстрація сервера в системі, завантаження/вивантаження сервера, створення об'єктів, керування фабриками класів, забезпечення видачі інформації про сервер, включаючи: тип сервера, help-файл, ім'я сервера, бібліотека типів і т.д.

Клієнти не повинні знати, яким образом сервер виконує свої функції, і клієнти не повинні знати, де сервер знаходиться - уся взаємодія здійснюється через покажчики на інтерфейс сервера. COM-сервер може бути наступних типів:

·        Іn-process server (внутрішній сервер) - програмний DLL модуль, що працює в робочому просторі пам'яті клієнтського додатка:

Рис. 3.2 Структура зв’язку клієнта та внутрішнього сервера

·        Local server (локальний сервер) - програмний EXE модуль, що працює в окремому адресному просторі;

·        Remote server (вилучений сервер) - програмний EXE модуль, що працює на вилученій машині.

3.6 Механізм маршаллінга


Різниця між внутрішнім і вилученим серверами в тім, який тип міжпроцесорного зв'язку використовується. У даному випадку існує необхідність використання посередників, що забезпечують передачу параметрів і виклик функцій. Такий механізм називається маршаллінгом (marshallіng). У випадку, коли клієнт і сервер знаходяться в різних адресних просторах, доступ до ресурсів не може бути здійснений безпосередньо через покажчики. Тому посередники з боку клієнта (proxy) здійснюють упакування аргументів у пакети маршаллінга (marshallіng packets), і забезпечують вилучений виклик процедур (Remote Procedure Call). Посередник з боку сервера (stub) реалізує розпакування параметрів, і приміщення їх у стек. Далі здійснюється виклик безпосередньо реалізації методу. По суті, сервер створює клієнтський виклик процедури у своєму власному адресному просторі.

Рис. 3.3 Структура механізму маршаллінга

Посередники використовують COM-засоби, для здійснення взаємодії в різних процесах. Для взаємодії об'єктів, що знаходяться на різних машинах, використовуються засоби розширення COM - розподілена COM (Dіstrіbuted COM чи DCOM). COM пропонує стандартний механізм маршаллінга - інтерфейс диспетчеризації (Dіspatch Іnterface).

3.7 Фабрики класів


Фабрики класів (class factorіes) - спеціальний тип COM-об'єктів, використовуваний для створення і реєстрації COM-об'єктів. Виробники класів реалізують стандартний механізм створення об'єктів COM-класів. Класи без ідентифікаторів класу (CLSІ) і фабрики класів можуть бути створені за допомогою виклику конструктора. Використання фабрики класів для створення об'єктів означає, що для клієнтського додатка, якому необхідно створити об'єкт класу, не потрібно знати про цей клас нічого, крім його ідентифікатора CLSІ. Фабрика класів візьме виклик конструктора на себе, включаючи передачу аргументів у конструктор і інші специфічні дії. Клас фабрики класів може бути об'єднаний з багатьма COM-класами, для кожного з який можуть створюватися об'єкти. При створенні ж об'єкта фабрики класів, у конструктор передається ідентифікатор CLSІ класу, для створення об'єктів якого призначається фабрика. Цей ідентифікатор визначає, об'єкти якого класу можуть бути створені за допомогою даної фабрики класів. Таким чином, кожен екземпляр фабрики класів у системі може бути використаний для створення об'єктів тільки одного визначеного класу.

Створення об'єкта класу виробляється за допомогою наступних дій:

·        виклику глобальної APІ-функції CoGetClass, що шукає в системному реєстрі зареєстрований клас з даним CLSІ, визначає шлях до сервера, завантажує сервер і видає покажчик на інтерфейс виробника класів (звичайно ІClassFactory);

·        Покажчик на ІсlassFactory може бути використаний для виклику методів виробника класів, наприклад: CoCreateіnstance (створення об'єкта);

Альтернативою розглянутому методу може служити виклик глобальної APІ-функції CoCreateіnstance, що виконує перераховані вище дії і створює об'єкт класу з ідентифікатором CLSІ, але в такий спосіб можна створити тільки один об'єкт даного класу, тому що функція не повертає покажчик на інтерфейс виробника класів.

3.8 Бібліотеки типів


Бібліотека типів (type lіbrary) надає інформацію про використовувані типи об'єктів і інтерфейси, що надаються ActіveX-серевером. Бібліотека типів за змістом аналогічна, наприклад, заголовному файлу (header) для розробок мовою C і будь-якому іншому модулю, що містить інформацію про використовувані типи даних і об'єктах. Більшість інформацій подібного роду може бути записане в бібліотеку типів. Одержати інформацію з бібліотеки типів можна шляхом опитування запущеного об'єкта чи за допомогою завантаження безпосередньо бібліотеки типів. Після створення бібліотеки типів, до неї забезпечується доступ через спеціальний тип інтерфейсів: ІTypeLіb, ІTypeіnfo і ІTypeComp. Інтерфейс ІTypeLіb забезпечує доступ до інформації про типи в бібліотеці типів, а також до описів конкретних об'єктів, що, у свою чергу, можуть бути отримані через інтерфейс ІTypeіnfo.

Бібліотека типів містить інформацію про те, який інтерфейс, у якому COM-об'єкті міститься, кількість і тип методів інтерфейсів і їхніх параметрів. Ці описи містять у собі унікальні ідентифікатори класів (CLSІ) і їхніх інтерфейсів (ІІ), через які здійснюється коректний доступ до об'єктів. У бібліотеці типів також може міститися наступна інформація:

·        Опису користувальницьких типів даних, зв'язаних з користувальницькими інтерфейсами;

·        Функції, що експортуються ActіveX-сервером, але які не є інтерфейсними методами;

·        Посилання на описи типів в інших бібліотеках типів.

Використання бібліотеки типів дуже важливо для об'єктів, що призначені для поширення і наступного використання багатьма користувачами. Також існує ще ряд причин використання бібліотек типів:

·        Об'єкти, що використовують безпосередню прив'язку до vtable, повинні бути описані в бібліотеці типів, тому що посилання в vtable формуються під час компіляції;

·        Об'єкти, створені з класів, що підтримують інтерфейс ІProvіdeClassіnfo, повинні мати бібліотеку типів. Об'єкти, що мають у своєму складі дані інтерфейс, є типізованими COM-об'єктами, тому що надають інформацію про використовувані типи (з бібліотеки типів);

·        Елементи керування Actіve повинні мати бібліотеку типів, що міститься безпосередньо в DLL чи OCX файлі, що містить код ActіveX-сервера;

·        Додатки, що є Automatіon-серверами, повинні мати бібліотеку типів, для більш зручно зв'язування з клієнтами;

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

3.9 Диспетчерський інтерфейс


Диспетчерський інтерфейс (dіspatch іnterface) - стандартна спеціальна реалізація інтерфейсу ІDіspatch, що пропонує COM. Дана реалізація забезпечує виконання процедур пізнього зв'язування (late bіndіng) і маршаллінга. Диспетчерський інтерфейс зберігає усередині себе таблицю диспетчерських ідентифікаторів (dіspі), кожний з який є унікальним ідентифікатором члена інтерфейсу, і таблиця, по суті, реалізує відображення відповідного dіspі на ім'я кожного члена інтерфейсу. Клієнт, що бажає одержати доступ до ресурсу сервера, повинний знати dіspі для відповідного ресурсу. Таку інформацію можна одержати через виклик методу інтерфейсу ІDіspatch, що називається GetіDsOfNames, і який є першим записом у vtable для інтерфейсу ІDіspatch. Таким чином, клієнт одержує інформацію про типи даних, використовуваних сервером, і одержує таблицю диспетчерських ідентифікаторів, з відображенням імені кожного ресурсу сервера на відповідний dіspі. Дана операція і з боку клієнта, і з боку сервера. При використанні стандартної реалізації інтерфейсу ІDіspatch це реалізується автоматично. Ця процедура називається пізнім зв'язуванням, тому що здійснюється на етапі виконання програми, а не на етапі компіляції. Маючи для кожного імені ресурсу сервера відповідний dіspі, клієнт може здійснити звертання до його, використовуючи метод інтерфейсу dіspі, що іменується Іnvoke. Метод Іnvoke має сигнатуру, що допускає виклик з будь-якою кількістю параметрів, чим забезпечується його універсальність. Реалізація Іnvoke розпаковує параметри і здійснює виклик відповідного чи методу властивості і здійснює контроль над видачею виключень при виконанні чи методу властивості. Коли виконання чи методу обробка властивості закінчується, значення, що повертаються чи властивості методу відправляються назад клієнту.

Основним недоліком диспетчерського інтерфейсу є обмеження на типи даних, які можна використовувати при передачі параметрів. Це випливає з необхідності упакування і розпакування параметрів при здійсненні маршаллінга. Допускається використовувати 13 стандартних типів даних. На користувальницькі типи даних установлюються досить строгі обмеження. Якщо вимоги задачі не укладаються в ці обмеження, розроблювач має можливість реалізувати маршаллінг, шляхом написання свого proxy/stub коду. Ще один недолік виявляється в тім, що при компіляції програми не виконується перевірка відповідності типів викликуваних функцій, тому що зв'язування диспетчерських інтерфейсів здійснюється на етапі виконання програми, і таким чином, не контролюється виклик Іnvoke з невірним набором аргументів, що викликає помилку виконання.

4. ТЕОРЕТИЧНЕ ДОСЛІДЖЕННЯ ОБ’ЄКТНОЇ МОДЕЛІ AUTOCAD

 

4.1 Загальний опис об’єктної моделі AutoCAD


Об'єктна модель AutoCAD є сукупністю об'єктів, властивостей, методів і подій. Для кожного з елементів цієї моделі є своя реалізація у вигляді даних і функцій, що забезпечують взаємодію з користувачем.

Об'єктна модель AutoCad є деревовидною структурою, на вершині якої знаходиться об'єкт Application - AutoCad. Об'єкти в AutoCAD розглядаються як ієрархія, що містить не тільки примітиви, але і інші елементи (таблиці, словники і т. д.). Однотипні об'єкти об'єднуються в сімейства (Collections). Кореневий об'єкт пов'язаний з сімействами Preferences, Documents, MenuBar, MenuGroups. Кожне з цих сімейств має безліч "нащадків".- колекція документів AutoCad (відкритих креслень). Отримати доступ до поточного (активного) документу можна по-різному. По-перше, AcadDocument має властивість Active, що інформує нас про те, чи активний даний документ чи ні. По-друге, можна прямо звернутися до активного документа через об'єкт ActiveDocument, або, що теж саме, через об'єкт ThisDrawing.

До складу кожного з документів входять колекції, що містять певний набір об'єктів. Наприклад, ModelSpace - колекція, яка містить всі об'єкти в просторі моделі. У даному додатку ми звертатимемося до об'єкту 3DSolyd - тривимірної твердотільної моделі.

Кожна колекція і кожен об'єкт володіє певними властивостями і методами, які дозволяють до нього звертатися. При роботі через об'єктну модель важливо правильно використовувати методи і знати, чи можна застосовувати їх до даного об'єкту в даній ситуації.

Рис. 4.1 Фрагмент об’єктної моделі AutoCAD

 

4.2 Методи побудови тривимірних примітивів


Команда BOX- призначена для побудови тривимірних твердотільних паралелепіпедів (ящиків).


Тіло будується шляхом вказівки наступних параметрів - координати геометричного центра паралелепіпеда, його довжини (по осі Х), ширини (по осі Y) і висоти (по осі Z).

Для створення паралелепіпеда в об'єктній моделі AutoCAD передбачений метод AddBox.

Синтаксис:= object.AddBox(Origin, Length, Width, Height)

Object - ModelSpace Колекція, PaperSpace Колекція, Block - об'єкт або об'єкти що звертаються до цього методу.- тип Variant (масив з трьома елементами double); тільки для введення

Тривимірні координати положення WCS-початку координат поля. Ця координата представляє центр поля обмеження для об'єкту.- тип Double; тільки для введення. Довжина поля. Повинне бути позитивне число.- тип Double; тільки для введення. Ширина поля. Повинне бути позитивне число.- тип Double; тільки для введення. Висота поля. Повинне бути позитивне число.

- 3DSolid об'єкт. Об'єкт 3DSolid як недавно створене поле.

Команда SPHERE- призначена для побудови тривимірної твердотільної кулі.

Тіло будується шляхом вказівки наступних параметрів - координати центру кулі і її радіусу.

Для створення кулі в об'єктній моделі AutoCAD передбачений метод AddSphere

Синтаксис := object.AddSphere(Center, Radius)- ModelSpace Колекція, PaperSpace Колекція, Block. Об'єкт або об'єкти, що звертаються до цього методу.

Center - тип Variant (масив з трьома елементами double); тільки для введення. Тривимірні координати положення WCS центру сфери.- тип Double; тільки для введення. Радіус сфери. Повинне бути позитивне число.- 3DSolid об'єкту. Об'єкт 3DSolid як недавно створена сфера.


Команда CYLINDER- призначена для побудови тривимірних твердотільних циліндрів, основа яких знаходиться на XY площині WCS.

Тіло будується шляхом вказівки наступних параметрів - координати центру основи циліндра, довжини радіусу основи (у площині XY), висоти (по осі Z).

Для створення тіла в об'єктній моделі AutoCAD передбачений метод AddCylinder

Синтаксис:= object.AddCylinder(Center, Radius, Height)- ModelSpace Колекція, PaperSpace Колекція, Block. Об'єкт або об'єкти що звертаються до цього методу.

Center - тип Variant (масив з трьома елементами double); тільки для введення. Тривимірні WCS координати положення центру грані.- тип Double; тільки для введення. Радіус циліндра. Повинне бути позитивне число.- Double; тільки для введення. Висота циліндра. Повинне бути позитивне число.- 3DSolid об'єкту. Об'єкт 3DSolid як недавно створений циліндр.


Команда CONE - призначена для побудови тривимірних твердотільних конусів, основа яких знаходиться на XY площині WCS.

Тіло будується шляхом вказівки наступних параметрів - координати центру основи конуса, довжини радіусу основи (у площині XY), висоти (по осі Z).

Для створення конуса в об'єктній моделі AutoCAD передбачений метод AddCone

Синтаксис= object.AddCone(Center, BaseRadius, Height)- ModelSpace Колекція, PaperSpace Колекція, Block. Об'єкт або об'єкти що звертаються до цього методу.

Center - тип Variant (масив з трьома елементами double); тільки для введення. Тривимірні координати положення WCS центру поля обмеження.- тип Double; тільки для введення. Радіус конічної основи. Повинне бути позитивне число.- тип Double; тільки для введення. Висота конуса. Повинне бути позитивне число.- 3DSolid об'єкту. Об'єкт 3DSolid як недавно створений конус.


Команда WEDGE- створює клин з гранями, паралельними осям, за даними довжини, ширини і висоти.

Тіло будується шляхом вказівки наступних параметрів - координати центру грані клину, його довжини (по осі Х), ширини (по осі Y) і висоти (по осі Z).

Для створення клину в об'єктній моделі AutoCAD передбачений метод AddWedge.

Синтаксис:= object.AddWedge(Center, Length, Width, Height)- ModelSpace Колекція, PaperSpace Колекція, Block. Об'єкт або об'єкти, що звертаються до цього методу.

Center - тип Variant (масив з трьома елементами double); тільки для введення. Тривимірні координати положення WCS центру грані клину.- тип Double; тільки для введення. Довжина клину по осі X. Повинне бути позитивне число.- тип Double; тільки для введення. Ширина клину по осі Y. Повинне бути позитивне число.- Double; тільки для введення. Висота клину по осі Z. Повинне бути позитивне число.- 3DSolid об'єкту. Об'єкт 3DSolid як недавно створений клин.


Команда TORUS- призначена для побудови тривимірних твердотільних торів в заданому місцерозташуванні.

Тіло будується шляхом вказівки наступних параметрів - центру тора, відстані від центру тора до центру труби (радіусу тора), радіусу труби.

Для створення тіла в об'єктній моделі AutoCAD передбачений метод AddTorus

Синтаксис:= object.AddTorus(Center, TorusRadius, TubeRadius)- ModelSpace Колекція, PaperSpace Колекція, Block. Об'єкт або об'єкти, що звертаються до цього методу.

Center - тип Variant (масив з трьома елементами double); тільки для введення. Тривимірні WCS координати центру тора.- тип Double; тільки для введення. Відстань від центру тора до центру труби. Повинне бути позитивне число.- тип Double; тільки для введення. Радіус труби. Повинне бути позитивне число.- 3DSolid об'єкту.Об'єкт 3DSolid як недавно створений тор.

4.3 Візуалізація тривимірних об’єктів


Швидкий спосіб установки виду (точки зору на об’єкт) полягає у виборі його з числа вже наявних стандартних 3D-видів. Існує декілька стандартних ортогональних і ізометричних видів, які можна вибирати по іменах. Ортогональні види відображають модель в проекціях зверху, знизу, спереду, зліва, справа і ззаду. Ізометричні види дозволяють розглядати наступні проекції: ПЗ (південно-західна), ПС (південно-східна), ПС (північно-східна) і ПЗ (північно-західна).

Для розуміння суті ізометричних видів можна уявити собі прямокутний ящик, що розглядається зверху. Якщо, наприклад, змістити точку зору до нижнього лівого кута ящика, вийде ізометричний південно-західний вигляд (ПЗ). Якщо ж змістити точку зору до переднього верхнього кута ящика, вийде ізометричний північно-східний вигляд (ПС).

                            

Рис. 4.2 Представлення ізометричних видів

Для об'єктів поточного видового екрану можливо приховування виведення невидимих ліній і включення розфарбовування (тонування). Приховування невидимих ліній робить невидимими лінії, ребра і інші об'єкти, які насправді затулені об'єктами, розташованими на передньому плані. Розфарбовування, тобто заповнення певних об'єктів кольором, також робить невидимими лінії заднього плану. Розфарбовування кожного об'єкту проводиться поточним кольором. У режимі 3D-каркас об'єкти представляються у вигляді відрізків і кривих (як кромки граней і тіл).

3D-каркас          Скриті                              Тонування

    

Рис. 4.3 Режими відображення 3D-об’єктів

Метод SendCommand посилає рядок команди від зовнішньої системи до документа AutoCAD для обробки.

Синтаксис:.SendCommand(Command)- Document. Об'єкт або об'єкти що звертаються до цього методу.

Command - тип String; тільки для введення. Команда, щоб послати документу.

Приклад: а.activedocument.sendcommand('shademode у'+#13);використовує стандартну палітру кольорів в діапазоні від 1 до 255. Властивість Color визначає колір об'єкту.

Синтаксис:.Color- All Drawing objects, Group, Layer. Об'єкт або об'єкти, що звертаються до цієї властивості.

Color - AcCmColor об'єкт - ціле число в діапазоні від 1 до 255

 

4.4 Редагування 3D-об’єктів

D - обертає об'єкт навколо 3D-осі. Point1 і Point2 визначають лінію, яка стає віссю повороту.

Синтаксис:.Rotate3D Point1, Point2, RotationAngle- всі Об'єкти рисунка, AttributeReference. Об'єкт або об'єкти що звертаються до цього методу.- тип Variant (масив з трьома елементами double); тільки для введення. 3D координата положення WCS, перша точка лінії осі.- тип Variant (масив з трьома елементами double); тільки для введення. 3D координата положення WCS, друга точка лінії осі.

Рис. 4.4 Результат роботи команди Rotate3D

D - створює дзеркальне відображення даного об'єкту щодо площини.

Синтаксис:= object.Mirror3D(Point1, Point2, Point3)- All Drawing Objects. Всі об'єкти малюнка. Об'єкт або об'єкти, які звертаються до цього методу.- тип Variant (масив з трьома елементами double); тільки для введення. Тривимірні координати положення WCS першої точки дзеркальної площини.- тип Variant (масив з трьома елементами double); тільки для введення. Тривимірні координати положення WCS другої точки дзеркальної площини.- тип Variant (масив з трьома елементами double); тільки для введення. Тривимірні координати положення WCS третьої точки дзеркальної площини.- Відображений об'єкт. Цей об'єкт може бути одним з Drawing Objects.

Рис. 4.5 Об'єкт, відображений відносно площини ZX.

- розрізає об'єкт 3DSolid за даними трем крапкам, які визначають площину розрізу.

Синтаксис:= object.SliceSolid(Point1, Point2, Point3, Negative)- 3DSolid. Об'єкт або об'єкти що звертаються до цього методу.- тип Variant (масив з трьома елементами double); тільки для введення. 3D координат положення WCS, перша крапка.- тип Variant (масив з трьома елементами double); тільки для введення. 3D координат положення WCS, друга крапка.- тип Variant (масив з трьома елементами double); тільки для введення. 3D координат положення WCS, третя крапка.- Boolean; тільки для введення. Визначає, чи повернути частину тіла, яка знаходиться на негативній стороні площин. Якщо TRUE, то AutoCAD створює новий об'єкт Acad3DSolid, який містить частину оригінального тіла, яке знаходиться на негативній нормальній стороні площин.- 3DSolid об'єкту. Пластина, що виходить, як 3DSolid об'єкту.

Рис. 4.6 Об’єкт, що розрізаний плоскістю ZY

5. ЕКСПЕРИМЕНТАЛЬНЕ ДОСЛІДЖЕННЯ ТА ПРОГРАМНА РЕАЛІЗАЦІЯ ПРОЕКТОВАНОЇ СИСТЕМИ

 

5.1 Функціональне призначення та технологічні особливості розробки


Розроблена система призначена для автоматизації креслення та візуалізації тривимірних моделей в середі AutoCAD із зовнішніх додатків. В ході виконання роботи були досліджені методи об’єктної моделі, які дозволяють будувати наступні тривимірні примітиви: ящик, куля, циліндр, конус, клин, тор.

В роботі розглядаються ізометричні та ортогональні види тривимірного простору та режими візуалізації - 3D-каркас, скриті лінії, тонування об’єктів та вибір кольору із стандартної палітри AutoCAD. Також в роботі досліджені команди редагування тривимірних об’єктів, а саме -Rotate3D, Mirror3D та Slice.

В розробленій системі приведений докладний опис як самих команд, так і методів, які їм відповідають. Інформація зберігається в зовнішніх html-файлах, що повинні знаходитися в директорії HTML у тому ж каталозі, де зберігається виконавчий файл системи.

Оптимальний склад технічних засобів, при яких працює система:

·        IBM-сумісний комп'ютер, не нижче Pentium-ІІІ продуктивністю не менше 1,7 ГГц;

·        Оперативна пам'ять не менше 256 МГбайт;

·        Монітор із SVGA адаптером;

·        Вільний простір на жорсткому диску не менш 800 Мб;

·        Компакт-дисковий носій (CD);

·        Клавіатура, маніпулятор типу "миша";

Система повинна функціонувати під керуванням операційної системи Windows ХР. Програмна оболонка повинна мати інтуїтивно зрозумілий інтерфейс. Додаткове програмне забезпечення: інсталяція AutoCAD 2006 або наступних версій.

5.2 Розробка логіко-функціональної схеми системи


Логіко-функціональна схема системи наведена на рис. 5.1.

Рис. 5.1 Логіко-функціональна схема роботи системи

5.3 Опис інтерфейсу користувача системи


Після запуску системи на екрані з’являється вікно, яке має наступний вигляд:

Рис.5.2 Загальний вигляд вікна системи із стартовою інформаційною сторінкою

У верхній частині вікна за допомогою компоненту WebBrowser відображається довідкова інформація із зовнішнього html-файлу. При старті системи відображається структура фрагменту об’єктної моделі AutoCAD. Далі, в залежності від обраної вкладки чи команди завантажується інша інформація. У будь який момент роботи системи інформаційне вікно можна приховати, обравши відповідний режим.

Кнопка „Запуск і візуалізація” дозволяє запустити AutoCAD та автоматично створити новий документ, який буде поточним для побудови об’єктів.

В залежності від обраної команди вид області вводу параметрів змінюється.

Параметри, що вводяться відповідають вхідним даним методів побудови тривимірних примітивів.

Рис. 5.3 Вікно системи в режимі побудови примітиву Sphere

Рис. 5.4 Вікно системи в режимі побудови примітиву Cylinder

Рис. 5.5 Вікно системи в режимі побудови примітиву Cone

Рис. 5.6 Вікно системи в режимі побудови примітиву Wedge

Рис. 5.7 Вікно системи в режимі побудови примітиву Torus

Після натиснення кнопки „Виконати” обраний примітив буде побудований, але ми будимо бачити об’єкт в його двохмірній проекції. Для переходу в трьохвимірний простір необхідно обрати відповідний вид на вкладці „Візуалізація об’єктів”. Режими візуалізації можна також обрати із наведеного списку. Для того, що розфарбувати побудовані примітиви необхідно обрати із випадаючого списку його назву та обрати колір. Режим „Показувати значення” дозволяє наочно продемонструвати перехід палітри кольорів RGB до палітри, підтримуваної AutoCAD.

Рис. 5.8 Вікно системи в режимі візуалізації об’єктів

Як вже було зазначено вище, система наочно демонструє роботу наступних команд редагування тривимірних об’єктів: Rotate3D (тривимірний поворот), Mirror3D (дзеркальне відображення) та Slice (розріз).

Вісь повороту визначається двома точку. Також необхідно задати кут повороту (в градусах). У нашій системі передбачений спрощений варіант вибору координат. Користувач вибирає тільки напрям координатної осі. Базова точка повороту визначається центром мас тіла.

Рис. 5.9 Вікно системи в режимі виконання команди Rotate3D

D - створює дзеркальне відображення обраного об'єкту щодо площини. Площина симетрії визначається координатами трьох точок в просторі.

Рис. 5.10 Вікно системи в режимі виконання команди Mirror3D

Команда Slice - розрізає об'єкт за допомогою площину розрізу, що визначається координатами трьох точок в просторі.

Команда працює в двох режимах. Якщо прапорець „Залишити обидві сторони” не вибраний, залишається частина об'єкту на позитивній стороні площини розрізу. У зворотному випадку - буде створений новий об'єкт 3DSolid.

Рис. 5.11 Вікно системи в режимі виконання команди Slice

5.4 Програмна реалізація та опис основних процедур і функцій розробленої системи


Як було зазначено вище, зовнішній вигляд інтерфейсу залежить від обраного методу. Нижче наведений програмний код, за допомогою якого це було реалізовано.:=ExtractFilePath(Application.ExeName)+'html\' //визначення каталогу, де розташований виконавчий файл системи;not CheckBox1.Checked then //якщо не обраний режим „Приховати вікно з інформацією”.Navigate(s2+'3d\'+inttostr(RadioGroup1.ItemIndex)+'.htm');

//в компонент WebBrowser завантажується відповідний файл. Його назва - номер обраного для побудови примітивуRadioGroup1.ItemIndex of

: begin //якщо обраний режим побудови примітива box всіх панелі, на яких розташовані компоненти для вводу параметрів інших примітивів будуть приховані_box.Visible:=true;_s.Visible:=false;_cyl.Visible:=false;_con.Visible:=false;_wedge.Visible:=false;_tor.Visible:=false;

: begin ... end;

Запуск та візуалізація AutoCAD відбувається за допомогою наступної процедуриTForm1.BitBtn1Click(Sender: TObject);:=CreateOleObject('Autocad.application');//створення COM-об’єкту. a - глобальна змінна типу Variant.visible:=true;//візуалізація AutoCAD;

Розглянемо процедуру OnClick для кнопки „Виконати”, за допомогою якою виконуються основні розглянуті методи.PageControl1.ActivePageIndex=0 then //якщо обрана вкладка ”Команди побудови 3D-примітивівRadioGroup1.ItemIndex of

: begin //якщо обраний примітив Box:=VarArrayCreate([0,2], varDouble);// створюємо масив з трьома елементами типу Double/ ввод параметрів/[0]:=strtofloat(x_b.Text); //координата х центра примітива[1]:=strtofloat(y_b.Text); ///координата y[2]:=strtofloat(z_b.Text);// /координата z:=strtofloat(b_l.Text); //довжина паралелепіпеду (по осі Х)cub.Checked then // якщо обраний режим „куб”:=l; h:=l; //ширина та висота дорівнює довжиніelse:=strtofloat(b_w.Text);// ширина паралелепіпеду (по осі Y):=strtofloat(b_h.Text);// висота паралелепіпеду (по осі Z);('Параметри задані невірно!');; //вихід із процедури;:=a.activedocument.ModelSpace.addbox(c1,l,w,h);// побудова паралелепіпеду_vibor.Items.Add('Ящик');// в список створених об’єктів додається його назва для подальшоъ роботи_vibor2.Items.Add('Ящик');;

Схожим чином будуються інши примітиви. Наведемо тільки команди, що викликають відповідні методи об’єктної моделі:

Побудова кулі::=a.activedocument.ModelSpace.addSphere(c1,rad);

Побудова циліндру::=a.activedocument.ModelSpace.AddCylinder(c1,r_c,h_c);

Побудова конусу::=a.activedocument.ModelSpace.AddCone(c1,r_con,h_con);

Побудова клину::=a.activedocument.ModelSpace.addwedge(c1,l_w,w_w,h_w);

Побудова тору::=a.activedocument.ModelSpace.addtorus(c1,r_tor,r_tube);

Процес присвоєння обраному із списку об’єкту відбувається наступним чином:PageControl1.ActivePageIndex=1 then //якщо обрана вкладка „Візуалізація об’єктівCombo_vibor.Text='Ящик' then //якщо обраний об’єкт - паралелепіпед.color:= cbColors.ItemIndex else //властивості color об’єкту присвоюється індекс обраного у списку кольоруCombo_vibor.Text='Шар' then

...

Виконання команд редагування тривимірних примітивів також реазізований у цій процедуріPageControl1.ActivePageIndex=2 then // якщо обрана вкладка „Команди редагування 3D-примітивів”RadioGroup4.ItemIndex of

: begin // якщо обрана команда Rotate3D

try:=strtofloat(t_Angle.Text)*pi/180; / /введення параметру - кута повороту('Параметры заданы неверно! ');; //вихід із процедури;Combo_vibor2.Text='Ящик then //якщо обрано примітив Ящик:=VarArrayCreate([0,2], varDouble); //створюємо масив, який буде містити координати центру мас паралелепіпеда:=b.Centroid; //визначаємо координати центру мас[2]:=0;:=VarArrayCreate([0,2], varDouble);// створюємо масив, який буде містити координати другої точки осі поворотуOsi_list.ItemIndex of // визначаємо, яку з координатних осей обрав користувач

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=0; end; // ось OY

2:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=10; end;// ось OZ

end;.rotate3d(z,p2,angle)// викликаємо метод Rotate3D для обраного об’єктуelseCombo_vibor2.Text='Шар' then

...

Дуже схожим чином викликається метод Rotate3D. Єдина відмінність - координати площини симетрії визначаються трьома точками. Як і минулого разу, для визначення координат центру мас використовуємо метод Centroid.

Зокрема, для об’єкту „паралелепіпед” це буде виглядати наступним чином::=b.Centroid;[0]:=z[0]+l/2; z[1]:=z[1]+w/2; z[2]:=h/2; //координати одного з кутів

В даному випадку змінні l, w та h - це, відповідно, довжина, ширина та висота паралелепіпеду.

Для кулі в якості величини зсуву ми використовуємо значення радіусу:[0]:=z[0]+rad; z[1]:=z[1]+rad; z[2]:=rad;

Для циліндра та конуса, відповідно, значення радіуса основи та висоту.[0]:=z[0]+r_c; z[1]:=z[1]+r_c; z[2]:=h_c;

Базова точка площини симетрії для примітива „клин” знаходиться аналогічно паралелепіпеду. Для примітива „тор” використовується значення радіусу тора та радіусу трубки.[0]:=z[0]+r_tor; z[1]:=z[1]+r_tor; z[2]:=r_tube;

Як вже було зазначено вище, команда Slice (розріз) дозволяє перерізати обране тіло на частини за допомогою площини, що визначається трьома точками.Combo_vibor2.Text='Ящик' then:=VarArrayCreate([0,2], varDouble);:=b.Centroid;[0]:=z[0]; z[1]:=z[1]; z[2]:=0; //знаходимо координати центра мас тіла:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_s.ItemIndex of //якщо обрана площина XY

0:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];//координати першої точки площини - зсув від центру мас по осі Y

p1[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2]; ];//координати другої точки площини - зсув від центру мас по осі Z

p3[0]:=z[0]; p3[1]:=z[1]; p3[2]:=z[2]-h/3; //координати третьої точки площини - зсув від центру мас по осі Z на величину, що дорівнює третині висоти паралелепіпеду;

:begin ... end;

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

Після визначення параметрів використовується метод SliceSolid. При цьому враховується, в якому з режимів буде працювати команда (залишити обидві сторони чині):=b.SliceSolid(z,p2,p1,both.Checked);both.Checked then // якщо обраний режим „Залишити обидві сторони”.move(z,p3); // використовуємо метод move для переміщення щойно створеного об’єкту. Базова точка - центр мас вихідного об’єкту.

Розглянемо більш детально процедуру візуалізації об’єктів. Для цього будемо викликати метод sendcommand, який дозволяє передати в AutoCAD текст командної строки для виконання. Вибір точки зору на об’єкт реалізований за допомогою перемикачів. Базова команда, що буде передана має назву вид. Для того, що установити параметри, передаємо текст відповідної опції.TForm1.RadioGroup2Click(Sender: TObject);RadioGroup2.ItemIndex of

: a.activedocument.sendcommand('-вид _swiso'+#13);

: a.activedocument.sendcommand('-вид _seiso'+#13);

: a.activedocument.sendcommand('-вид _nwiso'+#13);

: a.activedocument.sendcommand('-вид _neiso'+#13);

: a.activedocument.sendcommand('-вид _top'+#13);

: a.activedocument.sendcommand('-вид _bottom'+#13);

: a.activedocument.sendcommand('-вид _left'+#13);

: a.activedocument.sendcommand('-вид _right'+#13);

: a.activedocument.sendcommand('-вид _front'+#13);

: a.activedocument.sendcommand('-вид _back'+#13);;;

Лістінг командної строки AutoCAD при виконанні цього методу наведено нижче.

Команда: -вид Задайте опцию

[?/Категории/сЛои/Ортогонально/Удалить/Восстановить/Сохранить/Пск/Рамка]: _swiso

Выполняется регенерация модели.

Аналогічним чином відбувається візуалізація моделі. Тут викликається команда shademode з опціями, що відповідають обраним методам візуалізації.TForm1.RadioGroup3Click(Sender: TObject);RadioGroup3.ItemIndex of

: a.activedocument.sendcommand('shademode 3'+#13);

: a.activedocument.sendcommand('shademode с'+#13);

: a.activedocument.sendcommand('shademode у'+#13);;;

В цьому випадку маємо наступне:

Команда: shademode Текущий режим: Скрытие линий

Задайте опцию [2М каркас/3М

каркас/Скрытие/Плоское/Гуро/пЛоское+кромки/гУро+кромки] <Скрытие линий>: у

Детальної уваги заслуговує також процедура формування списку кольорів.TForm1.cbColorsDrawItem(Control: TWinControl; Index: Integer;: TRect; State: TOwnerDrawState);: TRect; C, AColor: TColor; P: TPoint; S1: String;:= AcadColorToColor(Index);cbColors.Canvas do

// Залити прямокутник фоновим кольором:= Brush.Color;.Color:= cbColors.Color;(Rect);

// Залити прямокутник кольору:= Rect;.Right:= R.Bottom - R.Top + R.Left;(R, -2, -2);.Color:= AColor;(R);

// Обведення прямокутника кольору.Color:= clBlack;(R);

// Залити прямокутник фокусу.Color:= C;:= Rect;.Left:= R.Bottom - R.Top + R.Left;(R);

// Показати текст:= Rect;.Left:= R.Bottom - R.Top + R.Left + 2;:= cbColors.Items[Index];

// Якщо потрібно відображати компоненти кольору - додати їх значення

// до рядку з його індексомFShowColorValues then S:= S + Format(' (%d, %d, %d)', [GetRValue(AColor), GetGValue(AColor), GetBValue(AColor)]);R do:= Point(Left, Top + (Bottom - Top - TextHeight(cbColors.Items[Index])) div 2);

// Замінити індекси логічних кольорів на "легкі" для читанняIndex of

: TextRect(R, P.X, P.Y, 'ByBlock');

: TextRect(R, P.X, P.Y, 'ByLayer');(R, P.X, P.Y, S);;

// Якщо елемент у фокусі, то...odFocused in State then

// ...стерти стару рамку фокусу (яка на всьому Rect)(Rect);

// ...і намалювати нову тільки на текст(Classes.Rect(R.Left - 2, R.Top, R.Right, R.Bottom));;;;

6. ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ


Визначення витрат на створення програмного продукту

Витрати на створення програмного продукту складаються з витрат по оплаті праці розробника програми і витрат по оплаті машинного часу при відладці програми:

Зспп=Ззпспп +Змвспп+Зобщ,

де

Зспп - витрати на створення програмного продукту;

Ззпспп - витрати на оплату праці розробника програми;

Змвспп - витрати на оплату машинного часу;

Зобщ - загальні витрати.

Витрати на оплату праці розробника програми (Ззпспп) визначаються шляхом множення трудомісткості створення програмного продукту на середню годинну оплату програміста (з урахуванням коефіцієнта відрахувань на соціальні потреби):

Ззпспп=t•Tчас.

Розрахунок трудомісткості створення програмного продукту.

Трудомісткість розробки програмного продукту можна визначити таким чином:

= to+ tа+ tб+ tп+ tд+ tот,

де

to - витрати праці на підготовку опису завдання;

tа - витрати праці на розробку алгоритму рішення задачі;

tб - витрати праці на розробку блок-схеми алгоритму рішення задачі;

tп - витрати праці на складання програми по готовій блок-схемі;

tд - витрати праці на підготовку документації завдання;

tот - витрати праці на відладку програми на ЕОМ при комплексній відладці завдання.

Складові витрат можна виразити через умовне число операторів Q. У нашому випадку число операторів у відлагодженій програмі Q=850.

Розрахунок витрат праці на підготовку опису завдань.

Оцінити витрати праці на підготовку опису завдання не можливо, оскільки це пов'язано з творчим характером роботи, натомість оцінимо витрати праці на вивчення опису завдання з урахуванням уточнення опису і кваліфікації програміста:

= Q•B/(75…85•K),

где

B - коефіцієнт збільшення витрат праці унаслідок недостатнього опису завдання, уточнень і деякої недоробки, B=1,2…5;

K - коефіцієнт кваліфікації розробника, для тих, що працюють до 2 років K=0,8;

Коефіцієнт В приймаємо рівним 2.

Таким чином отримаємо:

to= 850•2/(78•0,8) = 27,24 (люд-год).

Розрахунок витрат праці на розробку алгоритму.

Витрати праці на розробку алгоритму рішення задачі:

а = Q/(60…75•K)

а = 850/(70•0,8)=15,18 (люд-год).

Розрахунок витрат праці на розробку блок-схеми.

Витрати праці на розробку блок-схеми алгоритму рішення задачі обчислимо таким чином:

б= Q/(60…75•K)

б = 850/(71•0,8)=14,97 (люд-год).

Розрахунок витрат праці на складання програми.

Витрати праці на складання програми по готовій блок-схемі обчислимо таким чином:

п= Q/(60…75•K)

п = 850/(72•0,8)=14,76 (люд-год).

Розрахунок витрат праці на відладку програми.

Витрати праці на відладку програми на ЕОМ при комплексній відладці завдання:

от=1.5• tAот,

де tAот - витрати праці на відладку програми на ЕОМ при автономній відладці одного завдання;

tAот= Q/(40…50•K)

от = 850/(48•0,8)=22,14 (люд-год)

Звідси tот=1,5•22,14=33,21 (люд-год).

Розрахунок витрат праці на підготовку документації.

Витрати праці на підготовку документації по завданню визначаються:

д= tдр+ tдо,

де

tдр - витрати праці на підготовку матеріалів в рукопису;

tдо - витрати на редагування, друк і оформлення документації;

др= Q/(150…200•K)

др = 850/(180•0,8) = 5,90 (люд-год)

до=0.75•tдр

до =0.75•5,90=4,43 (люд-год)

Звідси

tд=5,90+4,43=10,33 (люд-год).

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

t = 27,24+15,18+14,97+14,76+33,21+10,33 =115,69 (люд-год).

Розрахунок середньої зарплати програміста.

Середня зарплата програміста в сучасних ринкових умовах може варіюватися в широкому діапазоні. Для розрахунку візьмемо середню годинну оплату праці, яка складає Тчас=8 грн/година, що означає 1408 грн/міс при 8-ми годинному робочому дні і 5-ти денному робочому тижню.

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

·        Пенсійний фонд (33,2)

·        Соцстрах (1,5%)

·        Фонд зайнятості (1,3%)

·        Соціальне страхування на випадок нещасного випадку або профзахворювання (1%).

Разом нарахування на соціальні потреби в місяць складають 37%.

Звідси витрати на оплату праці програміста складають:

Ззпспп= (8+0,37*8)*115,69=1267,96 грн.

Витрати на оплату машинного часу.

Витрати на оплату машинного часу при відладці програми визначаються шляхом множення фактичного часу відладки програми на ціну машино-години орендного часу:

Змвспп =Счас•tЕОМ,

де

Счас - ціна машино-години орендного часу, грн/год;ЕОМ - фактичний час відладки програми на ЕОМ;

Розрахунок фактичного часу відладки.

Фактичний час відладки обчислимо за формулою:

еом = tп + tдо + tот ;

еом =14,76+4,43+33,21 = 52,40 год.

Розрахунок ціни машино-години.

Ціну машино-години знайдемо по формулі:

Сгод = Зеом/Теом,

де

Зеом - повні витрати на експлуатацію ЕОМ на протязі року;

Теом - дійсний річний фонд часу ЕОМ, год/рік.

Розрахунок річного фонду часу роботи ПЕОМ.

Загальна кількість днів в році - 365. Число святкових і вихідних днів - 114 (10 святкових і 52•2- вихідні).

Час простою в профілактичних роботах визначається як щотижнева профілактика по 3 години.

Разом річний фонд робочого часу ПЕОМ складає:

Теом = 8•(365-114)-52•3=1852 год.

Розрахунок повних витрат на експлуатацію ЕОМ.

Повні витрати на експлуатацію можна визначити по формулі:

Зеом = (Ззп+ Зам+ Зэл+ Здм+ Зпр+ Зін),

де,

Ззп - річні витрати на заробітну плату обслуговуючого персоналу, грн/рік;

Зам - річні витрати на амортизацію, грн/рік;

Зэл - річні витрати на електроенергію, споживану ЕОМ, грн/рік;

Здм - річні витрати на допоміжні матеріали, грн/рік;

Зпр - витрати на поточний ремонт комп'ютера, грн/рік;

Зін - річні витрати на інші і накладні витрати, грн/рік.

Амортизаційні відрахування.

Річні амортизаційні відрахування визначаються по формулі:

Зам=Сбал•Нам,

де Сбал - балансова вартість комп’ютера, грн/шт.;

Нам - норма амортизації, %;

Нам =25%.

Балансова вартість ПЕОМ включає відпускну ціну, витрати на транспортування, монтаж устаткування і його відладку:

Сбал = Срин +Зуст ;

де

Срин - ринкова вартість комп’ютера, грн/шт.,

Зуст - витрати на доставку і установку комп'ютера, грн/шт;

Комп'ютер, на якому велася робота, був придбаний за ціною Срин =5000 грн, витрати на установку і наладку склали приблизно 10% від вартості комп'ютера.

Зуст = 10%• Срин

Зуст =0.1•5000=500 грн.

Звідси, Сбал = 5000 +500 =5500 грн./шт.;

а Зам=5500•0,25= 1375 грн/год.

Розрахунок витрат на електроенергію.

Вартість електроенергії, споживаної за рік, визначається по формулі:

Зел = Реом • Теом • Сел • А,

де

Реом - сумарна потужність ЕОМ,

Теом - дійсний річний фонд часу ЕОМ, год/рік;

Сел - вартість 1кВт•год електроенергії;

А - коефіцієнт інтенсивного використання потужності машини.

Згідно технічному паспорту ЕОМ Реом =0.22 кВт, вартість 1кВт•год електроенергії для споживачів Сел =0,2436 грн., інтенсивність використання машини А=0.98.

Тоді розрахункове значення витрат на електроенергію:

Зел = 0.22 • 1852• 0.2436• 0.30 = 29,78 грн.

Розрахунок витрат на поточний ремонт.

Витрати на поточний і профілактичний ремонт приймаються рівними 5% від вартості ЕОМ:

Зтр = 0.05• Сбал

Зтр = 0.05• 5500 = 275 грн.

Розрахунок витрат на допоміжні матеріали.

Витрати на матеріали, необхідні для забезпечення нормальної роботи ПЕОМ, складають близько 1 % від вартості ЕОМ:

Звм =0,01• 5500 =55 грн.

Інші витрати по експлуатації ПЕОМ.

Інші непрямі витрати, пов'язані з експлуатацією ПЕОМ, складаються з вартості послуг сторонніх організацій і складають 5% від вартості ЕОМ:

Зпр = 0,05• 5500 =275 грн.

Річні витрати на заробітну плату обслуговуючого персоналу.

Витрати на заробітну плату обслуговуючого персоналу складаються з основної заробітної плати, додаткової і відрахувань на заробітну плату:

Ззп = Зоснзп +Здопзп +Зотчзп.

Основна заробітна плата визначається, виходячи із загальної чисельності тих, що працюють в штаті:

Зоснзп =12 •∑Зіокл,

де

Зіокл - тарифна ставка і-го працівника в місяць, грн;

- кількість місяців.

У штат обслуговуючого персоналу повинні входити інженер-електронщик з місячним окладом 1500 грн. І електрослюсар з окладом 1200 грн. Тоді, враховуючи, що даний персонал обслуговує 20 машин, маємо витрати на основну заробітну плату обслуговуючого персоналу, які складуть:

Зоснзп = 12•(1500+1200)/20=1620 грн.

Додаткова заробітна плата складає 60 % від основної заробітної плати:

Здопзп = 0.6 •1620 = 972 грн.

Відрахування на соціальні потреби складають 37% від суми додатковою і основною заробітних плат:

Зотчзп = 0,37•(1620 + 972) = 959,04 грн.

Тоді річні витрати на заробітну плату обслуговуючого персоналу складуть:

Ззп = 1620 +972 +959,04 = 3551,04 грн.

Повні витрати на експлуатацію ЕОМ в перебігу року складуть:

Зеом = 3551,04 + 1375+ 29,78 + 55 + 275+ 275= 5560,82 грн.

Тоді ціна машино-години часу, що орендується, складе

Сгод = 5560,82 /1852 = 3 грн.

А витрати на оплату машинного часу складуть:

Змвспп =Сгод•tеом

Змвспп = 3 • 21,68= 65,04 грн.

Розрахунок загальних витрат.

Загальні витрати - 643

Зспп=Ззпспп +Змвспп+Ззаг

Зспп =1267,96+65,04+643=1976 грн.

Тобто собівартість програмного продукту 1976 грн.

А зараз визначимо ціну програмного продукту:

Ц = Зспп + Р,

Где Ц - ціна програмного продукту;

Р - 15% від витрат на створення програмного продукту.

Ц = 1976 +395,55 =2371,55 грн.

Ціна програмного продукту дорівнює 2371,55 грн.

Оскільки розробка має дослідницький характер, аналогів у розробленого програмного забезпечення немає. Але можна зазначити, що розробки подібного класу коштують близько 700$.

Таким чином, економія від використання розробленої програми представлятиме:

,7 - курс долара Національного банку України

ЕК = $700 * 7,7-2371,55 = 3018,45 грн.

7. ОХОРОНА ПРАЦІ


Комплекс розроблених організаційних заходів і технічних засобів захисту, що є в даний час в нашій країні, накопичений передовий досвід роботи ряду обчислювальних центрів показує, що є можливість добитися значно великих успіхів в справі усунення дії на працюючих небезпечних і шкідливих виробничих чинників. Проте стан умов праці і його безпеки у ряді комп’ютерних класів ще не задовольняють сучасним вимогам. Оператори ЕОМ, оператори підготовки даних, студенти ще стикаються з дією таких фізично небезпечних і шкідливих виробничих чинників, як підвищений рівень шуму, підвищена температура зовнішнього середовища, відсутність або недостатня освітленість робочої зони, електричний струм, статична електрика і інші.

Правила охорони праці при експлуатації електронно-обчислювальних машин розповсюджуються на всі підприємства, установи, організації, юридичні особи, незалежно від форми власності, видів діяльності, і на фізичні особи (що займаються підприємницькою діяльністю з правом найму робочої сили), які здійснюють розробку, виробництво і застосування електронно-обчислювальних машин і персональних комп'ютерів, у тому числі і на особи, що мають робочі місця, обладнані ЕОМ, або виконуючих обслуговування, ремонт і наладку ЕОМ.

Законодавство України про охорону праці базується на:

Конституція України, яка гарантує права громадян на працю, відпочинок, охорону здоров’я, медичну допомогу і страхування;

Закон України „Про охорону праці”, де вказано, що державна політика в області охорони праці базується на пріоритеті життя і здоров’я людей в умовах їх трудової діяльності. Відповідальність за створення нормальних і безпечних умов труда несе роботодавець незалежно від форми власності підприємства чи установи які здійснюють розробку виробництва та застосування ПЕОМ і ПК;

Норми штучного та природного освітлення визначені СНиП;

Закон України „Про забезпечення санітарного та епідемічного благополуччя населення” де вказані основні вимоги гігієни та санітарії;

Параметри мікроклімату на робочих місцях регламентовані Держстандартом і ДСН;

Категорія робіт по величині загальних енерговитрат встановлена ДСН;

Закон України „Про загальнообов’язкове державне соціальне страхування від нещасного випадку на виробництві та професійного захворювання, які спричинили втрату працездатності”, який гарантує право трудящих на соціальний захист і компенсацію постраждалим матеріальних втрат при травмуванні і професійного захворювання;

Кодекс законів про працю (КЗпП) де викладені окремі вимоги охорони праці;

Пожежна безпека викладена в законі України „Про пожежну безпеку” і „Правила про пожежну безпеку в Україні”

Крім того є ряд Державних стандартів, правил, норм, інструкцій та інших нормативних документів, регламентуючих питання охорони праці.

7.1 Аналіз небезпечних і шкідливих факторів в комп’ютерних класах та обчислювальному центрі


Нанесення травми людині в умовах виробництва обумовлене наявністю небезпечних виробничих чинників:

підвищенні значення електричного струму, статичної електрики та рівня електромагнітних випромінювань;

підвищений рівень рентгенівських випромінювань;

підвищений рівень шуму;

несприятливі мікрокліматичні умови;

недостатнє або надмірне освітлення;

психофізіологічні шкідливі і небезпечні виробничі чинники.

Робочим місцем вважається місце постійного чи періодичного перебування працюючого для спостереження й ведення виробничого процесу чи експерименту. Організація робочого місця заключається у виборі робочої пози, визначенні робочих зон, розміщенні органів управління, індикаторів, інструментів і заготовок. Частина простору робочого місця, в якому здійснюються робочі процеси, може бути розділена на зони. Робоча поза буде найменш втомлювальною при умові, що робоча зона сконструйована правильно, тобто забезпечується відповідність цієї зони з оптимальним полем зору працюючого.

Робоче місце, устатковане відео-терміналом, забезпечується:

. належними умовами освітлення приміщення й робочого місця, відсутністю відблисків;

. відповідністю оптимальних параметрів мікроклімату;3. належними ергономічними характеристиками основних елементів робочого місця.

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

Відповідно діючим нормативним документам площа приміщення 13,0 м²; об’єм - 20 м³. Стіна, стеля, підлога приміщення виготовляються з матеріалів, дозволених для оформлення приміщень санітарно-епідеміологічним наглядом. Підлога приміщення вкрита діелектричним килимком, випробуваним на електричну міцність.

Висота робочої поверхні столу для відео-терміналу - 690 мм, ширина повинна забезпечувати можливість виконання операцій в зоні досягнення моторного ходу; висота столу 725 мм, ширина 800 мм, глибина 900 мм. Простір для ніг: висота 600 мм, ширина 500 мм, глибина на рівні колін 500 мм, на рівні витягнутої ноги 650мм.

Ширина й глибина сидіння 400 мм, висота поверхні сидіння 450 мм, кут нахилу поверхні від 15º вперед до 5º назад. Поверхня сидіння плоска, передній край закруглений.

Заземлення конструкцій, які знаходяться в приміщенні надійно захищені діелектричними щитками. В приміщенні з ПЕОМ кожен день проводиться вологе прибирання.

В доступних місцях знаходяться аптечки першої медичної допомоги.

Приміщення з ПЕОМ оснащено системою автоматичної пожежної сигналізації, а також устатковане засобами пожежегасіння. Підходи до засобів пожежегасіння вільні. Приміщення має кімнати для відпочинку, приймання їжі, психологічної розгрузки та інші побутові приміщення.

Важливе значення для створення сприятливих умов праці має культура праці й виробнича естетика. Чистота на робочому місці, правильно підібрана колірне фарбування приміщень, інвентарю, устаткування, форма й покрій робочого одягу, спеціально підібрана музика - все це створює гарний настрій, підвищує життєвий тонус і працездатність. Естетичні умови на виробництві мають істотне значення не тільки для оздоровлення, полегшення праці, але й для підвищення його привабливості і продуктивності. У зв'язку із цим на промислових підприємствах велике значення надається промисловій естетиці.

Як самостійна галузь знань промислова естетика і теоретично і організаційно сформувалась порівняно недавно. Вона вивчає закони художньої творчості в сфері виробництва. Коло питань, розроблювальних промисловою естетикою, дуже широкий. Це раціональне колірне оформлення промислових приміщень і встаткування, розумна організація робочого місця, художнє конструювання верстатів, машин, інструментів, впровадження функціональної музики, художня розробка моделей робочого одягу, устаткування стендів наочної агітації, озеленення території цехів і підприємств.

Колір є одним з найбільш потужних засобів емоційного впливу на людину. Колір робочих приміщень, устаткування, механізмів викликає в людини певні емоції, впливає на стомлюваність, травматизм, брак у роботі, а отже, на продуктивність праці. Впливаючи на нервову систему, колір збуджує або заспокоює, створює ілюзію тепла або холоду, тяжкості або легкості, наближення або віддалення. Колірне фарбування виробничих приміщень доцільно робити з урахуванням технологічного призначення приміщень, умов роботи, температури, характеру висвітлення й вимог охорони праці. Колір устаткування повинен бути м'яким, спокійним, психологічно сприятливим. У яскраві контрастні кольори фарбують органи керування встаткування, рухливі частини.

У виробничому інтер'єрі колір також відіграє попереджуючу роль, використовується для зображення технологічних символів і всіляких сигналів. Наприклад, при будівництві промислових об'єктів трубопроводи різного призначення (для води, кислоти, газу) пофарбовані в різний колір. Усім відомі сигнально-попереджуючі кольори: червоний - стоп, небезпечно; жовтий - можлива небезпека; зелений - повна безпека. З економічної точки зору раціональне фарбування робочих приміщень і встаткування підвищує продуктивність праці на 5-20%, зменшує число нещасних випадків.

Принципам організації праці повинно відповідати і взаємне компонування робочих місць у рамках офісного приміщення, так і структура індивідуального робочого місця.

Основні принципи ергономічної організації робочого місця - комфорт і мінімізація навантажень. Зрозуміло, принципам ергономіки повинна відповідати й використовувані меблі. Наприклад, зручне крісло, у якому можна без шкоди для здоров'я працювати тривалий час, повинне бути оснащений підлокітниками й підголівником, що знімають навантаження з м'язів плечового поясу. Пружна спинка анатомічної форми зменшує навантаження на хребет. У результаті конструкція рівномірно підтримує все тіло. Також крісло повинне регулюватися по висоті й глибині сидіння, залежно від ваги й росту людини.

Серед столів найбільш ергономічною визнана криволінійна кутова форма. За рахунок увігнутості більша частина їхньої площі виявляється використовуваної, оскільки попадає в зону охоплення руками людини, рівну 35-40 см.

Самим оптимальним фахівцями вважається розташування меблів за принципом «усе під рукою», коли всі необхідні для щоденної роботи полиці, тумби, шафи перебувають на відстані витягнутої руки. Це дозволяє виключити непотрібні витрати енергії й зосередиться на виконанні прямих обов'язків.

7.2 Заходи щодо нормалізації шкідливих і небезпечних факторів


Захист від електромагнітних випромінювань

На сьогоднішній день основним засобом захисту від електромагнітних випромінювань, що застосовуються в обчислювальній техніці є екранування джерел випромінювання. Сьогодні всі монітори, що випускаються, а також блоки живлення мають корпус, виконаний зі спеціального матеріалу, що практично повністю затримує проходження електромагнітного випромінювання. Застосовуються також спеціальні екрани, що зменшують ступінь впливу електромагнітних і рентгенівських променів на оператора.

Для зниження електромагнітного впливу на людину-оператора використовуються також раціональні режими роботи, при яких норма роботи на ПЕОМ не повинна перевищувати 50 % робочого часу.

Захист від ураження електричним струмом

При роботі із програмним продуктом, приміщення, по ступені електронебезпечності відносяться до категорії без підвищеної небезпеки - приміщення сухі, з нормальною температурою, ізольованими підлогами, безпильні, що мають малу кількість заземлених предметів. Комп'ютер харчується від однофазної мережі змінного струму промислової частоти із заземленої нейтраллю, напругою 220В.

Системний блок комп'ютера має напруги сигналів ТТЛ рівнів (-1,+4 В), цифрові й аналогові мікросхеми живляться постійними напругами ±5 і ±12 В, які виходять шляхом перетворення змінної напруги 220В в блоці живлення. Блок живлення містить у собі схеми перетворення напруги, схеми стабілізації й схему захисного відключення при короткому замиканні. Так як корпус комп'ютера виконаний з металу, то існує небезпека пробою фази на корпус. Монітори сучасних комп'ютерів практично завжди виготовляються із пластику, тому незважаючи на велику напругу, що є присутнім у моніторі, поразку струмом людини практично виключено.

Оскільки влучення людини під вплив високої напруги в даному пристрої можливо тільки через аварію (пробій ізоляції), то розрахуємо можливий струм через тіло людини (Ih) при торканні частин схеми, що перебувають під напругою 220В.

;

де U - Напруга струмоведучих елементів, В,=1000 Ом - опір тіла людини.

Отримане значення вище смертельного порогу (0.1 А для перемінного струму), значить необхідно передбачити заходи щодо захисту людини від поразки електричним струмом.

) Оскільки мережева напруга перетворюється в окремому блоці (блоці живлення), то він виконаний у закритому металевому корпусі й электрично з'єднаний з корпусом усього пристрою в цілому;

) Корпус усього комп'ютера заземлений, за допомогою заземлюючого виводу в мережному шнурі або окремому заземлюючому проводові;

) Застосований мережний шнур з подвійною ізоляцією.

Захист від статичної електрики

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

На робочих місцях всі металеві та електропровідні неметалеві обладнання заземлені.

Захист від шуму та вібрації

Ефективне рішення проблеми захисту від впливу шуму досягається проведенням комплексу заходів, в які входить ослаблення інтенсивності цього шкідливого виробничого чинника в джерелах і на шляху розповсюдження звукових хвиль.

Зниження виробничого шуму в приміщеннях, де розміщені ПЕОМ, досягається за рахунок акустичної обробки приміщення - зменшення енергії відбитих хвиль, збільшення еквівалентної площі звукопоглинаючих поверхонь, наявність в приміщеннях штучних звукопоглиначів.

З метою зниження шуму в самих джерелах встановлюються віброгасячі і шумогасячі прокладки або амортизатори. В якості засобів звукопоглинання застосовуються не горючі або тяжко горючі спеціальні перфоровані плити, панелі, мінеральна вата з максимальним коефіцієнтом поглинання в межах частот 31.5-8000 Гц.

Оздоровлення повітряного середовища

Для створення нормальних умов роботи програмістів і операторів ПЕОМ в машинному залі використовується система кондиціювання, що забезпечує необхідні оптимальні мікрокліматичні параметри і чистоту повітря.

В холодні періоди року температура повітря, швидкість його руху і відносна вологість повітря відповідно складають: 22-24 С°; 0,1 м/с; 40-60%; в теплі періоди року температура повітря - 23-25 С°; відносна вологість 40-60 %; швидкість руху повітря - 0,1 м/с.

Захист від рентгенівського випромінювання

Електронно-променеві трубки, магнетрони, тиратрони та інші електровакуумні прилади, що працюють при напрузі вище 6 кВ, є джерелами „м’якого” рентгенівського випромінювання. При технічній експлуатації апаратури, в якій напруга вище 15 кВ, використовують засоби захисту для відвертання рентгенівського опромінення операторів і інженерно-технічних робітників, бо при такій напрузі рентгенівське випромінювання розсіюється в навколишньому просторі виробничого приміщення.

Шкідливий вплив рентгенівських променів зв’язаний з тим, що порушення міжмолекулярних зв’язків тканинної речовини може призвести до порушення нормальної течії біохімічних процесів і обміну речовин.

Засобами захисту від „м’якого” рентгенівського випромінювання є застосування поляризаційних екранів, а також використання в роботі моніторів, що мають біо-керамічне покриття і низький рівень радіації. В якості засобів захисту від чинності м’яких рентгенівських променів застосовуються екрани з сталевого листа (0,5-1 мм) або алюмінію (3 мм), спеціальної гуми.

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

Забезпечення раціонального освітлення

При правильно розрахованому і виконаному освітленні очі працюючого за комп’ютером протягом тривалого часу зберігають здатність добре розрізняти предмети не втомлюючись. Це сприяє зниженню професійного захворювання очей, підвищується працездатність. Раціональне освітлення відповідає ряду вимог:

достатнє, щоб очі без напруги могли розрізняти деталі;

постійна напруга в мережі не коливається більше ніж на 4%;

рівномірно розподілено по робочим поверхням, щоб очам не приходилося зазнавати різкого контрасту кольорів;

не викликає дії, яка сліпить органи зору працюючого (зменшення блищання джерел, що відбивають світло, досягається застосуванням світильників, які розсіюють світло);

не викликає різких тіней на робочих місцях.

Задачею розрахунку є визначення необхідної потужності електричної освітлювальної установки для створення у виробничому приміщенні заданої освітленості. При проектуванні освітлювальної установки необхідно вирішити наступні основні питання:

вибрати тип джерела світла - рекомендуються газорозрядні лампи, за винятком місць, де температура повітря може бути менш +5°С і напруга в мережі падати нижче 90 % номінального, а також місцевого освітлення (у цих випадках застосовуються лампи розжарювання);

визначити систему освітлення (загальна локалізована або рівномірна, комбінована);

вибрати тип світильників з урахуванням характеристик світорозподілення, умов середовища (конструктивного виконання) та інше;

розподілити світильники і визначити їх кількість (світильники можуть матися в своєму розпорядженні рядами, в шаховому порядку, ромбоподібно);

визначити норму освітленості на робочому місці.

Для розрахунку штучного освітлення використовують в основному три методи. Найчастіше її розраховують по світловому потоку. Для цього визначається світловий потік кожної лампи по нормуючій мінімальній горизонтальній освітленості Еmin (лк) з вираження:

=(Emin·S·K·z) / n1·n·N,

де F - світловий потік лампи в світильнику, лм;- площа приміщення, м2;- коефіцієнт запасу;- коефіцієнт нерівномірного освітлення;- коефіцієнт використання світлового потоку;- кількість ламп в світильнику;- число світильників.

Якщо освітлення здійснюється рядами люмінесцентних ламп, те вираження вирішується відносно N. Значення коефіцієнта n1 визначається по довіднику в залежності від типу світильника, коефіцієнтів відбивання стін Рс, стелі Рп, робітничій поверхні і від розмірів приміщення. Показник приміщення fi визначається з виразу:

= А·В/Нр·(А+В),

де А і В - довжина і ширина освітленого приміщення, м;

Нр - висота підвісу світильника над робітничою поверхнею, м.

У випадку застосування люмінесцентних ламп потрібна кількість світильників N, яка визначається за формулою:

=Emin·S·K·z/F·n1·n

Поділивши число світильників N на число вибраних рядів світильників, визначають число світильників у кожному ряду.

Нехай зал має розміри А=8м, В=5м, h=3м, стеля обладнується світильниками Л201Б з люмінесцентними лампами ЛБ80, технічні характеристики ламп і світильників наведені в таблицях 7.1, 7.2 (згідно Держстандарту 6825-74)

Таблиця 7.1

Тип

Потужність, Вт

Напруга, В

Світловий потік (номін.)

Довжина, мм

Діаметр, мм

ЛБ80

80

110

5220

1500

40


Таблиця 7.2

Серія

Модифікація

Кількість* потужність, шт, Вт

Розміри, мм

Номер групи

Прим.




Довжина

Ширина

Висота



Л201Б

3

2·8

354

127

9

Стеля


Рівень робітничої поверхні над полом 0,8 м, при цьому Нр=2,2 м.

Показник приміщення рівний:=40/2,2 (8+5)=1,3986

По довіднику визначаємо значення коефіцієнта n1 (для значень Рс=0,5, Рп=0,3): n1=0,7. Значення коефіцієнта нерівномірного освітлення приймаємо рівним 1,1, а коефіцієнта запасу - 1,5. При загальному типі освітлення значення Emin=400 лк. Знаючи значення світлового потоку кожної лампи, можемо визначити необхідну кількість світильників:=400·8·5·1,5·1,1/5220·0,7·2=3(штук)

Загальна потужність освітлювальної установки рівна:

Р=2·80·3=480(Вт)

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

 

7.3 Пожежна безпека


Пожежі у обчислювальних центрах, комп’ютерних класах представляють особливу небезпеку, оскільки зв'язані з великими матеріальними втратами. Характерна особливість обчислювальних центрів, комп’ютерних класів - невеликі площі приміщень. Як відомо пожежа може виникнути при взаємодії горючих речовин, окислення і джерел запалення. У приміщеннях обчислювальних центрів, комп’ютерних класів присутні всі три основні чинника, необхідні для виникнення пожежі.

Горючими компонентами є: будівельні матеріали для акустичної і естетичної обробки приміщень, перегородки, двері, підлоги, ізоляція кабелів і ін.

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

Джерелами запалення в комп’ютерних класах можуть бути електронні схеми від ЕОМ, прилади, вживані для технічного обслуговування, пристрою електроживлення, кондиціонування повітря, де в результаті різних порушень утворюються перегріті елементи, електричні іскри і дуги, здатні викликати загоряння горючих матеріалів.

У сучасних ЕОМ дуже висока щільність розміщення елементів електронних схем. У безпосередній близькості один від одного розташовуються сполучні дроти, кабелі. При протіканні по них електричного струму виділяється значна кількість теплоти. При цьому можливе оплавлення ізоляції. Для відведення надмірної теплоти від ЕОМ служать системи вентиляції і кондиціонування повітря. При постійній дії ці системи є додатковою пожежною небезпекою.

Однією з найважливіших задач пожежного захисту є захист будівельних приміщень від руйнувань і забезпечення їх достатньої міцності в умовах дії високих температур при пожежі. Враховуючи високу вартість електронного устаткування комп’ютерних класів, а також категорію його пожежної небезпеки, будівлі для комп’ютерних класів повинні бути 1 і 2 ступені вогнестійкості.

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

До засобів гасіння пожежі, призначених для локалізації невеликих запалювань, відносяться внутрішні пожежні водопроводи, вогнегасники, сухий пісок, азбестові ковдри і т.п.

У будівлях з обчислювальними центрами та комп’ютерними класами пожежні крани встановлюються в коридорах, на майданчиках сходових кліток і входів.

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

Автоматичний захист від виникнення і розповсюдження пожежі здійснюється:

ü  Запобіганням утворенню горючого середовища у виробничих агрегатах, комунікаціях і приміщеннях;

ü  Евакуацією горючих речовин з виробничих місткостей в аварійні;

ü  Перекриттям виробничих комунікацій, вентиляційних систем, шляхом розповсюдження пожеж;

ü  Включенням подачі гасячих засобів на шляху розповсюдження вогню;

ü  Закриттям отворів для запобігання розповсюдження вогню в сусідні приміщення.

Установка електричної пожежної сигналізації складається з датчиків, приймальної станції з джерелами живлення і лінійної мережі. Від оповісників повідомлення у вигляді електричних імпульсів передається по дротах в приймальну станцію і фіксується там оптичними, акустичними або записуючими приладами. Лінійні прилади постійно знаходяться під контрольним струмом. Несправність дротів виявляється автоматично. Оповісники підключаються до приймальної станції по променевій або шлейфовій (кільцевий) системі.

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

відключена від телефонної лінії; при нагріві навколишнього середовища до

критичної температури оповісник спрацьовує і підключає релейну приставку до телефонної лінії, внаслідок чого на комутаторі лунає тривожний сигнал.

Різні тверді, рідкі і газоподібні речовини, вживані для гасіння пожеж, повинні володіти високим ефектом гасіння, швидко припиняти горіння при відносно малій витраті, не заподіювати шкоди організму людини при використовуванні і зберіганні, не надавати шкідливої дії на предмети і матеріали при гасінні пожеж, бути дешевими.

В якості вогнегасних речовин використовують воду, інертні гази, хімічну і легко-механічну піну, тверду вуглекислоту, пісок, спеціальні флюси.

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

Вуглекислий газ застосовується у вогнегасниках і стаціонарних установках. Він використовується, коли застосування води сприяє розповсюдженню горіння або вибуху, або може викликати пошкодження устаткування. Цей газ токсичний. Оскільки вуглекислота не струмопровідна, її використовують для гасіння пожеж електричних установок під напругою. Тверда зневоднена вуглекислота при випаровуванні з поверхні об'єктів, що горять, охолоджує їх і знижує вміст кисню у вогнищі пожежі.

При гасінні пожеж легкозаймистих рідин, електроустаткуванні, цінного лабораторного устаткування і ін. застосовують хімічні піни. Піна є сумішшю газу з рідиною. Піна, розтікаючись по поверхні рідини, що горить, охолоджує і ізолює її від полум'я, перешкоджає виходу пари рідини в зону горіння, зменшує випаровування рідини.

Для гасіння пожеж на початкових стадіях широко застосовуються вогнегасники. По вигляду використовуваної вогнегасної речовини вогнегасники підрозділяються на наступні основні групи. Пінні вогнегасники, застосовуються для гасіння рідин, що горять, різних матеріалів, конструктивних елементів і устаткування, окрім електроустаткування, що знаходиться під напругою.

Газові вогнегасники застосовуються для гасіння рідких і твердих речовин, а також електроустановок, що знаходяться під напругою.

Рідинні вогнегасники дають струмінь водного розчину солей, пінні - хімічної піни (рідкої або густої), газові - вуглекислого газу (звично в суміші з сніжною вуглекислотою і ін.), сухі - порошкоподібної суміші мінеральних солей (на основі бікарбонату натрію).

Справність вогнегасників періодично перевіряють.

У виробничих приміщеннях комп’ютерних класів застосовуються головним чином вуглекислотні вогнегасники, перевага яких є висока ефективність гасіння пожежі, збереження електронного устаткування, діелектричні властивості вуглекислого газу, що дозволяє використовувати ці вогнегасники навіть у тому випадку, коли не вдається знеструмити електроустановку відразу.

Для виявлення початкової стадії загоряння і сповіщення служби пожежної охорони використовують системи автоматичної пожежної сигналізації (АПС) . Крім того, вони можуть самостійно приводити в дію установки пожежегасіння, коли пожежа ще не досягла великих розмірів. Системи АПС складаються з пожежників оповісників, ліній зв'язку і приймальних пультів (станцій) .

Ефективність застосування систем АПС визначається правильним вибором типу оповісників і місць їх установки. При виборі пожежників оповісників необхідно враховувати конкретні умови їх експлуатації: особливості приміщення і повітряного середовища, наявність пожежних матеріалів, характер можливого горіння, специфіку технологічного процесу і т.п. Відповідно до "Типових правил пожежної безпеки" зали ЕОМ, приміщення для зовнішніх пристроїв, що запам'ятовують, підготовки даних, сервісної апаратури, архівів, копіювально-розмножувального устаткування і т.п. необхідно обладнати димовими пожежниками оповісниками. У цих приміщеннях на початку пожежі при горінні різних пластмасових, ізоляційних матеріалів і паперових виробів виділяється значна кількість диму і мало теплоти.

Об'єкти комп’ютерних класів окрім АПС необхідно обладнати установками стаціонарної автоматичної пожежегасіння. Найбільш доцільно застосовувати в комп’ютерних класах установки газового гасіння пожежі, дія яких заснована на швидкому заповненні приміщення вогнегасною газовою речовиною з різким зниженням кисню в повітрі.

 

ВИСНОВКИ


Автоматизація проектування - напрям сучасної науки і техніки, що інтенсивно розвивається. Системи автоматизованого проектування (САПР) стають однією з складових частин гнучких виробничих систем і гнучких автоматизованих виробництв. Система AutoCAD є однією з найпопулярнішої в світі систем автоматичного проектування. AutoCAD є могутнім графічним ядром, на якому базуються багато прикладних пакетів як і від самої фірми AutoDesk, так і від незалежних виробників.

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

Метою даної роботи є дослідження об’єктної моделі та розробка програмного забезпечення на мові Delphi, яке призначене для автоматизації креслення тривимірних об’єктів в середі AutoCAD. Система базується на використанні технології COM. Об'єктна модель AutoCAD - це структура його документів, об'єктів креслення, їх властивостей і методів. Всі ці об'єкти описані в системі COM і можуть бути використані будь-яким мовам програмування.і дозволяє швидко й ефективно розробляти найрізноманітніші інформаційні системи, має розвинуті можливості по створенню інтерфейсу користувача, широкий набір функцій, методів і властивостей для вирішення прикладних розрахунково-обчислювальних задач, особливо при роботі з базами даних. Тому використання саме цієї мови програмування для розробки елементів САПР є актуальним.

Розроблена система може розглядатися в якості довідника, який містить збірку „готових рецептів” для вирішення конкретних конструкторських завдань. Опис структури колекцій, їх методів та властивостей, візуальне представлення результатів виконання фрагментів коду робить цю систему дуже корисною при вивченні особливостей інтеграції Delphi та AutoCAD при тривимірному моделюванні.

СПИСОК ЛІТЕРАТУРИ

1.  Бугрименко Г. А., Лямке В. Н., Шейбоксне Э.-К. С. Автоматизация конструирования на ПЭВМ с использованием системы AutoCAD. - М.: Машиностроение, 1993. - 336 с.

.    Джамп Д. AutoCAD. Программирование. Пер. с англ. - М.: Радио и связь, 1992. - 336 с.

.    Долин П.А. Основы техники безопасности в электроустановках. - М.: Энергоатомиздат, 1984.

.    Жирков С.В. Shareware: профессиональная разработка и продвижение программ. - СПб.: БХВ-Петсрбург, 2003. - 320 с.

.    Елманова Н., Трепалин С., Тенцер А. Delphi и технология COM.

.    Кречко Ю. A. AutoCAD: программирование и адаптация, - М. ДИАЛОГ-МИФИ, 1995.- 240 с.

.    Орлов И.А. Эксплуатация и ремонт ЭВМ, организация работы ВЦ. Москва -1989г.

.    Погорелов В.И. AutoCAD 2005 для начинающих. - СПб.:БХВ-Петербург, 2004.

.    Полещук Н.Н. Visual LISP и секреты адаптации AutoCAD, - СПб.: БХВ-Петербург, 2004,- 576 с

.    Полещук Н.Н. AutoCAD 2004: разработка приложений и адаптация. СПб.: БХВ-Петербург, 2004. - 624 с.

.    Романычева Э. Т., Соколова Т. Ю. Компьютерные технологии инженерной графики в среде AutoCAD 2000. AutoLISP. Учебное пособие. - М.: ДМК, 2000.

.    Романычева Э. Т., Соколова Т. Ю., Шандурина Г. Ф. Инженерная и компьютерная графика. - 2-е изд., перераб. - М. ДМК Пресс, 2001. - 592 с, ил. (Серия «Проектирование»).

.    Романычева Э. Т., Трошина Т. Ю. AutoCAD 2000. - М.: ДМК, 1999.

.    Свет В.Л, AutoCAD: язык макрокоманд и создание кнопок, - СПб.: БХВ-Петербург, 2004. - 320 с.

.    Хейфенц А.Л. Инженерная компьютерная графика. AutoCAD. - СПб.: БХВ-Петербург, 2005.

.    Хейфенц А.Л., Логиновский А.Н., Буторина И.В. 3D-технологии построения чертежа. AutoCAD. - СПб.: БХВ-Петербург, 2005.

.    Хювёнен Э., Сеппянен Й. Мир Лиспа. В 2-х т. Т. 1: Введение в язык Лисп и функциональное программирование. Пер. с финск. М.: Мир, 1990, 447 с.

.    Чуприн А.И. AutoCAD 2005. Лекции и упражнения. - М.:ООО «ДиаСофтЮП», 2005.

.    Шупрута В. В. Delphi 2005. Учимся программировать.

20.     j@alba.ua - адрес автора

21.          http://www.csoft.ru // Сайт компании Csoft

22.     http://www.ad.cctpu.edu.ru/SAPR/SAPR_03/obzor1.htm

.        <http://www.dwg.ru> // Материалы для проектирования

.        http://www.autodesk.ru // AutoDesk - Технология для инноваций

.        <http://www.cad.dp.ua> // Сайт поддержки пользователей САПР под редакцией Виктора Ткаченко

.        <http://cadhouse.nm.ru> // Хижина конструктора

27.          http://vbamodel.narod.ru // Объектная модель AutoCAD

.    http://www.caduser.ru // Информационный портал для профессионалов в области САПР

ДОДАТОК А

Вихідний текст файлів системи

unit Unit1;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,,comobj, StdCtrls, ColorGrd, OleCtrls, SHDocVw, ExtCtrls, Buttons,,uautocad;= class(TForm): TButton;: TPanel;: TPageControl;: TTabSheet;: TRadioGroup;: TTabSheet;: TTabSheet;_rotate3d: TPanel;: TPanel;: TBitBtn;: TBitBtn;: TCheckBox;: TWebBrowser;_box: TPanel;: TLabel;: TLabel;_b: TEdit;: TLabel;_b: TEdit;: TLabel;_b: TEdit;: TLabel;_l: TEdit;: TLabel;_w: TEdit;: TLabel;_h: TEdit;: TCheckBox;: TRadioGroup;: TRadioGroup;: TLabel;: TComboBox;: TCheckBox;_s: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;_s: TEdit;_s: TEdit;_s: TEdit;: TEdit;_cyl: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;_cyl: TEdit;_cyl: TEdit;_cyl: TEdit;_cyl: TEdit;: TLabel;: TLabel;_cyl: TEdit;_con: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;_con: TEdit;_con: TEdit;_con: TEdit;_con: TEdit;_con: TEdit;_wedge: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;_w: TEdit;_w: TEdit;_w: TEdit;_l: TEdit;_w: TEdit;_h: TEdit;_w: TCheckBox;_tor: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;_t: TEdit;_t: TEdit;_t: TEdit;_tor: TEdit;_tube: TEdit;: TLabel;: TLabel;_vibor: TComboBox;: TLabel;: TRadioGroup;: TPanel;: TLabel;_vibor2: TComboBox;: TLabel;_Angle: TEdit;: TLabel;_list: TComboBox;_mirror3d: TPanel;_list_mir: TComboBox;: TLabel;_slice: TPanel;: TLabel;_list_s: TComboBox;: TCheckBox;Button2Click(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn3Click(Sender: TObject);CheckBox1Click(Sender: TObject);cubClick(Sender: TObject);FormShow(Sender: TObject);RadioGroup1Click(Sender: TObject);RadioGroup2Click(Sender: TObject);RadioGroup3Click(Sender: TObject);cbColorsDrawItem(Control: TWinControl; Index: Integer;: TRect; State: TOwnerDrawState);chbShowColorValuesClick(Sender: TObject);FormCreate(Sender: TObject);cub_wClick(Sender: TObject);RadioGroup4Click(Sender: TObject);PageControl1Change(Sender: TObject);Button1Click(Sender: TObject);

{ Private declarations }: Boolean;PopulateColorsList;

{ Public declarations };: TForm1;,c1,b,v,sf,con,t,wedge,cyl,b1,sf1,con1,cyl1,t1,wedge1,b2,sf2,wedge2,cyl2,con2,t2:variant;,url:string;,l,w,h,rad,r_c,h_c,r_con,h_con,l_w,w_w,h_w,r_tor,r_tube,angle:double;

{$R *.dfm}TForm1.PopulateColorsList;: Integer;cbColors do.BeginUpdate;;i:= 0 to 256 do.Add(IntToStr(i));:= 0;.EndUpdate;;;;TForm1.Button2Click(Sender: TObject);p1,p2,u:variant;.rotate3d(c1,p2,30);.color:=5;.activedocument.sendcommand('shademode у'+#13);;TForm1.BitBtn1Click(Sender: TObject);:=CreateOleObject('Autocad.application');.visible:=true;;TForm1.BitBtn3Click(Sender: TObject);p1,p2,z,p3:variant;PageControl1.ActivePageIndex=0 thenRadioGroup1.ItemIndex of

: begin:=VarArrayCreate([0,2], varDouble);[0]:=strtofloat(x_b.Text); c1[1]:=strtofloat(y_b.Text); c1[2]:=strtofloat(z_b.Text);:=strtofloat(b_l.Text);cub.Checked then:=l; h:=l;else:=strtofloat(b_w.Text);:=strtofloat(b_h.Text);;('Параметры заданы неверно!');;;:=a.activedocument.ModelSpace.addbox(c1,l,w,h);_vibor.Items.Add('Ящик');_vibor2.Items.Add('Ящик');;

::=VarArrayCreate([0,2], varDouble);[0]:=strtofloat(x_s.Text); c1[1]:=strtofloat(y_s.Text); c1[2]:=strtofloat(z_s.Text);:=strtofloat(radius.Text);('Параметры заданы неверно!');;;:=a.activedocument.ModelSpace.addSphere(c1,rad);_vibor.Items.Add('Шар');_vibor2.Items.Add('Шар');;

: begin:=VarArrayCreate([0,2], varDouble);[0]:=strtofloat(x_cyl.Text);[1]:=strtofloat(y_cyl.Text); c1[2]:=strtofloat(z_cyl.Text);_c:=strtofloat(r_cyl.Text);_c:=strtofloat(h_cyl.Text);

except('Параметры заданы неверно!');

exit;;:=a.activedocument.ModelSpace.AddCylinder(c1,r_c,h_c);_vibor.Items.Add('Цилиндр');_vibor2.Items.Add('Цилиндр');;

: begin //conus:=VarArrayCreate([0,2], varDouble);[0]:=strtofloat(x_con.Text); c1[1]:=strtofloat(y_con.Text); c1[2]:=strtofloat(z_con.Text);_con:=strtofloat(rad_con.Text);_con:=strtofloat(height_con.Text);

except('Параметры заданы неверно!');

exit;;:=a.activedocument.ModelSpace.AddCone(c1,r_con,h_con);_vibor.Items.Add('Конус');_vibor2.Items.Add('Конус');;

: begin //wedge:=VarArrayCreate([0,2], varDouble);[0]:=strtofloat(x_w.Text); c1[1]:=strtofloat(y_w.Text); c1[2]:=strtofloat(z_w.Text);_w:=strtofloat(wedge_l.Text);cub_w.Checked then_w:=l_w; h_w:=l_w;else_w:=strtofloat(wedge_w.Text);_w:=strtofloat(wedge_h.Text);;('Параметры заданы неверно!');;;:=a.activedocument.ModelSpace.addwedge(c1,l_w,w_w,h_w);_vibor.Items.Add('Клин');_vibor2.Items.Add('Клин');;

://tor:=VarArrayCreate([0,2], varDouble);[0]:=strtofloat(x_t.Text); c1[1]:=strtofloat(y_t.Text); c1[2]:=strtofloat(z_t.Text);_tor:=strtofloat(rad_tor.Text);_tube:=strtofloat(rad_tube.Text);

except('Параметры заданы неверно!');

exit;;:=a.activedocument.ModelSpace.addtorus(c1,r_tor,r_tube);_vibor.Items.Add('Тор');_vibor2.Items.Add('Тор');;; //casePageControl1.ActivePageIndex=1 then //цветCombo_vibor.Text='Ящик' then.color:= cbColors.ItemIndex elseCombo_vibor.Text='Шар' then.color:= cbColors.ItemIndex elseCombo_vibor.Text='Цилиндр' then.color:= cbColors.ItemIndex elseCombo_vibor.Text='Конус' then.color:= cbColors.ItemIndex elseCombo_vibor.Text='Клин' then.color:= cbColors.ItemIndex elseCombo_vibor.Text='Тор' then.color:= cbColors.ItemIndex else;;PageControl1.ActivePageIndex=2 thenRadioGroup4.ItemIndex of

: begin:=strtofloat(t_Angle.Text)*pi/180;

except('Параметры заданы неверно!');

exit;;Combo_vibor2.Text='Ящик' then:=VarArrayCreate([0,2], varDouble);:=b.Centroid;[2]:=0;:=VarArrayCreate([0,2], varDouble);Osi_list.ItemIndex of

:begin p2[0]:=z[0]+10; p2[1]:=z[1]; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=10; end;; //case.rotate3d(z,p2,angle)elseCombo_vibor2.Text='Шар' then:=VarArrayCreate([0,2], varDouble);:=sf.Centroid;[2]:=0;:=VarArrayCreate([0,2], varDouble);Osi_list.ItemIndex of

:begin p2[0]:=z[0]+10; p2[1]:=z[1]; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=10; end;; //case.rotate3d(z,p2,angle)Combo_vibor2.Text='Цилиндр' then:=VarArrayCreate([0,2], varDouble);:=cyl.Centroid;[2]:=0;:=VarArrayCreate([0,2], varDouble);Osi_list.ItemIndex of

:begin p2[0]:=z[0]+10; p2[1]:=z[1]; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=10; end;; //case.rotate3d(z,p2,angle)Combo_vibor2.Text='Конус' then:=VarArrayCreate([0,2], varDouble);:=con.Centroid;[2]:=0;:=VarArrayCreate([0,2], varDouble);Osi_list.ItemIndex of

:begin p2[0]:=z[0]+10; p2[1]:=z[1]; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=10; end;; //case.rotate3d(z,p2,angle)Combo_vibor2.Text='Клин' then:=VarArrayCreate([0,2], varDouble);:=wedge.Centroid;[2]:=0;:=VarArrayCreate([0,2], varDouble);Osi_list.ItemIndex of

:begin p2[0]:=z[0]+10; p2[1]:=z[1]; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=10; end;; //case.rotate3d(z,p2,angle)Combo_vibor2.Text='Тор' then:=VarArrayCreate([0,2], varDouble);:=t.Centroid;[2]:=0;:=VarArrayCreate([0,2], varDouble);Osi_list.ItemIndex of

:begin p2[0]:=z[0]+10; p2[1]:=z[1]; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=0; end;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=10; end;; //case.rotate3d(z,p2,angle);;//case

: begin //mirrorCombo_vibor2.Text='Ящик' then:=VarArrayCreate([0,2], varDouble);:=b.Centroid;[0]:=z[0]+l/2; z[1]:=z[1]+w/2; z[2]:=h/2;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_mir.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];;; //case:=b.mirror3d(z,p2,p1);elseCombo_vibor2.Text='Шар' then:=VarArrayCreate([0,2], varDouble);:=sf.Centroid;[0]:=z[0]+rad; z[1]:=z[1]+rad; z[2]:=rad;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_mir.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];;; //case:=sf.mirror3d(z,p2,p1);Combo_vibor2.Text='Цилиндр' then:=VarArrayCreate([0,2], varDouble);:=cyl.Centroid;[0]:=z[0]+r_c; z[1]:=z[1]+r_c; z[2]:=h_c;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_mir.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];;; //case:=cyl.mirror3d(z,p2,p1);Combo_vibor2.Text='Конус' then:=VarArrayCreate([0,2], varDouble);:=con.Centroid;[0]:=z[0]+r_con; z[1]:=z[1]+r_con; z[2]:=h_con;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_mir.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];;; //case:=con.mirror3d(z,p2,p1);Combo_vibor2.Text='Клин' then:=VarArrayCreate([0,2], varDouble);:=wedge.Centroid;[0]:=z[0]+l/2; z[1]:=z[1]+w/2; z[2]:=h/2;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_mir.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];;; //case:=wedge.mirror3d(z,p2,p1);Combo_vibor2.Text='Тор' then:=VarArrayCreate([0,2], varDouble);:=t.Centroid;[0]:=z[0]+r_tor; z[1]:=z[1]+r_tor; z[2]:=r_tube;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_mir.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];;; //case:=t.mirror3d(z,p2,p1);;;//case}

: begin //sliceCombo_vibor2.Text='Ящик' then:=VarArrayCreate([0,2], varDouble);:=b.Centroid;[0]:=z[0]; z[1]:=z[1]; z[2]:=0;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_s.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]; p3[2]:=z[2]-h/3;;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;[0]:=z[0]+l/3; p3[1]:=z[1]; p3[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]+w/3; p3[2]:=z[2];;; //case:=b.SliceSolid(z,p2,p1,both.Checked);both.Checked then.move(z,p3);elseCombo_vibor2.Text='Шар' then:=VarArrayCreate([0,2], varDouble);:=sf.Centroid;[0]:=z[0]; z[1]:=z[1]; z[2]:=0;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_s.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]; p3[2]:=z[2]-rad/3;;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;[0]:=z[0]+rad/3; p3[1]:=z[1]; p3[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]+rad/3; p3[2]:=z[2];;; //case:=sf.SliceSolid(z,p2,p1,both.Checked);both.Checked then sf2.move(z,p3);Combo_vibor2.Text='Цилиндр' then:=VarArrayCreate([0,2], varDouble);:=cyl.Centroid;[0]:=z[0]; z[1]:=z[1]; z[2]:=0;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_s.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]; p3[2]:=z[2]-h_c/3;;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;[0]:=z[0]+r_c/2; p3[1]:=z[1]; p3[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]+r_c/2; p3[2]:=z[2];;; //case:=cyl.SliceSolid(z,p2,p1,both.Checked);both.Checked then cyl2.move(z,p3);Combo_vibor2.Text='Конус' then:=VarArrayCreate([0,2], varDouble);:=con.Centroid;[0]:=z[0]; z[1]:=z[1]; z[2]:=0;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_s.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]; p3[2]:=z[2]-h_con/3;;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;[0]:=z[0]+r_con/3; p3[1]:=z[1]; p3[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]+r_con/3; p3[2]:=z[2];;; //case:=con.SliceSolid(z,p2,p1,both.Checked);both.Checked then con2.move(z,p2);Combo_vibor2.Text='Клин' then:=VarArrayCreate([0,2], varDouble);:=wedge.Centroid;[0]:=z[0]; z[1]:=z[1]; z[2]:=0;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_s.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]; p3[2]:=z[2]-h_w/3;;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;[0]:=z[0]+l_w/3; p3[1]:=z[1]; p3[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]+w_w/3; p3[2]:=z[2];;; //case:=wedge.SliceSolid(z,p2,p1,both.Checked);both.Checked then wedge2.move(z,p3);Combo_vibor2.Text='Тор' then:=VarArrayCreate([0,2], varDouble);:=t.Centroid;[0]:=z[0]; z[1]:=z[1]; z[2]:=0;:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);:=VarArrayCreate([0,2], varDouble);os_list_s.ItemIndex of

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]+50; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]; p3[2]:=z[2]-r_tube;;

:begin p2[0]:=z[0]; p2[1]:=z[1]+10; p2[2]:=z[2];[0]:=z[0]; p1[1]:=z[1]; p1[2]:=z[2]+10;[0]:=z[0]+r_tor; p3[1]:=z[1]; p3[2]:=z[2];;

:begin p2[0]:=z[0]; p2[1]:=z[1]; p2[2]:=z[2]+10;[0]:=z[0]+10; p1[1]:=z[1]; p1[2]:=z[2];[0]:=z[0]; p3[1]:=z[1]+r_tor; p3[2]:=z[2];;; //case:=t.SliceSolid(z,p2,p1,both.Checked);both.Checked then t2.move(z,p3);;;//case}; //case.update;;TForm1.CheckBox1Click(Sender: TObject);CheckBox1.Checked then.Visible:=false;.Top:=0;.Top:=PageControl1.Top+PageControl1.Height;.ClientHeight:=PageControl1.Height+Panel3.Height;else.Visible:=true;.Top:=Panel2.Height;.Top:=Panel2.Height+PageControl1.Height;.ClientHeight:=panel2.Height+ PageControl1.Height+Panel3.Height;;;TForm1.cubClick(Sender: TObject);cub.Checked then_w.Enabled:=false;_h.Enabled:=false;_w.Color:=clGray;_h.Color:=clGray;_w.Enabled:=true;_h.Enabled:=true;_w.Color:=clWhite;_h.Color:=clWhite;;;TForm1.FormShow(Sender: TObject);:=ExtractFilePath(Application.ExeName)+'html\';.Navigate(s+'main.htm');;TForm1.RadioGroup1Click(Sender: TObject);s2:string;:=ExtractFilePath(Application.ExeName)+'html\';not CheckBox1.Checked then.Navigate(s2+'3d\'+inttostr(RadioGroup1.ItemIndex)+'.htm');RadioGroup1.ItemIndex of

: begin_box.Visible:=true;_s.Visible:=false;_cyl.Visible:=false;_con.Visible:=false;_wedge.Visible:=false;_tor.Visible:=false;

: begin_box.Visible:=false;_s.Visible:=true;_cyl.Visible:=false;_con.Visible:=false;_wedge.Visible:=false;_tor.Visible:=false;

:begin_box.Visible:=false;_s.Visible:=false;_cyl.Visible:=true;_con.Visible:=false;_wedge.Visible:=false;_tor.Visible:=false;

:begin_box.Visible:=false;_s.Visible:=false;_cyl.Visible:=false;_con.Visible:=true;_wedge.Visible:=false;_tor.Visible:=false;

:begin_box.Visible:=false;_s.Visible:=false;_cyl.Visible:=false;_con.Visible:=false;_wedge.Visible:=true;_tor.Visible:=false;

: begin_box.Visible:=false;_s.Visible:=false;_cyl.Visible:=false;_con.Visible:=false;_wedge.Visible:=false;_tor.Visible:=true;;;TForm1.RadioGroup2Click(Sender: TObject);RadioGroup2.ItemIndex of

: a.activedocument.sendcommand('-вид _swiso'+#13);

: a.activedocument.sendcommand('-вид _seiso'+#13);

: a.activedocument.sendcommand('-вид _nwiso'+#13);

: a.activedocument.sendcommand('-вид _neiso'+#13);

: a.activedocument.sendcommand('-вид _top'+#13);

: a.activedocument.sendcommand('-вид _bottom'+#13);

: a.activedocument.sendcommand('-вид _left'+#13);

: a.activedocument.sendcommand('-вид _right'+#13);

: a.activedocument.sendcommand('-вид _front'+#13);

: a.activedocument.sendcommand('-вид _back'+#13);;;TForm1.RadioGroup3Click(Sender: TObject);RadioGroup3.ItemIndex of

: a.activedocument.sendcommand('shademode 3'+#13);

: a.activedocument.sendcommand('shademode с'+#13);

: a.activedocument.sendcommand('shademode у'+#13);; end;TForm1.cbColorsDrawItem(Control: TWinControl; Index: Integer;: TRect; State: TOwnerDrawState);: TRect;, AColor: TColor;: TPoint;: String;:= AcadColorToColor(Index);

with cbColors.Canvas do

// Залить прямоугольник фоновым цветом

C:= Brush.Color;.Color:= cbColors.Color;

FillRect(Rect);

// Залить прямоугольник цвета:= Rect;

R.Right:= R.Bottom - R.Top + R.Left;(R, -2, -2);.Color:= AColor;(R);

// Обводка прямоугольника цвета.Color:= clBlack;

FrameRect(R);

// Залить прямоугольник фокуса.Color:= C;

R:= Rect;.Left:= R.Bottom - R.Top + R.Left;

FillRect(R);

// Показать текст:= Rect;

R.Left:= R.Bottom - R.Top + R.Left + 2;

S:= cbColors.Items[Index];

// Если требуется отображать компоненты цвета - добавить их значения к

// строке с его индексомFShowColorValues then S:= S + Format(' (%d, %d, %d)', [GetRValue(AColor),(AColor),(AColor)]);R do:= Point(Left, Top + (Bottom - Top - TextHeight(cbColors.Items[Index])) div 2);

// Заменить индексы логических цветов на "удобочитаемые"

case Index of

: TextRect(R, P.X, P.Y, 'ByBlock');

: TextRect(R, P.X, P.Y, 'ByLayer');(R, P.X, P.Y, S);

end;

// Если элемент в фокусе, то...

if odFocused in State then

// ...стереть старую рамку фокуса (которая на весь Rect)(Rect);

// ...и нарисовать новую только на текст

DrawFocusRect(Classes.Rect(R.Left - 2, R.Top, R.Right, R.Bottom));;;;TForm1.chbShowColorValuesClick(Sender: TObject);:= (Sender as TCheckBox).Checked;.Invalidate;;TForm1.FormCreate(Sender: TObject);;;TForm1.cub_wClick(Sender: TObject);cub_w.Checked then_w.Enabled:=false;_h.Enabled:=false;_w.Color:=clGray;_h.Color:=clGray;_w.Enabled:=true;_h.Enabled:=true;_w.Color:=clWhite;_h.Color:=clWhite;;;TForm1.RadioGroup4Click(Sender: TObject);RadioGroup4.ItemIndex of

: begin_rotate3d.Visible:=true;_mirror3d.Visible:=false;_slice.Visible:=false;;

: begin_rotate3d.Visible:=false;_mirror3d.Visible:=true;_slice.Visible:=false;;

: begin_rotate3d.Visible:=false;_mirror3d.Visible:=false;_slice.Visible:=true;;;;TForm1.PageControl1Change(Sender: TObject);s1:string;:=ExtractFilePath(Application.ExeName)+'html\';:='';PageControl1.ActivePageIndex of

:url:=s1+'main.htm';

:url:=s1+'visual.htm';

:url:=s1+'edit.htm';;not CheckBox1.Checked then.Navigate(url);end; end; end.

Похожие работы на - Дослідження можливостей інтеграції Delphi та AutoCAD при тривимірному моделюванні

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!