Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книги_AutoCad_2 / Настройка AutoCAD_Sham_Tickoo-Customizing_2006г

.pdf
Скачиваний:
182
Добавлен:
09.04.2015
Размер:
9.06 Mб
Скачать

Использование Visual LISP

491

Bad conversion code (Неправильный код преобразования)

Функции преобразования был передан неверный пространственный идентификатор.

Bad entmod list value (Неправильное значение списка ENTMOD)

Один из подсписков ассоциированного списка, полученного функцией ENTMOD, содержит неверное значение.

Bad function (Неверная функция)

Первый элемент списка не является именем существующей функции.

Bad list (Неверный список)

Неверный список, полученный данной функцией.

Bad ssget list (Неверный список функции SSGET)

Параметр, переданный функции (ssget "x"), является неверным.

Bad ssget list value (Неправильное значение списка функции SSGET)

Один из подсписков ассоциированного списка, полученного функцией SSGET, содержит неверное значение.

Bad ssget mode string (Неверное строковое выражение, содержащееся в параметре режима функции SSGET)

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

Base point is required (Требуется определить координаты исходной точки)

Ошибка, возникающая при вызове функции getcorner без определения координат исходной точки.

Can’t evaluate expression (Вычислить выражение нельзя)

Неправильно поставленная десятичная точка или неверно сформированное выражение.

Can’t open file for input - LOAD failed (Нельзя открыть введенный файл - отказ функции LOAD)

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

Input aborted (Ввод данных прекращен)

Ошибка или преждевременное завершение определения параметров файла, которое приводит к прерыванию ввода данных.

Invalid character (Неверный символ)

Выражение, содержащее неверный символ.

Invalid dotted pair (Неправильная точечная пара)

Вещественное число, начинающееся с десятичной точки; в подобных случаях необходимо использовать ведущий нуль.

Misplaced dot (Неправильно расположенная точка)

Вещественное число, начинающееся с десятичной точки; в подобных случаях необходимо использовать ведущий нуль.

492 Глава 13

Задания для самопроверки

Ответьте на следующие вопросы и сравните свои ответы с правильными ответами, приведенными в конце этой главы.

1.Visual LISP содержит мощный ________ и ________.

2.Текстовый редактор поддерживает ________ круглых скобок, имен функций, переменных и других компонентов программы.

3.Форматтер ________ программный код, сохраняя его в удобочитаемом формате.

4.Для отслеживания значений переменных можно использовать средство ________, которое находится на панели инструментов View.

5.Для пошаговой отладки программы обычно используется средство ________, которое находится на панели инструментов Debug.

6.Какие способы могут быть использованы для запуска Visual LISP?

 

1. ____________________

2. ____________________

7.

Назовите основные области окна Visual LISP.

 

1. ____________________

2. ____________________

 

3. ____________________

4. ____________________

8.

Перечислите панели инструментов Visual LISP.

 

1. ____________________

2. ____________________

 

3. ____________________

4. ____________________

 

5. ____________________

 

Повторение пройденного материала

Ответьте на следующие вопросы.

1. Опишите различные способы загрузки программ Visual LISP.

1. ____________________

2. ____________________

2.Как запустить программу Visual LISP?

3.Можно ли открыть файл AutoLISP в текстовом редакторе Visual LISP?

4.Для каких целей используется окно консоли Visual LISP Console?

5.Можно ли ввести в окно консоли Visual LISP несколько выражений LISP? Если можно, приведите соответствующий пример.

6.Как записать выражение LISP на нескольких строках, используя окно консоли Visual LISP?

7.Что такое контекстное меню и как его вывести на экран?

8.Какие цвета в текстовом редакторе Visual LISP назначены по умолчанию следующим элементам программы:

круглым скобкам ____________

функциям LISP ______________

комментариям _______________

целым числам _______________

9.Для каких целей используется Visual LISP Formatter и как можно отформатировать текст?

10.Чем отличается заглавный комментарий от комментария завершения функции?

11.Как изменить опции форматирования?

Использование Visual LISP 493

12.Как выполнить отладку программы Visual LISP?

13.Как отслеживать значения переменных, используемых в программах Visual LISP?

Упражнения

Упражнение 6 (Общее)

Напишите программу Visual LISP, с помощью которой вы сможете начертить лестничный марш, показанный на рис. 13.28. Программа должна также вывести приглашение, которое позволит пользователю определить высоту и ширину каждой ступеньки, а также указать их количество. Пользователь должен также ввести ширину порожка, примыкающего к лестничной площадке.

Рис. 13.28. Эскиз лестничного марша для упражнения 6

Упражнение 7 (Общее)

Напишите программу Visual LISP, с помощью которой вы сможете начертить рамку для картины, показанную на рис. 13.29. Программа должна также вывести приглашение, которое позволит пользователю определить длину, высоту и ширину этой рамки.

Рис. 13.29. Эскиз рамки для упражнения 7

494 Глава 13

Упражнение 8 (Общее)

