This version of the page http://astralux.com.ua/cycl.htm (0.0.0.0) stored by archive.org.ua. It represents a snapshot of the page as of 2006-09-26. The original page over time could change.
Циклы в системе "СТАТУРА"

Использование циклов в системе
"СТАТУРА"

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

 

Команды управления циклом

WHILE(<условие входа и продолжения цикла>) начало зоны цикла
ENDWHILE окончание зоны цикла
BREAK выход из цикла
CONTINUE переход на первую строку цикла

ПРИМЕР
подгонки длины линий оката рукава к длинам линий пройм
с использованием циклов

 

Исходные данные

Пройма спинки

Пройма полочки

Рукав

Класс <S1>

Длина проймы - 236.48
линия А4 - 134.88
линия А5 -101.6

Класс <P1>

Длина проймы - 203.92
линия A7 - 82.25
линия А6 - 121.67

Рукав <R1>


Длина оката - 459.63
со стороны спинки - 239.74
линия А5 - 122.87
линия А6 - 116.87
со стороны полочки - 219.89
линия А10- 80.78
линия А8 - 139.11

Подгонка нижней части оката

// Активный класс R1
// i5 - номер точки A5 в контуре
i5=INDEX(A5)
// len7 - длина нижнего участка проймы полочки
len7=LENGTH(P1.A7)
// Вход в цикл для подгонки длины нижней части оката со стороны полочки
WHILE(2>1)
// Вызов процедуры из библиотеки "Okat.lbr" для построения кривых
// нижней части оката
L0.Niz(i5)
// len10 - длина нижней части оката со стороны полочки
len10=LENGTH(A10)
// Условие для выхода из цикла
IF((len10>len7-0.5.AND.len10<len7+0.5)
BREAK
ENDIF

// dlt - шаг подгонки. Определение знака
IF(len10>len7)
dlt=-1
ELSE
dlt=1
ENDIF

// Смещение точки A11 на шаг dlt
MOVER(dlt,0,A11)
// Возврат в начало цикла
ENDWHILE
// len3 - Длина нижнего участка проймы спинки
len3=LENGTH(S1.A4)
// Вход в цикл для подгонки длины нижней части оката со стороны спинки
WHILE(2>1)
// Вызов процедуры из библиотеки "Okat.lbr" для построения кривых
// нижней части оката
L0.Niz(i5)
// len5 - длина нижней части оката со стороны спинки
len5=LENGTH(A5)
//Условие для выхода из цикла
IF((len5>len3-0.5.AND.len5<len3+0.5)
BREAK
ENDIF

// dlt - шаг подгонки. Определение знака
IF(len5>len3)
dlt=-1
ELSE
dlt=1
ENDIF

// Смещение точки A5 на шаг dlt
MOVER(-dlt,0,A5)
// Возврат в начало цикла
ENDWHILE

Окат после подгонки низа
Красная линия - исходный вариант

Длина:
линия А5- 134.62
линия А10 - 82.38

Подгонка верхней части оката

// Активный класс R1
// i6 - номер точки A6 в контуре
i6=INDEX(A6)
// len4 - длина верхней части оката с учетом посадки
len4=LENGTH(S1.A5,P1.A6)*1.17
// Вход в цикл для подгонки длины верхней части оката
WHILE(2>1)
// Вызов процедуры из библиотеки "Okat.lbr" для построения кривых
// верхней части оката
L0.Verh(i6)
// Длина верхней части оката рукава
len6=LENGTH(A6:A8)
//Условие для выхода из цикла
IF((len6>len4-0.5.AND.len6<len4+0.5)
BREAK
ENDIF
// dlt - шаг подгонки. Определение знака
IF(len6>len4)
dlt=-0.3
ELSE
dlt=0.3
ENDIF
// Смещение точки A8 на шаг dlt
A8.Y=A8.Y+dlt
// Возврат в начало цикла
ENDWHILE

Окат после подгонки низа и верха
Красная линия - исходный вариант

Длина:
линия А6 - 118.79
линия А8 - 142.19