Графический язык программирования AutoLISP является расширением языка программирования LISP. LISP- это язык высокого уровня, ориентированный на обработку списков, который выбран в качестве базового потому, что графические примитивы (начиная с точки), блоки, наборы примитивов и блоков удобно представляются в виде списков. /1/
В составе системы AutoCAD поставляется интерпретатор языка AutoLISP. Если при генерации AutoCADа интерпретатор AutoLISPа был подключен, то он загружается в оперативную память после запуска графического редактора ACAD и доступен в течение всего сеанса работы с ACAD.
Таким образом, графический редактор ACAD и интерпретатор языка AutoLISP представляют собой единую систему: любая функция AutoLISPа может быть вызвана из графического редактора, и любая команда редактора может быть использована в программе на AutoLISPе. Возможности применения AutoLISPа весьма широки и разнообразны.
Наиболее характерны следующие классы применений:
а) Программирование чертежей с параметризацией.
Создаётся программа, позволяющая при каждом обращении к ней формировать новый чертёж, отличающийся от предыдущих чертежей, построенных этой же программой, размерами, а также, возможно, и топологией: могут появиться новые элементы обогащения, сечения, измениться текстовая часть чертежа и т.д. Время получения чертежа с помощью такой программы может быть в десятки раз меньше времени, необходимого для его создания с помощью редактора ACAD, и, что не менее важно, получить чертёж сможет любой конструктор, даже мало знакомый с командами ACAD.
б) Создание и использование графических баз данных.
Если накоплено большое количество чертёжных файлов, программ на AutoLISPе, соответствующих чертёжным фрагментам, деталям, узлам, то их можно в некотором смысле считать графической базой данных. Программы на AutoLISPе в сочетании с пользовательскими меню могут организовывать просмотр, поиск, подключение к объектам их частей и т.п. Тогда работа конструктора в системе AutoCAD будет сводиться к поиску нужных объектов (сборочных единиц, деталей) или частей чертежа, обращению к соответствующим LISP-программам и ответам на вопросы этих программ.
Есть ещё одно очень важное обстоятельство: хранение графических данных в виде набора программ на AutoLISPе даёт возможность в десятки и сотни раз сократить требуемую память на магнитном диске по сравнению с памятью, необходимой для хранения чертёжных файлов ACAD, так как, во-первых, одна программа позволяет получить не один, а множество чертежей, во-вторых, текст программы на AutoLISPе занимает на порядок меньше памяти, чем файл, который может быть получен в результате работы этой программы.
в) Анализ и (или) автоматическое преобразование изображений.
Программа на AutoLISPе может воспринимать чертёж на экране, построенный с помощью графического редактора и обсчитывать его. Программа также может быстро осуществить преобразование изображения, на которое при работе в графическом редакторе пришлось бы затратить значительное время, например:
заменить все вставки одного типа на вставки другого типа из какого-либо чертёжного файла;
перенести все объекты с одного слоя на другой;
повернуть все блоки на заданный угол - каждый относительно своей базовой точки и т.п.
Расширение системы команд графического редактора ACAD и построение на основе универсального редактора специализированных САПР, имеющих гораздо более простой и естественный для пользователей язык, ориентированный на конкретную предметную область. В этом случае хорошим дополнением к AutoLISPу является возможность создания пользовательских меню.
В языке AutoLISP определены более 150 различных операций, которые называются встроенными функциями.
По назначению их можно подразделить на функции:
- для работы с числовыми данными, реализующие арифметические операции, а также наиболее часто используемые математические функции. Эти функции позволяют вычислять координаты примитивов, рассчитывать длины, площади и т.п.
- для проверки выполнения различных условий операции сравнения, булевские функции ("и", "или", "не") и др., а также функции, организующие ветвления по условиям. С помощью этих функций можно, например, получать топологически различные чертежи из одной программы.
- для работы со строками текстов: формирование, сцепление, сравнение строк, выделение символов из строки и т.п. Эти функции позволяют, например, формировать технические требования на чертеже путём совмещения переменной и постоянной частей.
- для ввода с клавиатуры, устройств указания, и вывода на экран и принтер, с помощью которых реализуется диалог пользователя с программой. Вывод на принтер позволяет получать из программы текстовые документы, например, спецификацию по сборочному чертежу.
- для создания и чтения текстовых файлов, благодаря чему обеспечивается возможность связи по данным между различными программами на AutoLISPе.
- характерные для всех языков программирования и обеспечивающие компактное описание действий в программе за счёт таких конструкций, как циклы и подпрограммы;
- характерные для языков типа LISP: создание, анализ и преобразование списков. Поскольку данные о графических объектах-примитивах и блоках представляются в виде списков, то эти функции используются для обработки внутрипрограммных описаний графических объектов.
Специфику языка AutoLISP определяют функции, связанные с графикой и работой в среде графического редактора ACAD:
- для внутрипрограммных геометрических построений, важнейшая из этих функций - определение точки, заданной через другую точку, угол луча и расстояние по лучу. С помощью этой функции можно формировать из программы опорные точки примитивов чертежа, задавая их параметры с помощью переменных.
- для приёма геометрических данных, т.е. данных, которые могут задаваться перемещением курсора на экране: точки, угла, расстояния;
- для выделения примитивов построенного на экране чертежа и наборов примитивов, выделения и изменения характеристик примитивов и блоков, анализа и изменения системных переменных и содержимого символьных таблиц ACAD;
- для включения в программу любой команды ACAD. Причём аргументы и опции команды могут быть заданы не только из программы, но и в режиме графического диалога в точности так, как если бы эта команда выполнялась просто в редакторе ACAD. /2/
Использование AutoLISP дает большие возможности для проектирования.
В различной литературе и Интернете есть готовые программы для построений чертежей в LISP. Приведем для примера программу, которая построит квадрат с левым нижним углом в точке (10,10) и стороной 25мм (рисунок 1) /3/.
Рисунок 1. Построение квадрата.
Если пользоваться только клавиатурой, то диалог выглядел бы следующим образом:
Команда: ПЛИНИЯ
От точки: 10,10
Текущая ширина линии равна 0.00
ДУга/Замкни/Полуширина/ДЛина/ОТМени/Ширина/: @10,0
ДУга/Замкни/Полуширина/ДЛина/ОТМени/Ширина/: @0,10
ДУга/Замкни/Полуширина/ДЛина/ОТМени/Ширина/: @-10,0
ДУга/Замкни/Полуширина/ДЛина/ОТМени/Ширина/: Замкни
На Автолиспе это будет выглядеть так:
( COMMAND "ПЛИНИЯ" "10,10" "@10,0" "@0,10" "@-10,0" "ЗАМКНИ")
Авторами данной работы была разработана программа, предназначенная для автоматизированного расчета и построения схемы одиночного тросового молниеотвода, получившая Свидетельство о государственной регистрации программы для ЭВМ. /5/
Программа работает в несколько этапов:
Файл с текстом программы загружается в память AutoCAD. Для этого файл с текстом программы перетягивается в рабочую область чертежа, либо используется специальная команда AutoCAD;
В командной строке необходимо ввести команду “JUVE”. После этого AutoCAD предлагает пользователю ввести данные для расчета, а именно длину, ширину, высоту здания и высоту молниеприемника.
Рис 2. Ввод команд
AutoCAD автоматически производит расчеты параметров молниезащиты. Методика расчетов принята из официальных руководящих документов. /4/
В командной строке необходимо ввести команду “GO”. По этой команде AutoCAD производит построения, а также выводит текстовое поле, в котором указаны расчетные данные.
Рис 3. Итоговый результат
Данная работа может быть применена при проектировании электроустановок, а именно при построении молниезащиты. Программирование и автоматизированное построение чертежей в AutoCAD являются очень перспективной областью. За счёт использования информационных технологий может быть существенно облегчены проектировочные работы.
Список используемой литературы
Полещук Н.Н., Лоскутов П.В. «AutoLisp и Visual LISP в среде AutoCAD». – СПб.: БХВ-Петербург, 2006.
http://aco.ifmo.ru/~nadinet/html/lectures/lect_lsp.html
http://www.cad.dp.ua/kurs/LECTURE7/lecture7.html
ИНСТРУКЦИЯ ПО УСТРОЙСТВУ МОЛНИЕЗАЩИТЫ ЗДАНИЙ, СООРУЖЕНИЙ И ПРОМЫШЛЕННЫХ КОММУНИКАЦИЙ СО 153-34.21.122-2003
Моногаров С.И., Бондаренко И.Л. Автоматизированное построение схемы молниезащиты (одиночного тросового молниеотвода). Свидетельство о государственной регистрации программы для ЭВМ № 2014611195, 27 января 2014 г.