Напишите программу Visual LISP, с помощью которой вы сможете начертить трехмерную модель стола, показанную на рис. 13.30. Программа должна вывести приглашение, которое позволит пользователю ввести длину, ширину и высоту стола, а также толщину столешницы и размеры поперечного сечения ножек. В этой программе должна использоваться команда VPOINT, которая позволит вам изменить направление взгляда и создать трехмерное изображение стола.

Рис. 13.30. Эскиз стола для упражнения 8

Упражнение 9 (Общее)

Напишите программу на языке Visual LISP, с помощью которой вы сможете начертить фигуру, показанную на рис. 13.31, провести осевые линии и проставить все необходимые размеры. Предполагается, что L5 = D1, L3 = 1,5*D1, L2 = 10*D1, L1 = L2–D1, L4 = L3+D1.

Рис. 13.31. Эскиз фигуры для упражнения 9

Упражнение 10 (Общее)

Напишите программу на языке Visual LISP, с помощью которой вы сможете начертить втулку со шпоночным пазом, показанную на рис. 13.32. Программа должна вывести приглашение, которое позволит пользователю определить координаты точки P0 (центр втул-

Использование Visual LISP 495

ки/вала), диаметр вала D1, наружный диаметр втулки D2, ширину шпоночного паза W и высоту вала со шпонкой (T). Программа должна также начертить осевые линии в слое Center (зеленый цвет) и проставить размеры T и W в слое Dim (фиолетовый цвет).

Рис. 13.32. Эскиз втулки со шпоночным пазом для упражнения 10

Упражнение 11 (Общее)

Напишите программу на языке Visual LISP, с помощью которой вы сможете начертить равносторонний треугольник, вписанный в окружность заданного диаметра (рис. 13.33). Программа должна вывести приглашение, которое позволит вам определить величину радиуса и координаты центра описанной окружности.

Рис. 13.33. Равносторонний треугольник, вписанный в окружность

Упражнение 12 (Общее)

Напишите программу на языке Visual LISP, с помощью которой вы сможете провести касательные к окружностям, показанным на рис. 13.34. Программа должна вывести приглашение, которое позволит вам определить диаметры окружностей и расстояние между их центрами.

496 Глава 13

Рис. 13.34. Касательные, проведенные к окружностям. Центры окружностей находятся на линии, проведенной под углом А

Ответы на вопросы для самопроверки

1 — текстовый редактор, форматтер, 2 — цветовое кодирование, 3 — форматирует,

4 — Watch Window, 5 — Toggle Breakpoint, 6 — Tools AutoLISP Visual LISP Editor, VLIDE,

7 — меню, панели инструментов, окно консоли и строка состояния, 8 — Standard, Tools,

Debug, View.

Глава 14

Visual LISP: редактирование базы данных чертежа

Цель занятия

Познакомившись с материалом этой главы, вы научитесь:

редактировать базу данных чертежа с помощью Visual LISP;

использовать функции ssget, sslength, ssname, ssadd, ssdel, entget, assoc, cons, subst, entnext, entlast и entmode;

извлекать информацию из базы данных чертежа;

редактировать базу данных и изменять существующие значения.

498 Глава 14

Редактирование базы данных

Язык программирования Visual LISP позволяет не только писать программы или создавать новые команды, но и редактировать базы данных чертежа. Другими словами, Visual LISP является мощным инструментом, который позволяет вносить необходимые изменения в уже существующие чертежи. Например, можно написать программу, с помощью которой вы сможете удалить все текстовые элементы чертежа или изменить диаметр и цвет всех вычерченных окружностей, введя одну-единственную команду. Познакомившись с организацией хранения информации в программе AutoCAD, а также со способами извлечения и редактирования данных, вы сможете работать с базой данных так, как вы этого захотите.

В этой главе рассказывается о командах, наиболее часто используемых при редактировании базы данных чертежа. Для получения информации о командах, не вошедших в этот раздел, обратитесь к интерактивному справочному руководству для программистов “Visual LISP Programmer’s Reference”, опубликованному компанией Autodesk.

Функция ssget

Функция ssget дает вам возможность выделить произвольное количество объектов, имеющихся на чертеже. Описание этой функции обычно содержит название режима выделения (окно, пересечение, предыдущее, последнее и т.д.) и координаты точек, определяющие положение противоположных вершин окна выделения. Функция ssget имеет следующий формат:

(ssget [режим_выбора] [точка1 точка2])

где

режим_выбора — режим выделения объектов (w, c, l, p и т.д.);

точка1 — первая вершина окна;

точка2 — вторая вершина окна.

Примеры

(ssget)

Выделение объекта в обычном режиме

(ssget "L")

Выделение последнего объекта

(ssget "p")

Выделение ранее выбранных объектов

(ssget "w" (list 0 0)

Выделение объекта в оконном режиме (размеры и положение

(list 12.0 9.0))

окна определены точками 0,0 и 12.0,9,0)

(ssget "c" pt1 pt2))

Выделение объекта в режиме пересечения (размеры и поло-

 

жение окна определены ранее заданными точками pt1 и pt2)

Пример 1

Напишите программу Visual LISP, с помощью которой вы сможете стереть все объекты, оказавшиеся в пределах чертежного листа (размеры листа определяются значениями limmin и limmax). Для выделения объектов используется функция ssget. Предполагается, что объекты уже начерчены на листе.

Шаг 1: написание программы Visual LISP

Откройте окно Visual LISP, выбрав команду Tools AutoLISP Visual LISP Editor или введя выражение VLIDE в командную строку. Затем откройте текстовый редактор Visual LISP, выбрав команду New File из меню File. В окно редактора введите текст программы, приведенный в следующем абзаце.

Visual LISP: редактирование базы данных чертежа

499

Ниже представлен листинг программы Visual LISP для примера 1. Номера строк не

являются частью программы, а используются только в качестве ссылок.

;С помощью этой программы вы сможете удалить все

1

;объекты, находящиеся в пределах чертежного листа.

2

;

3

(defun delall ()

4

(setvar "cmdecho" 0)

5

(setq pt1 (getvar "limmin"))

6

(setq pt2 (getvar "limmax"))

7

(setq ss1 (ssget "c" pt1 pt2))

8

(command "erase" ss1 "")

9

(command "redraw")

10

(setvar "cmdecho" 1)

11

(princ)

12

)

13

Пояснения

Строки 1–3

В начале листинга находятся строки комментариев, описывающие функцию этой программы. Обратите внимание, все строки комментариев начинаются точкой с запятой (;).

Строка 4

(defun delall ()

В этой строке функция defun определяет функцию delall.

Строка 6

(setq pt1 (getvar "limmin"))

Функция getvar получает координаты левого нижнего угла чертежного листа (limmin), а функция setq присваивает эти значения переменной pt1.

Строка 7

(setq pt2 (getvar "limmax"))

Функция getvar получает координаты правого верхнего угла чертежного листа (limmax), а функция setq присваивает эти значения переменной pt2.

Строка 8

(setq ss1 (ssget "c" pt1 pt2))

Функция ssget обеспечивает выделение объектов, которые пересеклись или попали в окно, определенное точками pt1 или pt2. (В данном случае выделение объектов выполняется в режиме пересечения.) Затем функция setq присваивает определение множества выделенных объектов переменной ss1.

Строка 9

(command "erase" ss1 "")

Функция command вызывает команду ERASE, с помощью которой стирает множество ранее выбранных объектов, определенное значением переменной ss1.

500

Глава 14

Строка 10

(command "redraw")

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

Шаг 2: загрузка и запуск программы Visual LISP

Выберите команду Save или Save As из меню File и сохраните файл программы под именем delall.lsp. Чтобы загрузить созданную программу, выберите команду Load Text in Editor из меню Tools или щелкните на кнопке Load active edit window, которая находится на панели инструментов Tools. В окне консоли Visual LISP появится сообщение об успешной загрузке данной программы. Если в программе будут обнаружены ка- кие-либо ошибки, на экране появится соответствующее сообщение. Характер и причины возможных ошибок описываются в разделе “Коды ошибок и сообщения об ошибках”, который находится в конце главы 13 “Использование Visual LISP”. Теперь можете заняться пошаговой отладкой программы, выполняя процедуры, описанные в главе 13 в разделе “Отладка программы”. Например, чтобы привести в соответствие количество открывающих и закрывающих скобок, щелкните на кнопке Format Edit Window, которая находится на панели инструментов Tools.

Чтобы запустить программу, введите имя функции (delall) в строку приглашения консоли после знака _$ и нажмите клавишу <Enter>. Не забывайте, что имя функции необходимо указывать в круглых скобках. Выполнив описанные действия, перейдите в программу AutoCAD, выбрав команду Activate AutoCAD из меню Window.

Вы убедитесь, что все объекты, находившиеся на чертежном листе, удалены.

Функция ssget "X"

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

(ssget "X" критерии_отбора)

где

X — режим отбора функции ssget;

критерии_отбора — список определенных критериев, используемых при выборе объектов.

Примеры

(ssget "X" (list (cons 0

"TEXT")))

Возвращает множество выбранных элемен-

 

 

тов, состоящее из всех объектов TEXT, име-

(ssget "X" (list (cons 7

"ROMANC")))

ющихся на чертеже

Возвращает множество выбранных элемен-

 

 

тов чертежа, которое состоит из объектов

(ssget "X" (list (cons 0

"LINE")))

TEXT, набранных шрифтом ROMANC

Возвращает множество выбранных элемен-

 

 

тов, состоящее из всех объектов LINE, име-

(ssget "X" (list (cons 8

"OBJECT")))

ющихся на чертеже

Возвращает множество выбранных элемен-

 

 

тов, состоящее из объектов, находящихся

 

 

на слое OBJECT

Соседние файлы в папке Книги_AutoCad_2