Комментарий, описывающий назначение и особенности программы, располагаемый в ее начале, должен быть достаточно подробным, не вызывающим необходимости обращения к дополнительной документации. Следует при этом учитывать, что длина строки, выводимой на экран, на большинстве мониторов ограничена 80 символами. Увеличение количества точек с запятой, предваряющих комментарий, поможет подчеркнуть его важность.
Вдумчивое отношение к тексту программы поможет предотвратить появление непредумышленных ошибок. Многие функции Автолиспа (например, функции группы getxxx) контролируют соответствие характера вводимых данных структуре функций. Однако нередки ситуации, неподвластные такому контролю. Ранее упоминалось, что автоматическая объектная привязка может превалировать даже над прямым вводом координат точки, вследствие чего результат работы программы окажется совершенно неожиданным. В этом легко убедиться, включив автоматическую привязку в программе, например,
Если предполагается, что создаваемая программа будет использоваться в иноязычных версиях Автокада (например в русскоязычной), каждую команду, опцию или ключевой символ следует предварять символом подчеркивания _. Примером может служить следующая строка:
(command "_line" pt1 pt2 pt3 "_c").
Характеристики неоднократно используемых примитивов и содержание таблиц целесообразно сделать легкодоступными, сохраняя их в памяти. В любом случае это значительно удобнее, чем повторно обращаться к Автокаду за теми же самыми данными.
В заключение следует заметить, что любое словесное изложение техники программирования в принципе не может описать все тонкости процесса. Поэтому всегда есть смысл изучать уже существующие отлаженные программы. Папка
Литература
1.
2.
3.
4.
5. AUTOCAD® Release 13. Customization Guide. Part II. AutoLISP Basics. - Autodesk, Inc., 1994.
6. AUTOCAD® Release 12. AutoLISP Programmers Reference. - Autodesk, Inc., 1992.
Алфавитный указатель функций Автолиспа
В указатель включены функции Автолиспа, описанные или упомянутые в настоящем пособии.
А
Abs, 15
Angle, 17
Append, 40
Ascii, 64
Assoc, 43
Atan, 16
Atof, 64
Atoi, 64
Atom, 39
С
Car, 41
Cdr, 41
Chr, 64
Close, 63
Command, 7, 19
Cond, 32
Cons, 40
Cos, 16
D
Defun, 20
Distance, 17
E
Entdel, 47
Entget, 48
Entlast, 47
Entmake, 48
Entnext, 47
Exp, 17
Expt, 17
F
Fix, 17
Findfile, 63
Float, 17
G
Gcd, 17
Getangle, 30
Getcorner, 30
Getdist, 30
Getenv, 31
Getint, 30
Getkword, 30, 33
Getorient, 30
Getpoint, 30
Getreal, 30
Getstring, 30
Getvar, 25
I
If, 32
Intget, 33
Inters, 18
Itoa, 64
L
Length, 41
List, 39
Listp, 39
Load, 63
Log, 17
Logand, 16
Logior, 16
Lsh, 16
M
Mapcar, 41
Max, 17
Member, 43
Min, 17
Minusp, 17
N
Nth, 43
O
Open, 62
P
Polar, 18
Prinl, 71
Princ, 72
Print, 72
Progn, 32
Prompt, 71
Q
Quote, 12
R
Read, 65
Read-char, 65
Read-line, 65
Rem, 17
Repeat, 53
Reverse, 40
S
Setq, 7
Setvar, 25
Sin, 16
Sqrt, 17
Ssadd, 51
Ssdel, 52
Ssget, 49
Sslength, 52
Ssmemb, 52
Ssname, 52
Strcat, 65
Strlen, 66
Subst, 40
Substr, 66
T
Tblnext, 59
Tblsearch, 60
W
While, 53 Z
Zerop, 17
СОДЕРЖАНИЕ
Предисловие 3
1. Общие сведения 5
1.1. Типы данных в Автолиспе 6
1.2. Лексические соглашения 9
1.3. Выражения и переменные Автолиспа 10
1.4. Основная функция присвоения в Автолиспе 12
2. Математика в Автолиспе 14
2.1. Функции обработки чисел 14
2.2. Некоторые геометрические функции 17
3. Взаимодействие Автолиспа с Автокадом 19
3.1. Вызов команд Автокада в Автолисп 19
3.2. Создание новой функции 20
3.3. Создание новой команды Автокада 20
3.3.1. Функция обрисовки рамки 22
3.3.2. Создание слоев 23
3.3.3. Организация поля изображения 23
3.3.4. Работа с системными переменными 24
3.3.5. Объединение нескольких команд 25
3.3.6. Автоматическая загрузка программы 28
4. Организация пауз и ветвление программ 30
4.1. Организация пауз для ввода данных 30
4.2. Условное ветвление программ 32
4.3. Использование ключевых слов 32
4.4. Вычерчивание болта 34
5. Работа со списками 39
5.1. Формирование списков 39
5.2. Извлечение данных из списка 41
6. Работа с базой данных чертежа 44
6.1. Характеристики примитивов 44
6.2. Точечная пара 46
6.3. Средства обработки отдельных примитивов 47