Реферат: АвтоЛИСП - реализация языка программирования
| (setq angm90 (-pangle (dtr 90))) : Path angle -90 deg
Необязательно смещать выражения, содержащие ваши функции. Фактически вы можете ввести всю программу в одну строку. Однако, смещение и прерывание строчки служит созданию более понятной и четкой для чтения структуры программы. Также, расположение начальных и конечных круглых скобок основных выражений на одной оси, способствует уверенности, что ваши скобки верно сбалансированы.
Итак, мы определили функцию GPUSER. Она не принимает параметров, а спрашивает пользователя по всем пунктам. Функция SETQ приводит переменную АвтоЛИСПа к определенному значению. Первая SETQ приводит переменную SP (начальная точка ) к результату функции GETPOINT. Пользователь задает точки для функции GETPOINT. Для получения точки будет применяться строка, определяющая подсказку АвтоКАДа. "\n" заставляет подсказку появиться на новой линии. Мы применяем функцию GETPOINT для получения значения середины ширины дорожки, радиуса плиты и расстояния между плитами. Второй параметр функции GETPOINT , SP, определяет "базовую точку" расстояния. Расстояние можно создать, определив в АвтоКАДе точку, соответствующую начальной точке дорожки, и присоединив к ней линию резиновой нити.
После ввода высчитываются наиболее часто применяемые переменные. PANGLE обозначает угол от начальной до конечной точки дорожки. Функция ANGLE вводит этот угол по заданным двум точкам. PLENGTH вводит длину дорожки. Функция DISTANCE рассчитывает расстояние, заданное двумя точками. Задав половину ширины дорожки, мы рассчитываем общую ширину, умножив на два заданную величину. И, наконец, мы рассчитываем и сохраняем угол дорожки плюс-минус 90 градусов в переменных ANGP90 и ANGM90 соответственно (т.к. углы в АвтоЛИСПе рассчитываются в радианах, мы перед этими рассчетами применили функцию DTR для перевода градусов в радианы).
Сохраните эту откорректированную программу на диске, запустите АвтоКАД и загрузите программу. Сейчас мы проверим функцию ввода, чтобы убедиться, что она работает правильно.
Приведите в действие функцию, напечатав:
Command: (gpuser)
Ответьте на подсказки следующим образом:
Начальная точка дорожки: 2,2
Конечная точка дорожки: 9,8
Половина ширины дорожки: 2
Радиус плиты: .2
Расстояние между плитами: .1
GPUSER использует ваши ответы для подсчета необходимых ему дополнительных переменных и на экране появится результат последних подсчетов (в данном случае - 0,826169, значение ANGM90 в радианах). Вы можете разгрузить все переменные, установленные функцией GPUSER путем подстановки восклицательного знака (!) перед их именами. Это заставит АвтоКАД вычислить переменные и выдать результат на экран. Если вы введете следующие команды, вы получите следующие результаты:
Command: !sp
(2.000000 2.000000)
Command: !ep
(9.000000 8.000000)
Command: !hwidth
2.000000
Command: !width
4.000000
Command: !trad
0.200000
Command: !tspac
0.100000
Command: !pangle
0.708626
Command: !plength