Размерные параметры конкретного изделия вводятся
Листинг 7.2 - Функция расчета координат базовых точек и отрисовки.
Размерные параметры конкретного изделия вводятся конструктором с клавиатуры. Следует помнить, что человеку свойственно ошибаться, а также развлекаться, вводя слово "Вася" в ответ на запрос "Введите диаметр". Поэтому в функции ввода исходных данных следует предусмотреть хотя бы минимальную защиту от ввода некорректных значений. Для этого используется функция INITGET.
Итак, функция ввода данных на входе не имеет параметров, а вот возвращать она должна несколько чисел. Единственный способ возвратить несколько значений - объединить их в список. Теперь мы можем написать функцию ввода данных для нашего примера (назовем ее getdim).
( DEFUN getdim ( / l d )
; ввод длины и диаметра
; возвращаемый список: ( диаметр длина )
( INITGET 7 ) ; запрет пустого ввода и ввода чисел <=0
( SETQ l ( GETREAL "\nВведите длину валика: " ) )
( INITGET 7 )
( SETQ d ( GETREAL "\nВведите диаметр валика: " ) )
( LIST d l ) ; возвращаемое значение
) ; конец функции getdim
|
Листинг 7.3 - Функция ввода параметров.
Головная функция должна выполнять подготовительные операции (например, установку системных переменных Автокада для отрисовки размеров в соответствии с требованиями ЕСКД) и циклический вызов двух остальных функций: getdim
и show. Для удобства перед именем головной функции можно добавить символы "C:". Тогда в Автокаде появится новая команда с именем вашей головной функции и можно будет не набирать скобки при ее вызове. В примере головная функция называется C:main, поэтому для ее вызова в командной строке Автокада достаточно набрать main.
Самостоятельно разберитесь с одним из возможных вариантов организации цикла, приведенном в примере.
( DEFUN C:main ( / l x y flag )
; Устанавливаем размерные переменные по ЕСКД
; Текст над размерной линией, а не в разрыве
( SETVAR "DIMTAD" 1 )
; Текст вне размерных линий параллелен линиям
( SETVAR "DIMTOH" 0 )
; Текст между размерными линиями горизонтален
( SETVAR "DIMTIH" 0 )
; Проведение линии между выносными, если текст сбоку
( SETVAR "DIMTOFL" 1 )
; Продолжение выносных линий за размерными, мм
( SETVAR "DIMEXE" 1 )
; Отключение генерации допусков
( SETVAR "DIMTOL" 0 )
; Размер стрелок
( SETVAR "DIMASZ" 3 )
; Продолжение выносных линий за размерную
( SETVAR "DIMEXE" 3 )
( SETQ flag T )
( WHILE flag
( SETQ l ( getdim ) x 10 y 10 )
( show x y ( CAR l ) ( CADR l ) )
( SETQ ans ( GETSTRING "\nПовторить?<Д/Н>: " ) )
( SETQ flag ( OR ( = ans "Д" ) ( = ans "д" ) ) )
); конец WHILE
( PRIN1 )
)
|
Листинг 7.4 - Головная функция .
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий