Лекции и лабораторные работы по AutoCAD'у

             

Основы параметрического проектирования - часть 6


/p>

Листинг 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 - Головная функция .




Содержание  Назад  Вперед