You are on page 1of 62

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ

«КПі ім. Ігоря Сікорського»

Кафедра оптичних та оптико-електронних приладів

КУРСОВА РОБОТА
З дисципліни

«Технології розробки програмного забезпечення-2. Основи САКР оптико-


електронного приладобудування»

На тему: «Параметризоване креслення гвинта з потайною голівкою»

Студента 4 курсу

Групи ПО-71

Корнєв Д. В.

Керівник Кравченко І. В.

Національна оцінка: ____

Кількість балів: ____ Оцінка: ECTS __

Члени комісії ст. викладач каф. ООЕП Кравченко І.В

Київ – 2020 рік

1
Зміст
1. Технічне завдання на розробку програми 4
1.1.Ведення 4
1.2.Підстави для розробки 4
1.3.Призначення розробки 4
1.3.1. Функціональне призначення 4
1.3.2. Експлуатаційне призначення 4
1.4. Вимоги до програми або програмного виробу 4
1.4.1. Вимоги до функціональних характеристик 4
1.4.2. Вимоги до надійності програми 6
1.4.3. Умови експлуатації 7
1.4.3.1. Кліматичні умови експлуатації 7
1.4.3.2. Вимоги до видів обслуговування 7
1.4.3.3. Вимоги до чисельності та кваліфікації персоналу 7
1.4.4. Вимоги до складу і параметрів технічних засобів 7
1.4.5. Вимоги до інформаційної та програмної сумісності 7
1.4.5.1. Вимоги до вихідного коду і мов програмування 7
1.4.5.2. Вимоги до програмних засобів, які використовуються
програмою 7
1.4.6. Вимоги до маркування та упаковки 7
1.4.7. Вимоги до транспортування і зберігання 7
1.5. Вимоги до програмної документації 8
1.5.1. Техніко-економічні показники 8
1.6. Стадії і етапи розробки 8
1.7. Порядок контролю і приймання 8
1.7.1. Види випробувань 8
1.7.2. Загальні вимоги до приймання роботы 9
2. Пояснювальна записка до програмного продукту 10
2.1.Постановка задачі 10
2.2.Опис та необхідні ескізи комплексної деталі. Математичні методи та
модель 10
2.2.1. Основні параметри 11
2.2.2. Напів залежні параметри 11
2.2.3. Залежні параметри 11
2.2.4. Контрольні точки 12
2.2.5. Додаток до комплексної деталі 16
2.3. Обґрунтування засобу побудови алгоритму програми 19
2.4. Опис структури програми та взаємодії її частин 19

2
2.5. Опис організації даних та результатів 19
2.6. Програмні модулів 20
2.7. Опис технічних засобів 20
3. Алгоритм 21
4. Текст програми 26
4.1. Cod.lsp 26
4.2. Parametrs.dcl 54
5. Результати тестового прикладу 56
5.1. Об’єкт випробувань 56
5.2. Ціль випробувань 56
5.3. Вимоги до програми 56
5.4. Вимоги до програмної документації 56
5.5. Засоби та порядок випробувань 56
5.6. Методи випробувань 56
5.7. Перевірка 57
5.7.1. Пепевірка 1 57
5.7.2. Пепевірка 2 58
5.7.3. Пепевірка 3 59
5.7.4. Пепевірка 4 60
5.7.5. Пепевірка 5 61

3
1. Технічне завдання на розробку програми
1. Ведення:

«Програма параметризованого креслення гвинта з потайною


головкою» - програма, що призначена для швидкого створення
типового кресленика гвинта з потайною голівкою відповідного ГОСТ-
ам, за допомогою попередньо визначених параметрів.

2. Підстави для розробки:

Навчальний план: «Комп'ютерно-інтегровані оптико-електронні


системи та технології», перший (бакалаврський) рівень вищої
освіти - міністерство освіти і науки України НТУУ «КПІ ім. Ігоря
Сікорського»

3. Призначення розробки:

3.1 Функціональне призначення:

Прискорення та полегшення розробки креслеників типових


деталей, у данному випадку гвинта з потайною головкою.

3.2 Експлуатаційне призначення:

Програма є компонентом системи параметричного моделювання,


що призначена для полегшення та прискорення розробки
креслеників типових деталей за попередньо заданими
значеннями параметрів відповідно до ГОСТ-ів.

4. Вимоги до програми або програмного виробу:

4.1 Вимоги до функціональних характеристик:

Вікно вибору діаметру різьби та виду:

А) Вікно, яке містить 2 випадаючі списки та кнопки Ok та Cancel.

4
Б) Випадаючі списик мають бути підписані: «Діаметр різьби,
мм», «Вид»

В) При натисканні кнопки ОК закривається вікно вибору


діаметру різьби

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


обраний вид збоку, або типу шліца, якщо обраний вид згори.

Г) При натисканні на кнопку Cancel програма закривається.

Вікно вибору залежних параметрів:

А) Вікно, яке містить 1 випадаючий список та 1 вікно для


введення даних, кнопки Ok та Cancel.

Б) Кожен елемент окрім кнопки має бути підписаний позначкою


розміру який буде обиратися/вписуватися у елементі.

Г) Біля вікна для введення даних має бути текст з вказаними


обмеженнями для відповідного розміру, що вводяться.

Д) При натисканні кнопки ОК побудується кресленик виду сбоку


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

Е) При натисканні на кнопку Cancel вікно вибору залежних


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

Вікно помилки:

А) Вікно яке містить текст помилки та кнопку.

Б) Натискання кнопки закриває вікно помилки.

Вікно вибору довжини різьби:

А) Вікно, яке містить 1 випадаючий список та кнопки Ok та


Cancel.
5
Б) Випадаючий список має бути підписаний «Довжина різьби»

В) При натисканні кнопки ОК закривається вікно вибору


довжини різьби

та будується кресленик виду сбоку.

Д) При натисканні на кнопку Cancel вікно вибору довжини різьби


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

Вікно вибору типу шліца:

А) Вікно, яке містить 1 випадаючий список та кнопки Ok та


Cancel.

Б) Випадаючий список має бути підписаний «Тип шліца»

В) При натисканні кнопки ОК закривається вікно вибору типу


шліца

та будується кресленик виду згори або відкривається вікно


вибору “е”, якщо був обраний вид шліцу Н.

Д) При натисканні на кнопку Cancel вікно вибору типу шліца


закривається і відривається вікно вибору діаметру різьби та виду.

Вікно вибору “е”:

А) Вікно містить 1 вікно для ведення даних, кнопки Ok та Cancel.

Б) Вікно для ведення даних має бути підписане «е, мм:»

В) Біля вікна для введення даних має бути текст з вказаними


обмеженнями для відповідного розміру, що вводяться.

Г) При натисканні на кнопку Cancel вікно вибору е закривається і


відривається вікно вибору типу шліца.

4.2 Вимоги до надійності програми:

Програма має будувати креслення виключно за даними


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

4.3.1 Кліматичні умови експлуатації:

Вимог до кліматичних умов експлуатації не пред'являється

4.3.2 Вимоги до видів обслуговування:

Обслуговування не потрібно.

4.3.3 Вимоги до чисельності та кваліфікації персоналу:

Персонал не потрібен.

4.4 Вимоги до складу і параметрів технічних засобів:

Програма використовується в пакеті AutoCAD.

4.5 Вимоги до інформаційної та програмної сумісності:

4.5.1 Вимоги до вихідного коду і мов програмування:

Тексти програм програми повинні бути написані на мові


AutoLISP.

4.5.2Вимоги до програмних засобів, які використовуються


програмою:

Системні програмні засоби, що використовуються


програмою, повинні

бути представлені ліцензійної локалізованої версією


операційної

системи не нижче Windows 7.

4.6 Вимоги до маркування та упаковки:

Програма поширюється віртуально, кожна копія має мати свій


ключ, вимог до упаковки не має.

7
4.7 Вимоги до транспортування і зберігання:
Вимог до транспортування і зберігання не має.

5a. Вимоги до програмної документації:


Техническое задание (ГОСТ 19.201-78);
Пояснительная записка (ГОСТ 19.404- 79);
Программа и методика испытаний (ГОСТ 19.301-79);
Текст программы. (ГОСТ 19.401-78);

5. Техніко-економічні показники:

В рамках даного проекту розрахунок економічної ефективності не


передбачений.

6. Стадії і етапи розробки:

1. Уточнення технічного завдання – до 20.09.2020;

2. Вибір системи вхідних та вихідних даних, екранів діалогу. Розробка,


оформлення та затвердження технічного завдання – до 05.10.2020;

3. Розробка та затвердження опису комплексної деталі – до 20.10.2020;

4. Розробка алгоритму – до 01.11.2020;

5. Затвердження алгоритму. Написання програми – до 15.11.2020;

6. Редагування алгоритму та програми – до 05.12.2020;

7. Порядок контролю і приймання:

7.1. Види випробувань:


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

7.2. Загальні вимоги до приймання роботы:

Приймання програми буде затверджене при її коректній роботі,


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

9
2. Пояснювальна записка до програмного продукту
2.1. Постановка задачі
Написати програму, яка дозволяє створити параметризоване
креслення гвинта з потайною голівкою відповідно до ГОСТу,
використовуючи інтерфейс користувача.

2.2 Опис та необхідні ескізи комплексної деталі. Математичні


методи та модель

10
2.2.1 Основні параметри:

D2 – діаметр різьби.

2.2.2 Напів залежні параметри:

Ддя виду сбоку:

L1 – довжина гвинта l. Обирається користувачем из списку, зміст якого


залежить від D2, додаток п.2.

L5 – довжина різьби b. Обирається користувачем нормальна або подовжена


різьба, якщо є така можливість для обраного D2, додаток п.1.

K – товщина голівки k. Обирається користувачем в певних межах, що


залежать від D2, додаток п.3.

Для виду згори, тип шліца Н:

e – відстань між найблищими точками перпендикулярних ребер

2.2.3 Залежні параметри:

Ддя виду сбоку:

D1 – діаметр голівки. Обирається в залежності від D2, додаток п.1.

11
C3 – довжина проекції фаски по осі х. Обирається в залежності від D2,
додаток п.4.

C4 – довжина проекції схилу фаски по осі у. Обирається в залежності від D2,


додаток п.4.

L2 – товщина голівки до схилу.

L3 – довжина від початку голівки до кінця гвинта.

L4 – довжина від початку голівки до початку фаски.

L6 – довжина від кінця фаски до кінця різьби.

C1 – довжина проекції схилу голівки по осі х.

C2 – довжина проекції схилу голівки по осі y.

R – радіус скруглення між схилом голівки та різьбовою частиною.

F – розмір фаски на початку гвинта.

Для виду сгори:

m – великий діаметр шліцу

g – малий діаметр шліцу

Для виду сгори, тип шліца Z:

f – товщина ребра.

2.2.4 Контрольні точки:

Ддя виду сбоку:


5L1
PA ( , 0)
100

5L1
PB (L1+ , 0)
100

D1
P1 (0, )
2

D1−D2 D1 D1−D2
P2 (K- , ) – якщо K- < 0, то результат дорівнює 0.
2 2 2

12
D2
P3 (K, )
2

D2
P312 ( K ∙1.2, )
2

√ D2
2
P4 ( L 1− f , )
2 2


2
P5 (L1, D2 − f )
2 2

D2
P6 (L1-L6, )
2


2
P7 (L1-L6, D2 − f )
2 2

−D1
OP1 (0, )
2

−D1−D2 −D1 D1−D2


OP2 (K , ) – якщо K- < 0, то результат дорівнює 0.
2 2 2

−D2
OP3 (K, )
2

−D2
OP312 ( K ∙1.2, )
2


−D2
2
OP4 ( L 1− f , )
2 2


2
OP5 (L1,−( D 2 − f ))
2 2

−D2
OP6 (L1-L6, )
2

P7 (L1-L6, −¿ )

Для виду згори:


−5 D 1
AX1 ( , 0)
100

5D1
AX2 ( , 0)
100

5D1
AX3 (0, )
100

13
−5 D 1
AX4 (0, )
100

Для виду згори, тип шліца Н:


B1 (0, b)

B2 (b, 0)

B3 (0, -b)

B4 (-b, 0)

e g
E1 ( , )
2 2

g e
E2 ( , )
2 2

g −e
E3 ( , )
2 2

e −g
E4 ( , )
2 2

−e −g
E5 ( , )
2 2

−g −e
E6 ( , )
2 2

−g e
E7 ( , )
2 2

−e g
E8 ( , )
2 2

e m √ 2 g m √2
M1 ( + , + )
2 4 2 4

g m √2 e m √2
M2 ( + , + )
2 4 2 4

g m √2 −e +¿
M3 ( + , ))
2 4 2

e m √ 2 −g −m √ 2
M4 ( + , +( ))
2 4 2 4

−e −m √ 2 −g −m √ 2
M5 ( +( ), +( ))
2 4 2 4

14
−g −m √ 2 −e −m √ 2
M6 ( +( ), +( ))
2 4 2 4

−g −m √ 2 e m √ 2
M7 ( +( ), + )
2 4 2 4

−e −m √ 2 g m √2
M8 ( +( ), + )
2 4 2 4

Для виду згори, тип шліца Z:


f g
FG1 ( , )
2 2

g f
FG2 ( , )
2 2

g −f
FG3 ( , )
2 2

f −g
FG4 ( , )
2 2

−f −g
FG5 ( , )
2 2

−g −f
FG6 ( , )
2 2

−g f
FG7 ( , )
2 2

−f g
FG8 ( , )
2 2

f
ZM1 ( , √ ¿ ¿)
2

f
ZM2 (√ ¿ ¿, )
2

−f
ZM3 (√ ¿ ¿, )
2

f
ZM4 ( , −√ ¿ ¿)
2

−f
ZM5 ( , −√ ¿ ¿
2

−f
ZM6 (−√ ¿ ¿, )
2
15
f
ZM7 (−√ ¿ ¿, )
2

−f
ZM8 ( ,√ ¿ ¿)
2

m√2 m√2
KM1 ( , )
4 4

m √ 2 −m √ 2
KM2 ( , )
4 4

−m √ 2 −m √ 2
KM3 ( , )
4 4

−m √ 2 m √ 2
KM4 ( , )
4 4

2.2.5 Додаток до комплексної деталі:

1. Залежності параметрів від діаметру різьби згідно ГОСТ 17475-80

16
2. Довжини гвинта в залежності від діаметру різьби згідно
ГОСТ 17475-80

17
3. Параметри шліца в залежності від його номера за ГОСТ 10753-86
Для шліца типу Н:

Для шліца типу Z:

18
4. Фаска в залежності від шага різьби згідно ГОСТ 10549-80

19
2.3. Обґрунтування засобу побудови алгоритму програми
Побудову алгоритму програми було вирішено виконувати на
вбудованій у AutoCAD мові програмування AutoLisp, що має всі необхідні
можливості для виконанні поставленої задачі у досить зручний спосіб.

2.4. Опис структури програми та взаємодії її частин

2.5 Опис організації даних та результатів


Вхідними даними є параметри задані користувачем в інтерфейсі програми.

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

Строки – вид, тип шліца.

Цілі числа – L1, L6.

Дійсні числа – K, Е.

Вихідними даними програми є вивидення на екран параметричного


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

20
2.6 Програмні модулів
Опис діалогових вікон – Parametrs.dcl

Опис програми – Cod.lsp

2.7 Опис технічних засобів


Системні програмні засоби, які використовуються програмою, повинні бути
представлені ліцензійною локалізованою версією операційної системи не
нижче Windows XP. На системі повинен бути встановлений .NET Framework
4.5.

21
3. Алгоритм

22
23
24
25
26
4. Текст програми
4.1 Cod.lsp
;------------------------------------------------------------------------------------------------------------------------------
(DEFUN c:prog (/) ; Prog start
(setq dcl_id (load_dialog ; Load dcl by path
"C:/Users/MadMegaMouse/Desktop/CAKP/C/Parametrs.DCL"
)
)

(setq ltp 0)
(diamtr) ; Stert choose and set value

(while (not (= ddi 1))


(if (= vv 1)
(other_par)
)
(if (= vv 2)
(krtype)
)

(if (>= dm 2)
(if (> ltp lt1)
(ltd)
)
)

(if (= kr 0)(echoose))

(if (= ddi 2)
(diamtr)
)
(if (= ddi 3)
(other_par)
)
(if (= ddi 4)
(diamtr)
)
(if (= ddi 5) (krtype))

27
(setq c (ssadd))
(setq i (ssadd))
(setq o (ssadd))
;---------------------------------------------------------------------------------------
(if (= vv 1)
(
(setq k_d (- k kmin)) ; Build side view
(setq d_2 (/ d 2.0))
(setq d_dm (- d dm))
(setq d_dm_2 (/ d_dm 2.0))
(setq pp1 (/ ls 100.0))
(setq ls_5p (* pp1 5))
(setq ls_5 (+ ls ls_5p))
(setq od_2 (* -1 d_2))

(if (< k_d 0)


(setq k_d 0)
)
(setq ok_d (* -1 k_d))
(setq 5p (- 0 ls_5p))
(setq dm_2 (/ dm 2.0))
(setq odm_2 (* -1 dm_2))
(setq ls_lt (- ls lt))
(setq skf_2 (sqrt (/ (* f f) 2.0)))
(setq ls_f (- ls skf_2))
(setq dm_2_f (- dm_2 skf_2))
(setq odm_2_f (* -1 dm_2_f))
(setq k12 (* k 1.2))

(setq ps (getpoint "\nEnter start point:"))


(setq pa (list 5p 0 0))
(setq pb (list ls_5 0 0))

(setq p1 (list 0 d_2 0))


(setq op1 (list 0 od_2 0))
(setq p2 (list k_d d_2 0))
(setq op2 (list k_d od_2 0))
(setq p3 (list k dm_2 0))
(setq op3 (list k odm_2 0))
(setq p312 (list k12 dm_2 0))
(setq op312 (list k12 odm_2 0))
(setq p4 (list ls_f dm_2 0))

28
(setq op4 (list ls_f odm_2 0))
(setq p5 (list ls dm_2_f 0))
(setq op5 (list ls odm_2_f 0))
(setq p6 (list ls_lt dm_2 0))
(setq op6 (list ls_lt odm_2 0))
(setq p7 (list ls_lt dm_2_f 0))
(setq op7 (list ls_lt odm_2_f 0))

(setq osm (getvar "osmode")) ; Start build


(setvar "osmode" 0)

(command "-LWEIGHT" 0.35 "")


(command "-LINETYPE" "Set" "ByBlock" "")

(if (> k_d 0)


(command "line" p1 p2 "")
)
(if (> k_d 0)
(setq c (ssadd (entlast) c))
)

(command "line" p2 p3 "")


(setq c1 (entlast))
(setq c (ssadd (entlast) c))
(command "line" p3 p4 "")
(setq c2 (entlast))
(setq c (ssadd (entlast) c))
(command "line" p4 p5 "")
(setq c (ssadd (entlast) c))

(if (> k_d 0)


(command "line" op1 op2 "")
)
(if (> k_d 0)
(setq c (ssadd (entlast) c))
)

(command "line" op2 op3 "")


(setq c3 (entlast))
(setq c (ssadd (entlast) c))
(command "line" op3 op4 "")
(setq c4 (entlast))
(setq c (ssadd (entlast) c))

29
(command "line" op4 op5 "")
(setq c (ssadd (entlast) c))

(if (> k_d 0)


(command "line" p2 op2 "")
)
(if (> k_d 0)
(setq c (ssadd (entlast) c))
)

(command "line" op1 p1 "")


(setq c (ssadd (entlast) c))
(command "line" p312 op312 "")
(setq c (ssadd (entlast) c))
(command "line" p4 op4 "")
(setq c (ssadd (entlast) c))
(command "line" p5 op5 "")
(setq c (ssadd (entlast) c))
(command "line" p6 op6 "")
(setq c (ssadd (entlast) c))

(command "-LWEIGHT" 0.15 "")


(command "line" p5 p7 "")
(setq c (ssadd (entlast) c))
(command "line" op5 op7 "")
(setq c (ssadd (entlast) c))

(setvar "filletrad" r)
(command "._fillet" c1 c2)
(setq c (ssadd (entlast) c))
(command "._fillet" c3 c4)
(setq c (ssadd (entlast) c))

(command "-LINETYPE" "Set" "CENTER" "")


(command "line" pa pb "")
(setq c (ssadd (entlast) c))

(command "move" c "" '(0 0 0) ps "")


(command "rotate" c "" ps PAUSE)

(setvar "osmode" osm)


)
)

30
;------------------------------------------------------------------------------------------------
(if (= kr 0)
( ; Build top view. Type H
(setq j 1)
(setq d_2 (/ d 2.0))
(setq m_2 (/ m 2.0))
(setq g_2 (/ g 2.0))
(setq og_2 (* g_2 -1))
(setq e_2 (/ e 2.0))
(setq oe_2 (* -1 e_2))
(setq m_g (- m g))
(setq m_g_2 (/ m_g 2.0))
(setq sk2 (sqrt 2.0))
(setq sk2_2 (/ sk2 2.0))
(setq kof (* m_g_2 sk2_2))
(setq okof (* kof -1))
(setq b_2 (/ b 2.0))
(setq ob_2 (* -1 b_2))

(setq mp1 (/ m 100.0))


(setq m_5p (* mp1 5))
(setq tm_5 (+ m m_5p))
(setq otm_5 (* tm_5 -1))

(setq ke_2 (+ e_2 kof))


(setq oke_2 (+ oe_2 okof))
(setq kg_2 (+ g_2 kof))
(setq okg_2 (+ og_2 okof))

(setq ps (getpoint "\nEnter start point:"))

(setq ax1 (list tm_5 0 0))


(setq ax2 (list otm_5 0 0))
(setq ax3 (list 0 tm_5 0))
(setq ax4 (list 0 otm_5 0))

(setq b1 (list 0 b_2 0))


(setq b2 (list b_2 0 0))
(setq b3 (list 0 ob_2 0))
(setq b4 (list ob_2 0 0))

(setq e1 (list e_2 g_2 0))

31
(setq e2 (list oe_2 g_2 0))
(setq e3 (list e_2 og_2 0))
(setq e4 (list oe_2 og_2 0))
(setq e5 (list g_2 e_2 0))
(setq e6 (list g_2 oe_2 0))
(setq e7 (list og_2 e_2 0))
(setq e8 (list og_2 oe_2 0))

(setq m1 (list ke_2 kg_2 0))


(setq m2 (list oke_2 kg_2 0))
(setq m3 (list ke_2 okg_2 0))
(setq m4 (list oke_2 okg_2 0))
(setq m5 (list kg_2 ke_2 0))
(setq m6 (list kg_2 oke_2 0))
(setq m7 (list okg_2 ke_2 0))
(setq m8 (list okg_2 oke_2 0))

(setq osm (getvar "osmode")) ; Start build


(setvar "osmode" 0)

(command "-LWEIGHT" 0.35 "")


(command "-LINETYPE" "Set" "ByBlock" "")

(command "circle" '(0 0 0) jd_2 "")


(setq i (ssadd (entlast) c))

(command "line" b1 e1 "")


(setq i (ssadd (entlast) c))
(command "line" b1 e2 "")
(setq i (ssadd (entlast) c))
(command "line" b2 e5 "")
(setq i (ssadd (entlast) c))
(command "line" b2 e6 "")
(setq i (ssadd (entlast) c))
(command "line" b3 e3 "")
(setq i (ssadd (entlast) c))
(command "line" b3 e4 "")
(setq i (ssadd (entlast) c))
(command "line" b4 e7 "")
(setq i (ssadd (entlast) c))
(command "line" b4 e8 "")
(setq i (ssadd (entlast) c))

32
(command "line" e1 m1 "")
(setq i (ssadd (entlast) c))
(command "line" e2 m2 "")
(setq i (ssadd (entlast) c))
(command "line" e3 m3 "")
(setq i (ssadd (entlast) c))
(command "line" e4 m4 "")
(setq i (ssadd (entlast) c))
(command "line" e5 m5 "")
(setq i (ssadd (entlast) c))
(command "line" e6 m6 "")
(setq i (ssadd (entlast) c))
(command "line" e7 m7 "")
(setq i (ssadd (entlast) c))
(command "line" e8 m8 "")
(setq i (ssadd (entlast) c))

(command "arc" m8 "e" m4 "r" m_2 "")


(setq i (ssadd (entlast) c))
(command "arc" m3 "e" m6 "r" m_2 "")
(setq i (ssadd (entlast) c))
(command "arc" m5 "e" m1 "r" m_2 "")
(setq i (ssadd (entlast) c))
(command "arc" m2 "e" m7 "r" m_2 "")
(setq i (ssadd (entlast) c))

(command "-LINETYPE" "Set" "CENTER" "")


(command "-LWEIGHT" 0.15 "")
(command "line" ax1 ax2 "")
(setq i (ssadd (entlast) c))
(command "line" ax3 ax4 "")
(setq i (ssadd (entlast) c))

(command "move" c "" '(0 0 0) ps "")


(command "rotate" c "" ps PAUSE)

(setvar "osmode" osm)


)
)

;----------------------------------------------------------------------------------------------------------
(if (= kr 1)
(

33
(setq j 4) ; Build top view. Type Z
(setq zd_2 (/ d 2.0))
(setq zm_2 (/ m 2.0))
(setq zom_2 (* zm_2 -1))
(setq zf_2 (/ f 2.0))
(setq zof_2 (* zf_2 -1))
(setq zg_2 (/ g 2.0))

(setq zpg_2 (* zg_2 zg_2))


(setq zpf_2 (* zf_2 zf_2))
(setq zfg (sqrt (- zpg_2 zpf_2)))
(setq zofg (* zfg -1))

(setq zpm_2 (* zm_2 zm_2))


(setq zfm (sqrt (- zpm_2 zpf_2)))
(setq zofm (* zfm -1))

(setq zmp1 (/ m 100.0))


(setq zm_5p (* zmp1 5))
(setq ztm_5 (+ m zm_5p))
(setq zotm_5 (* ztm_5 -1))

(setq y (sqrt 2))


(setq gg (/ y 2.0))
(setq zmm (* zm_2 gg))
(setq zomm (* -1 zmm))

(setq zr 0.1)

(setq ps (getpoint "\nEnter start point:"))

(setq ax1 (list ztm_5 0 0))


(setq ax2 (list zotm_5 0 0))
(setq ax3 (list 0 ztm_5 0))
(setq ax4 (list 0 zotm_5 0))

(setq kzp1 (list zmm zmm 0))


(setq kzp2 (list zmm zomm 0))
(setq kzp3 (list zomm zomm 0))
(setq kzp4 (list zomm zmm 0))

(setq fg1 (list zf_2 zfg 0))

34
(setq fg2 (list zfg zf_2 0))
(setq fg3 (list zfg zof_2 0))
(setq fg4 (list zf_2 zofg 0))
(setq fg5 (list zof_2 zofg 0))
(setq fg6 (list zofg zof_2 0))
(setq fg7 (list zofg zf_2 0))
(setq fg8 (list zof_2 zfg 0))

(setq m1 (list zf_2 zfm 0))


(setq m2 (list zfm zf_2 0))
(setq m3 (list zfm zof_2 0))
(setq m4 (list zf_2 zofm 0))
(setq m5 (list zof_2 zofm 0))
(setq m6 (list zofm zof_2 0))
(setq m7 (list zofm zf_2 0))
(setq m8 (list zof_2 zfm 0))

(setq osm (getvar "osmode")) ; Start build


(setvar "osmode" 0)

(command "-LWEIGHT" 0.35 "")


(command "-LINETYPE" "Set" "ByBlock" "")

(command "circle" '(0 0 0) zd_2 "")


(setq c (ssadd (entlast) c))

(command "line" fg1 m1 "")


(setq u1 (entlast))
(setq o (ssadd (entlast) c))
(command "line" fg2 m2 "")
(setq u2 (entlast))
(setq o (ssadd (entlast) c))
(command "line" fg3 m3 "")
(setq u3 (entlast))
(setq o (ssadd (entlast) c))
(command "line" fg4 m4 "")
(setq u4 (entlast))
(setq o (ssadd (entlast) c))
(command "line" fg5 m5 "")
(setq u5 (entlast))
(setq o (ssadd (entlast) c))
(command "line" fg6 m6 "")
(setq u6 (entlast))

35
(setq o (ssadd (entlast) c))
(command "line" fg7 m7 "")
(setq u7 (entlast))
(setq o (ssadd (entlast) c))
(command "line" fg8 m8 "")
(setq u8 (entlast))
(setq o (ssadd (entlast) c))

(command "line" kzp1 fg1 "")


(setq c1 (entlast))
(setq o (ssadd (entlast) c))
(command "line" kzp1 fg2 "")
(setq c2 (entlast))
(setq o (ssadd (entlast) c))
(command "line" kzp2 fg3 "")
(setq c3 (entlast))
(setq o (ssadd (entlast) c))
(command "line" kzp2 fg4 "")
(setq c4 (entlast))
(setq o (ssadd (entlast) c))
(command "line" kzp3 fg5 "")
(setq c5 (entlast))
(setq o (ssadd (entlast) c))
(command "line" kzp3 fg6 "")
(setq c6 (entlast))
(setq o (ssadd (entlast) c))
(command "line" kzp4 fg7 "")
(setq c7 (entlast))
(setq o (ssadd (entlast) c))
(command "line" kzp4 fg8 "")
(setq c8 (entlast))
(setq o (ssadd (entlast) c))

(command "arc" m1 "e" m8 "r" zm_2 "")


(setq o (ssadd (entlast) c))
(command "arc" m3 "e" m2 "r" zm_2 "")
(setq o (ssadd (entlast) c))
(command "arc" m5 "e" m4 "r" zm_2 "")
(setq o (ssadd (entlast) c))
(command "arc" m7 "e" m6 "r" zm_2 "")
(setq o (ssadd (entlast) c))

(command "-LINETYPE" "Set" "CENTER" "")

36
(command "-LWEIGHT" 0.15 "")
(command "line" ax1 ax2 "")
(setq o (ssadd (entlast) c))
(command "line" ax3 ax4 "")
(setq o (ssadd (entlast) c))

(setvar "filletrad" zr)


(command "._fillet" c1 u1)
(setq o (ssadd (entlast) c))
(command "._fillet" c2 u2)
(setq o (ssadd (entlast) c))
(command "._fillet" c3 u3)
(setq o (ssadd (entlast) c))
(command "._fillet" c4 u4)
(setq o (ssadd (entlast) c))
(command "._fillet" c5 u5)
(setq o (ssadd (entlast) c))
(command "._fillet" c6 u6)
(setq o (ssadd (entlast) c))
(command "._fillet" c7 u7)
(setq o (ssadd (entlast) c))
(command "._fillet" c8 u8)
(setq o (ssadd (entlast) c))

(command "move" o "" '(0 0 0) ps "")


(command "rotate" o "" ps PAUSE)

(setvar "osmode" osm)


)
)

; End build
)

;------------------------------------------------------------------------------------------------------------------------------

(defun diamtr () ; Window with selection of thread diameter and view


(if (not (new_dialog "diametr" dcl_id))
(exit)
)

(setq
diam (list "1.6" "2" "2.5" "3" "3.5" "4" "5" "6" "8" "10" "12")

37
)
(progn
(start_list "d")
(mapcar 'add_list diam)
(end_list)
)

(action_tile "accept" "(dim)(done_dialog)")


(action_tile "cancel" "(exit)")
(setq ddi (start_dialog))
)

;------------------------------------------------------------------------------------------------------------------------------

(defun dim () ; Set thread diameter and view


(setq dm (atof (nth (atoi (get_tile "d")) diam)))
(setq v (atoi (get_tile "v")))
(if (= v 0)
(setq vv 1)
(setq vv 2)
)
(vset)

;------------------------------------------------------------------------------------------------------------------------------
(defun vset () ; Setting other parameters or their variants depending on
the thread diameter

(if (= dm 1.6)
(setq lv (list "3" "3.5" "4" "5" "6" "7" "8"
"9" "10" "11" "12" "13" "14" "16"
)
)
)
(if (= dm 1.6)
(setq d 3)
)
(if (= dm 1.6)
(setq kmax 0.96)
)

(if (= dm 1.6)

38
(setq f 0.3)
)
(if (= dm 1.6)
(setq r 0.4)
)
(if (= dm 1.6)
(setq ltv (list "9"))
)
(if (= dm 1.6)
(setq shn 0)
)
(if (= dm 1.6)
(setq m 1.7)
)

(if (= dm 2)
(setq lv (list "3" "3.5" "4" "5" "6" "7" "8"
"9" "10" "11" "12" "13" "14" "16"
"18" "20"
)
)
)
(if (= dm 2)
(setq d 3.8)
)
(if (= dm 2)
(setq kmax 1.2)
)

(if (= dm 2)
(setq f 0.3)
)
(if (= dm 2)
(setq r 0.5)
)
(if (= dm 2)
(setq ltv (list "10" "16"))
)
(if (= dm 2)
(setq shn 0)
)
(if (= dm 2)

39
(setq m 2)
)

(if (= dm 2.5)
(setq lv (list "3.5" "4" "5" "6" "7" "8" "9"
"10" "11" "12" "13" "14" "16" "18"
"20" "22" "25"
)
)
)
(if (= dm 2.5)
(setq d 4.7)
)
(if (= dm 2.5)
(setq kmax 1.5)
)

(if (= dm 2.5)
(setq f 0.3)
)
(if (= dm 2.5)
(setq r 0.7)
)
(if (= dm 2.5)
(setq ltv (list "11" "18"))
)
(if (= dm 2.5)
(setq shn 1)
)
(if (= dm 2.5)
(setq m 2.7)
)

(if (= dm 3)
(setq lv (list "3.5" "4" "5" "6" "7" "8" "9"
"10" "11" "12" "13" "14" "16" "18"
"20" "22" "25" "28" "30"
)
)
)
(if (= dm 3)
(setq d 5.6)

40
)
(if (= dm 3)
(setq kmax 1.65)
)

(if (= dm 3)
(setq f 0.5)
)
(if (= dm 3)
(setq r 0.8)
)
(if (= dm 3)
(setq ltv (list "12" "19"))
)
(if (= dm 3)
(setq shn 1)
)
(if (= dm 3)
(setq m 2.8)
)

(if (= dm 3.5)
(setq lv (list "5" "6" "7" "8" "9" "10" "11"
"12" "13" "14" "16" "18" "20" "22"
"25" "28" "30" "32" "35"
)
)
)
(if (= dm 3.5)
(setq d 6.5)
)
(if (= dm 3.5)
(setq kmax 1.93)
)

(if (= dm 3.5)
(setq f 0.5)
)
(if (= dm 3.5)
(setq r 0.95)
)
(if (= dm 3.5)

41
(setq ltv (list "13" "20"))
)
(if (= dm 3.5)
(setq shn 2)
)
(if (= dm 3.5)
(setq m 4)
)

(if (= dm 4)
(setq lv (list "5" "6" "7" "8" "9" "10" "11"
"12" "13" "14" "16" "18" "20" "22"
"25" "28" "30" "32" "35" "40" "42"
"45" "48" "50"
)
)
)
(if (= dm 4)
(setq d 7.4)
)
(if (= dm 4)
(setq kmax 2.2)
)

(if (= dm 4)
(setq f 0.5)
)
(if (= dm 4)
(setq r 1)
)
(if (= dm 4)
(setq ltv (list "14" "22"))
)
(if (= dm 4)
(setq shn 2)
)
(if (= dm 4)
(setq m 4.3)
)

(if (= dm 5)

42
(setq lv (list "6" "7" "8" "9" "10" "11" "12"
"13" "14" "16" "18" "20" "22" "25"
"28" "30" "32" "35" "40" "42" "45"
"48" "50"
)
)
)
(if (= dm 5)
(setq d 9.2)
)
(if (= dm 5)
(setq kmax 2.5)
)

(if (= dm 5)
(setq f 1)
)
(if (= dm 5)
(setq r 1.3)
)
(if (= dm 5)
(setq ltv (list "16" "25"))
)
(if (= dm 5)
(setq shn 2)
)
(if (= dm 5)
(setq m 4.6)
)

(if (= dm 6)
(setq lv (list "8" "9" "10" "11" "12" "13" "14"
"16" "18" "20" "22" "25" "28" "30"
"32" "35" "40" "42" "45" "48" "50"
"55"
)
)
)
(if (= dm 6)
(setq d 11)
)
(if (= dm 6)

43
(setq kmax 3)
)

(if (= dm 6)
(setq f 1)
)
(if (= dm 6)
(setq r 1.6)
)
(if (= dm 6)
(setq ltv (list "18" "28"))
)
(if (= dm 6)
(setq shn 3)
)
(if (= dm 6)
(setq m 6.5)
)

(if (= dm 8)
(setq lv (list "10" "11" "12" "13" "14" "16" "18"
"20" "22" "25" "28" "30" "32" "35"
"40" "42" "45" "48" "50" "55" "60"
"65" "70" "75" "80"
)
)
)
(if (= dm 8)
(setq d 14.5)
)
(if (= dm 8)
(setq kmax 4)
)

(if (= dm 8)
(setq f 1)
)
(if (= dm 8)
(setq r 2)
)
(if (= dm 8)
(setq ltv (list "22" "34"))

44
)
(if (= dm 8)
(setq shn 3)
)
(if (= dm 8)
(setq m 7.5)
)

(if (= dm 10)
(setq lv (list "12" "13" "14" "16" "18" "20" "22"
"25" "28" "30" "32" "35" "40" "42"
"45" "48" "50" "55" "60" "65" "70"
"75" "80" "85" "90" "95" "100"
)
)
)
(if (= dm 10)
(setq d 18)
)
(if (= dm 10)
(setq kmax 5)
)

(if (= dm 10)
(setq f 1.6)
)
(if (= dm 10)
(setq r 2.5)
)
(if (= dm 10)
(setq ltv (list "26" "40"))
)
(if (= dm 10)
(setq shn 4)
)
(if (= dm 10)
(setq m 9.7)
)

(if (= dm 12)
(setq lv (list "16" "18" "20" "22" "25" "28" "30"

45
"32" "35" "40" "42" "45" "48" "50"
"55" "60" "65" "70" "75" "80" "85"
"90" "95" "100"
)
)
)
(if (= dm 12)
(setq d 21.5)
)
(if (= dm 12)
(setq kmax 6)
)

(if (= dm 12)
(setq f 1.6)
)
(if (= dm 12)
(setq r 3)
)
(if (= dm 12)
(setq ltv (list "30" "46"))
)
(if (= dm 12)
(setq shn 4)
)
(if (= dm 12)
(setq m 10.7)
)

(setq kmin (/ (- d dm) 2.0))


(setq kmaxt (rtos kmax))
(setq kmint (rtos kmin))
(setq kgr (strcat "k must be in range from " kmint " to " kmaxt "."))

;------------------------------------------------------------------------------------------------------------------------------

(defun other_par () ; Window where choose screw length and head thickness
from min to max

(if (not (new_dialog "other" dcl_id))

46
(exit)
)

(progn
(start_list "ls")
(mapcar 'add_list lv)
(end_list)
)

(set_tile "tk" kgr)

(action_tile "accept" "(other)")


(action_tile "cancel" "(done_dialog 2)")
(setq ddi (start_dialog))
)

;------------------------------------------------------------------------------------------------------------------------------

(defun other () ; Set screw length and head thickness


(setq ls (atof (nth (atoi (get_tile "ls")) lv)))
(setq k (atof (get_tile "k")))

(check)
)

;------------------------------------------------------------------------------------------------------------------------------

(defun check () ; Checking the entered head thickness for invalid


characters and for compliance with the range
(setq ker (strcat "k isn't in range from " kmint " to " kmaxt "."))

(setq ki 1)
(setq kch 0)
(setq km (strlen (get_tile "k")))
(while (<= ki km)
(if (= (substr (get_tile "k") ki 1) "/")
(setq kch 1)
)
(if (< (substr (get_tile "k") ki 1) ".")
(setq kch 1)
)
(if (> (substr (get_tile "k") ki 1) "9")

47
(setq kch 1)
)
(if (= kch 1)
(alert
"Introduced extraneous signs. Only numbers and a dot for input are allowed."
)
)
(setq ki (+ 1 ki))
)

(setq dn 0)
(if (<= k kmax)
(setq dn (+ 1 dn))
)
(if (> k kmax)
(alert ker)
)
(if (>= k kmin)
(setq dn (+ 1 dn))
)
(if (< k kmin)
(alert ker)
)
(if (and (> dn 1)(= kch 0))
(ltcheck)
)
)

;------------------------------------------------------------------------------------------------------------------------------

(defun ltcheck (); Checking the number of thread length options and sett if a single option
(setq ltp (- ls k))
(setq lt0 (atof (nth 0 ltv)))
(if (>= dm 2)
(setq lt1 (atof (nth 1 ltv)))
)

(if (< ltp lt0)


(setq lt ltp)
)
(if (>= ltp lt0)
(setq lt lt0)

48
)

(if (>= dm 2)
(if (and (< ltp lt1) (>= ltp lt0))
(setq lt lt0)
)
)
(done_dialog 1)
(setq ddi (start_dialog))
)

;------------------------------------------------------------------------------------------------------------------------------

(defun ltd () ; Window where choose thread length if have two


variants
(if (not (new_dialog "ltd" dcl_id))
(exit)
)

(progn
(start_list "lt")
(mapcar 'add_list ltv)
(end_list)
)

(action_tile "accept" "(ltw)(done_dialog 1)")


(action_tile "cancel" "(done_dialog 3)")
(setq ddi (start_dialog))
)

;------------------------------------------------------------------------------------------------------------------------------

(defun ltw () ; Set choose variant of thread length


(setq lt (atof (nth (atoi (get_tile "lt")) ltv)))
)

;-----------------------------------------------------------------------------------------------------------------------------
(defun krtype () ; Choose slot variant
(if (not (new_dialog "krt" dcl_id))
(exit)
)

49
(action_tile "accept" "(setkr)")
(action_tile "cancel" "(done_dialog 4)")
(setq ddi (start_dialog))
)

;--------------------------------------------------------------------------------------------------------------------------

(defun setkr () ; Set slot variant


(setq kr (atoi (get_tile "krt")))
(if (= kr 0)
(kr0setv)
)
(if (= kr 1)
(kr1setv)
)

)
;--------------------------------------------------------------------------------------------------------------------------
(defun kr0setv () ; Set parametrs for slot building depending on slot
number for slot H type

(if (= shn 0)
(setq g 0.81)
)
(if (= shn 0)
(setq b 0.61)
)
(if (= shn 0)
(setq emin 0.26)
)

(if (= shn 0)
(setq emax 0.36)
)

(if (= shn 1)
(setq g 1.27)
)
(if (= shn 1)

50
(setq b 0.97)
)
(if (= shn 1)
(setq emin 0.41)
)

(if (= shn 1)
(setq emax 0.46)
)

(if (= shn 2)
(setq g 2.29)
)
(if (= shn 2)
(setq b 1.47)
)
(if (= shn 2)
(setq emin 0.79)
)
(if (= shn 2)
(setq emax 0.84)
)

(if (= shn 3)
(setq g 3.81)
)
(if (= shn 3)
(setq b 2.41)
)
(if (= shn 3)
(setq emin 1.98)
)
(if (= shn 3)
(setq emax 2.03)
)

(if (= shn 4)

51
(setq g 5.08)
)
(if (= shn 4)
(setq b 3.48)
)
(if (= shn 4)
(setq emin 2.39)
)
(if (= shn 4)
(setq emax 2.44)
)

(setq emaxt (rtos emax))


(setq emint (rtos emin))
(setq egr (strcat "e must be in range from " emint " to " emaxt "."))
(done_dialog)
)

;---------------------------------------------------------------------------------------------------------------------------

(defun kr1setv () ; Set parametrs for slot building depending on slot


number for slot H type
(if (= shn 0)
(setq g 0.86)
)
(if (= shn 0)
(setq f 0.48)
)

(if (= shn 1)
(setq g 1.32)
)
(if (= shn 1)
(setq f 0.74)
)

(if (= shn 2)
(setq g 2.34)
)
(if (= shn 2)
(setq f 1.03)

52
)

(if (= shn 3)
(setq g 3.86)
)
(if (= shn 3)
(setq f 1.42)
)

(if (= shn 4)
(setq g 5.08)
)
(if (= shn 4)
(setq f 2.16)
)

(done_dialog 1)
(setq ddi (start_dialog))

;--------------------------------------------------------------------------------------------------------------------

(defun echoose () ; Window where choose e from min to max

(if (not (new_dialog "eset" dcl_id))


(exit)
)

(set_tile "et" egr)

(action_tile "accept" "(eset)")


(action_tile "cancel" "(done_dialog 5)")
(setq ddi (start_dialog))
)

;-----------------------------------------------------------------------------------------------------------------

(defun eset () ; Set e


(setq e (atof (get_tile "e")))

53
(echeck)
)

;----------------------------------------------------------------------------------------------------------------------------

(defun echeck () ; Checking the entered e for invalid characters and


for compliance with the range
(setq eer (strcat "e isn't in range from " emint "to" emaxt "."))

(setq ei 1)
(setq ech 0)
(setq em (strlen (get_tile "e")))
(while (<= ei em)
(if (= (substr (get_tile "e") ei 1) "/")
(setq ech 1)
)
(if (< (substr (get_tile "e") ei 1) ".")
(setq ech 1)
)
(if (> (substr (get_tile "e") ei 1) "9")
(setq ech 1)
)
(if (= ech 1)
(alert
"Introduced extraneous signs. Only numbers and a dot for input are allowed."
)
)
(setq ei (+ 1 ei))
)

(setq den 0)
(if (<= e emax)
(setq den (+ 1 dn))
)
(if (> e emax)
(alert ker)
)
(if (>= e emin)
(setq den (+ 1 dn))
)
(if (< e emin)
(alert eer))
(if (and (> den 1)(= ech 0)) (done_dialog 1) ))

54
4.2 Parametrs.dcl
//------------------------------------------------------------------------------------------------------
diametr : dialog { label = "Parametrs"; // Window for choose thread diameter and view

:popup_list{label="Thread diameter d, mm:";


key="d";
list="";
edit_width=15;
}

:popup_list{label="View:";
key="v";
list="side" "\ntop";
edit_width=15;
}

ok_cancel;
}
//------------------------------------------------------------------------------------------------------------

other : dialog { label = "Parametrs"; // Window for choose screw length and head thicknes

:popup_list{label="Screw length l, mm:";


key="ls";
list="";
edit_width=15;
}

:spacer{height=1;}

:text {value = "";


key = "tk";
}

:edit_box {label = "Head thickness k, mm:";


key = "k";
edit_width=15;
value = "";
}

ok_cancel;

55
}
//--------------------------------------------------------------------------------------------------------------
ltd : dialog { label = "Parametrs"; // Window for choose thread length

:popup_list{label="Thread length lt, mm:";


key="lt";
list="";
edit_width=15;
}

ok_cancel;
}

//-----------------------------------------------------------------------------------------------------------------
krt : dialog { label = "Parametrs"; // Window for choose slot type

:popup_list{label="Slot type:";
key="krt";
list="H \nZ ";
edit_width=15;
}

ok_cancel;
}

//---------------------------------------------------------------------------------------------------
eset : dialog { label = "Parametrs"; width = 30;// Window for choose e

:text {value = "";


key = "et";
}

:edit_box {label = "e, mm:";


key = "e";
edit_width=15;
value = "";
}

ok_cancel;
}

56
5. Результати тестового прикладу
5.1. Об’єкт випробувань
Найменування програми: “Параметричне креслення гвинта з потайною
голівкою”.

Область використання: створення типових креслеників.

Позначення випробуваної: “PROG”.

5.2. Ціль випробувань


Перевірити правильність роботи програми.

5.3. Вимоги до програми


Правильність побудови кресленика по вхідним даним.

5.4. Вимоги до програмної документації


Повинні бути наявними наступні документи:

Технічне завдання;

Пояснювальна записка;

Алгоритм виконання програми;

Текст програми;

5.5. Засоби та порядок випробувань


Для випробувань необхідна система AutoCAD 2018.

5.6. Методи випробувань


Випробування програми за тестовими параметрами:

Перевірка 1:
57
Заповнене діалогове вікно 1.

Заповнене діалогове вікно 2.

Готовий кресленик після виконання програми:

Розміри кресленика відповідають заданим параметрам. Перевірка успішна.

58
Перевірка 2:

Заповнене діалогове вікно 1.

Заповнене діалогове вікно 2.

Готовий кресленик після виконання програми:

Розміри кресленика відповідають заданим параметрам. Перевірка успішна.

Перевірка 3:

59
Заповнене діалогове вікно 1.

Заповнене діалогове вікно 2.

Заповнене діалогове вікно 3.

Готовий кресленик після виконання програми:

Розміри кресленика відповідають заданим параметрам. Перевірка успішна.

Перевірка 4:

60
Заповнене діалогове вікно 1.

Заповнене діалогове вікно 2.

Заповнене діалогове вікно 3.

Готовий кресленик після виконання програми:

Розміри кресленика відповідають заданим параметрам. Перевірка успішна.

Перевірка 5:
61
Заповнене діалогове вікно 1.

Заповнене діалогове вікно 2.

Готовий кресленик після виконання програми:

Розміри кресленика відповідають заданим параметрам. Перевірка успішна.

Усі перевірки робились на одному полі.

62

You might also like