Scientific journal
Modern high technologies
ISSN 1812-7320
"Перечень" ВАК
ИФ РИНЦ = 0,940

1 1
1
1325 KB

Графический язык программирования 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/.

bon1.wmf

Рисунок 1. Построение квадрата.

 Если пользоваться только клавиатурой, то диалог выглядел бы следующим образом:

Команда: ПЛИНИЯ

От точки: 10,10

Текущая ширина линии равна 0.00

ДУга/Замкни/Полуширина/ДЛина/ОТМени/Ширина/<Конечная точка сегмента>: @10,0

ДУга/Замкни/Полуширина/ДЛина/ОТМени/Ширина/<Конечная точка сегмента>: @0,10

ДУга/Замкни/Полуширина/ДЛина/ОТМени/Ширина/<Конечная точка сегмента>: @-10,0

ДУга/Замкни/Полуширина/ДЛина/ОТМени/Ширина/<Конечная точка сегмента>: Замкни

 На Автолиспе это будет выглядеть так:

( COMMAND «ПЛИНИЯ» «10,10» «@10,0» «@0,10» «@-10,0» «ЗАМКНИ»)

Авторами данной работы была разработана программа, предназначенная для автоматизированного расчета и построения схемы одиночного тросового молниеотвода, получившая Свидетельство о государственной регистрации программы для ЭВМ. /5/

Программа работает в несколько этапов:

1. Файл с текстом программы загружается в память AutoCAD. Для этого файл с текстом программы перетягивается в рабочую область чертежа, либо используется специальная команда AutoCAD;

2. В командной строке необходимо ввести команду “JUVE”. После этого AutoCAD предлагает пользователю ввести данные для расчета, а именно длину, ширину, высоту здания и высоту молниеприемника.

bon2.tif

Рис 2. Ввод команд

3. AutoCAD автоматически производит расчеты параметров молниезащиты. Методика расчетов принята из официальных руководящих документов. /4/

4. В командной строке необходимо ввести команду “GO”. По этой команде AutoCAD производит построения, а также выводит текстовое поле, в котором указаны расчетные данные.

bon3.tif 

Рис 3. Итоговый результат

Данная работа может быть применена при проектировании электроустановок, а именно при построении молниезащиты. Программирование и автоматизированное построение чертежей в AutoCAD являются очень перспективной областью. За счёт использования информационных технологий может быть существенно облегчены проектировочные работы.