Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ман по автолиспу.doc
Скачиваний:
2
Добавлен:
13.07.2019
Размер:
74.24 Кб
Скачать

Курсовой проект по курсу «Конструирование»

Задание 2

«Разработка программы – генератора параметрических моделей и чертежей»

Порядок выполнения задания.

  1. Получить у преподавателя номер варианта задания и загрузить в AutoCAD слайд с соответствующим номером. (Путь к каталогу со слайдами: \\X‑files\tasks\ACAD\slides)

  2. Рассмотреть изображение детали, представленной на слайде, понять ее форму и размеры.

  3. С использованием среды разработки Visual LISP создать программу-генератор параметрической модели и рабочего чертежа данной детали.

Требования к программе:

  1. Программа запрашивает размеры детали у пользователя через диалоговое окно (файл *.DCL)

  2. Анализ введенных параметров на соответствие допустимому диапазону. В случае выхода за пределы диапазона, предложение повторного ввода значения размера.

  3. Корректировка диапазона допустимых значений последующих размеров в зависимости от введенных значений предыдущих размеров.

  4. Программа создает твердотельную модель детали в пространстве модели и шаблон рабочего чертежа детали, содержащий необходимые изображения (виды, разрезы, сечения, выносные элементы), размеры с допусками, заполненную рамку формата А4, технические требования.

Рекомендации по выполнению задания:

  1. Сначала разработать программу для упрощенного изображения детали с учетом 2 – 3 габаритных размеров (параллелепипед, цилиндр, конус) с тем, чтобы разобраться с технологией взаимодействия Visual LISP и AutoCAD и порядком разработки программ на языке AutoLISP.

  2. Функционально программа может состоять из трех последовательно выполняемых блоков: опрос пользователя, расчет необходимых параметров модели, выполнение построений модели и рабочего чертежа. Опрос пользователя включает циклическую обработку данных получаемых от пользователя через диалоговое окно и их анализ на соответствие допустимому диапазону. Выполнение построений включает также создание и запись на диск пакетного файла, реализующего автоматическое проецирование при последующем его запуске из программы.

Пример программы генерации 3d твердотельной модели и рабочего чертежа.

  1. Запрос координат точки:

Листинг 1.1 Запрос координат 2D точки.

(setq p1 (if p1 p1 (list 0 0)))

(setq szP1 (strcat “Enter point 1 <” (rtos (car p1)) “, ” (rtos (cadr p1)) “>:”))

(setq Paux (getpoint szP1))

(setq p1 (if Paux Paux p1))

Листинг1.1 показывает как запрашивать в цикле координаты 2D точки с использованием динамически формируемой строки запроса.

Первая строчка фрагмента, представленного в Листиге 1.1, проверяет существует ли точечная переменная p1, т.к. она могла быть создана в момент предыдущей итерации цикла или предыдущего запуска программы в текущем сеансе работы с AutoCAD. Функция if, если переменная p1 уже существует, возвращает ее значения без изменения, если переменная p1 имеет значение nil (не существует), вызывает функцию list для формирования списка из координат точки (0, 0). Результат выполнения функции if (предыдущее значение переменной p1 или точка (0, 0)) присваивается в качестве нового значения переменной p1.

Вторая строка в рассматриваемом фрагменте динамически формирует строку подсказки и сохраняет ее в строковой переменной szP1. Например, если к этому моменту переменная p1 хранит значения координат точки (5 7), то в переменной szP1 будет сохранена строка “Enter point 1 <5, 7>:”. Этот текст будет появляться в зоне подсказки AutoCAD после выполнения рассматриваемой строки кода. Согласно используемым в командной строке AutoCAD соглашениям, значения приведенные в угловых скобках, являются значениями предлагаемыми по умолчанию, и пользователь может их выбрать, просто нажав клавишу Enter. Так как от итерации к итерации значение точки p1 может меняться, то текст подсказки должен формироваться динамически, что и достигается в коде рассматриваемой строки. Функции car и cadr возвращают соответственно координаты x, y точки p1 (в формате с плавающей точкой). Функция rtos преобразует число в строку текста. Для рассматриваемого листинга вызовы (rtos (car p1)) и (rtos (cadr p1)) возвратят строки “5” и “7”. Функция strcat выполняет слияние строк в одну строку текста. В нашем примере строки “Enter point 1 <”, “5”, “, ”, “7” и “>:” преобразуются в строку “Enter point 1 <5, 7>:”, которая записывается в качестве значения переменной szP1 и будет использована для вывода текста подсказки во время запроса.

Третья строка выполняет запрос данных у пользователя. Функция getpoint выводит в зону подсказки содержимое строковой переменной szP1, информируя пользователя о требуемых действиях с его стороны и предлагая в угловых скобках значение по умолчанию. После этого функция getpoint ожидает действий пользователя. Если пользователь согласится со значениями по умолчанию, то он должен нажать клавишу [Enter]. Это действие будет воспринято как отказ от ввода данных и функция getpoint возвратит значение nil. Если пользователь не согласен со значением по умолчанию, то он должен указать точку с помощью мыши или ввести ее координаты с клавиатуры. В этом случае функция getpoint возвратит список с координатами введенной точки. Результат выполнения функции getpoint будет сохранен во вспомогательной переменной Paux.

В четвертой строке проводится анализ ответа пользователя. Если пользователь ввел значения координат точки в ответ на запрос функции getpoint, то они были сохранены в переменной Paux и, в случае подстановки этой переменной в качестве условия в функцию if, она будет трактоваться как значение T (истинно). Поскольку эта же переменная стоит в качестве выражения выполняемого в случае выполнения условия в функции if, то ее же значение и будет возвращено функцией if, а затем сохранено в качестве нового значения переменной p1. Если пользователь согласился со значениями по умолчанию, отказавшись от ввода других значений, то переменная Paux в качестве условия будет трактоваться как nil (ложно) и в качестве возвращаемого значения функции if будут переданы неизмененные координаты точки p1.

Таким образом, в зависимости от предыстории работы программы и действий пользователя в результате выполняемого фрагмента кода может реализоваться одна из трех ситуаций:

    1. точка p1 инициализируется координатами 0,0;

    2. точка p1 сохраняет свои координаты без изменений;

    3. пользователь задает мышью или с клавиатуры новые значения координат точки p1.