Выбрать главу

P.K. Рыжиков

Введение в Автолисп

ПРЕДИСЛОВИЕ

В процессе выполнения графических работ конструктор обычно импортирует в чертеж некоторое множество групп примитивов, объединенных в блоки, внешние ссылки и т.п. Чаще всего они представляют собой стандартные и нормализованные детали и узлы.

В то же время использование блоков для импортирования в чертеж, например, изображений стандартных болтов требует создания в качестве отдельного блока чертежа каждого типоразмера болта, что влечет за собой разрастание графической базы данных до неприемлемых размеров и усложняет технику ее использования. Поэтому конструкторская практика послужила поводом для разработки пакетов приложений, позволяющих, с одной стороны, выполнять некоторые типовые расчеты, с другой - осуществлять автоматический перенос результатов расчета в чертеж. Такие пакеты могут как встраиваться в Автокад (например, AutoCAD Мар), так и опираться на собственную графическую среду (например, программный продукт КОМПАС, разработанный АО ACKOH).

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

Основной средой программирования в Автокаде служит функциональный язык Автолисп (AutoLISP), в основу которого положен язык программирования LISP, разработанный в 1961 году. Возможности программной поддержки Автокада чрезвычайно широки как в части автоматизации процесса создания чертежа, так и в части управления интерфейсом среды.

В настоящем пособии рассматриваются вопросы, связанные лишь с первой задачей, что же касается управления интерфейсом, то с описанием этих методов можно подробно ознакомиться, привлекая соответствующую литературу [1, 3, 5].

Описание языка основывается на Автолиспе, сопровождающем тринадцатую и более поздние версии Автокада. Развитие языка происходило главным образом за счет расширения его возможностей. В 14-й версии заметно обновлена идеология графической среды, особенно в части описания полилиний, что позволило существенно уменьшить размер графических файлов. Кроме того создана интегрированная среда Visual LISP, обладающая собственным развитым интерфейсом и многими функциональными компонентами, позволяющими производить создание и отладку программ без обращения непосредственно к Автокаду. Описание среды Visual LISP в пособие не включено, так как ему посвящена вышедшая из печати специальная книга [1].

Предлагаемое читателю пособие основано на цикле лекций и практических занятий по курсу “Основы автоматизированного конструирования” и иллюстрировано некоторыми программами (или извлечениями из них), используемыми в учебном процессе. На эти иллюстрации наложила отпечаток последовательность изучения материала, в связи с чем на некоторых этапах создания программ избраны не лучшие их варианты (например, это касается программы, где впервые используются операции обработки наборов), однако далее в программы вносятся рациональные изменения.

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

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

1. ОБЩИЕ СВЕДЕНИЯ

Современный Автолисп является мощным функциональным языком, позволяющим работать с глубоко структурированными программными объектами. В отличие от операторных языков программирования, таких как Фортран, Паскаль и т.п., основой Автолиспа являются не операторы, а встроенные или внешние функции.

Автолисп хорошо взаимодействует с базами числовых и графических данных. В качестве числовых баз данных могут использоваться продукты многих СУБД (например, dBASE), таблицы, файлы результатов, полученные в результате выполнения других программ. Последнее обстоятельство очень важно, поскольку позволяет связать с Автолиспом любые операторные программы, достаточно лишь создать выходные файлы этих программ в формате, поддающемся чтению средствами Автолиспа. Что касается графических баз данных, то, рассматривая чертеж как такую базу, пользователь может извлекать из нее отдельные примитивы и их наборы и осуществлять над ними программным путем любые операции, доступные Автолиспу. Кроме того, возможно создание программ, которые, руководствуясь введенными параметрами, способны вычерчивать сколь угодно сложные графические объекты. Несколько подобных программ (разумеется, достаточно простых) описаны в настоящем пособии.