Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 40045.doc
Скачиваний:
3
Добавлен:
30.04.2022
Размер:
243.71 Кб
Скачать

ГОУВПО «Воронежский государственный технический

университет»

Кафедра компьютерных интеллектуальных технологий

проектирования

311-2009

Методические указания

к выполнению лабораторных работ № 5-7

по курсу «Компьютерная графика»

для студентов специальности 230104

«Системы автоматизированного проектирования»

очной формы обучения

Воронеж 2009

Составители: д-р техн. наук Е.Д. Федорков.

канд. техн. наук А.С. Кольцов,

ст. преп. В.А. Рыжков

УДК 681.3.06

Методические указания к выполнению лабораторных работ № 5-7 по курсу «Компьютерная графика» для студентов специальности 230104 «Системы автоматизированного проектирования» очной формы обучения / ГОУВПО «Воронежский государственный технический университет»; сост. Е.Д. Федорков, А.С. Кольцов, В.А. Рыжков. Воронеж, 2009. 32 с.

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

Методические указания подготовлены на магнитном носителе в текстовом редакторе Microsoft Word 2003 и содержатся в файле KompGraf_4och.doc.

Предназначены для студентов 3 курса.

Ил. 3. Библиогр.: 10 назв.

Рецензент д-р техн. наук, проф. О.Н. Чопоров

Ответственный за выпуск зав. кафедрой д-р техн. наук, проф. Е.Д. Федорков

Издается по решению редакционно-издательского совета Воронежского государственного технического университета

© ГОУВПО «Воронежский

государственный технический

университет», 2009

Лабораторная работа № 5 доступ к autocad с использованием visual lisp

1. Цель работы

Практическое знакомство с методикой создания программ с помощью VisualLISP, а также освоение возможности автоматизации доступа к разнообразным средствам AutoCad с использованием возможностей VisualLisp.

2. Теоретический материал

Приведено описание языка программирования VisualLISP методики создания с его помощью программ для AutoCad.

Visual LISP представляет собой интегрированную среду разработки (integrated development environment - IDE), обеспечивающую удобный и простой в использовании интерфейс, который помогает создавать код, отлаживать его и тестировать программы

Для запуска Visual LISP в командной строке AutoCad набрать команду Vlide или выбрать Tool  VisualLISP  Visual LISP Editor (Инструменты  VisualLISP  VisualLISP ). С помощью одного из этих методов можно переключиться в Visual LISP в любой момент времени.

Создание нового файла, открытие, загрузка и редактирование файла VisualLISP с помощью Visual LISP осуществлятся из меню Visual LISP при выборе File  Open (Файл  Открыть). В диалоговом окне Open File to Edit/View (Открытие файла для редактирования/просмотра) найдите и выберите файл. Щелкните на кнопке Open(открыть). Visual LISP откроет выбранный вами файл в отдельном окне. В Visual LISP можно открыть любое количество файлов.

Если вы работаете в окне AutoCAD, то можете загрузить VisualLISP-программы в AutoCAD двумя способами. Первый предполагает использование командной строки. Для загрузки программы 3DARRAY из командной строки введите с клавиатуры (load "3darray"). Круглые скобки переключают интерпретатор командной строки на обработку VisualLISP выражения. Имя файла помещается в двойные кавычки.

Все файлы VisualLISP должны иметь расширение .lsp. Однако для обеспечения безопасности и ускорения работы AL-программы можно компилировать как файлы проекта с расширением .fas или .vlx. AutoCAD сначала загружает файлы с расширением .vlx, затем .fas и наконец .lsp.

В окне Visual LISP содержится множество средств, облегчающих процесс программирования. Эти средства и обеспечивают разительное отличие между созданием кода VisualLISP в новой и более ранних версиях AutoCAD. Если раньше код VisualLISP приходилось вводить в обычном текстовом редакторе, то теперь специальные средства редактора помогут вам отформатировать и создать код.

Чтобы закрыть файл в Visual LISP, щелкните на пиктограмме Close. (Для этого можно также воспользоваться комбинацией клавиш <Ctrl+F4>.) Чтобы завершить работу Visual LISP, щелкните на кнопке Close самого приложения или нажмите комбинацию клавиш <Alt+F4>. Как и при выходе из AutoCad, вам будет предложено сохранить все внесенные изменения.

Создание собственных программ на VisualLISP

Как и все языки программирования, VisualLISP имеет свой синтаксис и содержит свой набор функций. Разрабатывать программы на VisualLISP довольно просто, так как они сразу могут быть протестированы. При разработке программ на компилируемых языках приходится затрачивать много дополнительных усилий, так как после каждого изменения программа должна быть вновь скомпилирована, и только после этого можно будет видеть, как это отразится на работе AutoCAD. Именно такая технология используется, например, в ObjectARX.

В языке VisualLISP первым всегда стоит оператор, за которым следуют команды. Оператор можно считать обозначением функции, которая что-то выполняет, а операнды - данными, которыми оперирует функция.

Язык VisualLISP можно использовать в AutoCAD в интерактивном режиме, поскольку он является интерпретатируемым. Результат получается немедленно после ввода выражения языка VisualLISP в командную строку. Интерпретируемый язык - это язык, в котором операторы транслируются в машинные коды и выполняются по очереди. Это дает возможность интерактивного ввода VisualLISP - программ в AutoCAD .

Чтобы создать новый файл Visual LISP, откройте редактор Visual LISP (команда Tolls  VisualLISP  Visual LISP Editor) и выберите команду File  New file или щелкните на пиктограмме New File стандартной панели инструментов.

Теперь в новом документе можно начать вводить код. Как только вы приступите к вводу, то сразу же заметите, что ваш код выглядит несколько иначе, чем текст в обычном текстовом редакторе - он выделен цветом!

Программирование на VisualLISP

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

(setq radius 3)

Эту операцию можно выполнить в окне Console Visual LISP. Если вы хотите использовать эту переменную в командной строке AutoCAD, перед ней следует поставить (!):

Command: !radius

3

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

Взаимосвязь между строковыми константами и переменными так же проста, как между числовыми константами и переменными.

(setq name "Robin")

"Robin"

Можно также использовать вложенные VisualLISP-выражения - включать их одно в другое:

(setq radiua (+ 2 1))

3

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

(defun chg2red (selected_object)

)

Для обращения к этой программе из AutoCAD или из другой VisualLISP-программы используется формат (chg2red selected_object). Здесь имя переменной, которая передается программе chg2red в качестве аргумента, находится после имени функции, и все выражение заключается в круглые скобки.

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

3.5 2.0)

Этот список задает точку с координатами 1.0, 3.5, 2.0 в прямоугольной системе координат X, Y, Z. Так как список представляет собой группу элементов, может потребоваться извлечь из него один или несколько элементов. В табл. 3 приведен перечень функций извлечения элементов на примере списка (1.0, 3.5, 2.0).

Как правило, имя списка - переменная, значение которой присваивается оператором setq_ например:

(setq corner (list 1.0 3.5 2.0))

(nth 0 corner)

В этом примере функция (nth 0 corner) возвращает значение 1.0, так как 1.0 является первым элементом списка corner.

Список создается функцией LIST. Если элементы списка являются константами (а не переменными), для его формирования можно использовать функцию QUOTE. Для ускоренного вызова функции QUOTE можно использовать одиночную кавычку (') (она задается той же клавишей, что и апостроф). Следующие две функции эквиваленты:

(setq corner (list 1.0 3.5 2.0 ) )

(setq corner ' (1.0 3.5 2.0 ) )

Необходимость выполнить какую-либо процедуру при наличии некоторых условий возникает довольно часто. Условное выражение проще всего создать при помощи оператора IF, который выполняет одно действие, если выражение-операнд истинно, и другое, если оно ложно. Иными словами, результат операции зависит от истинности некоторого выражения.

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

Предположим, требуется выбрать окружности с радиусом меньше 0.25. Вот пример оператора IF, в котором radius - переменная с присвоенным ранее значением:

( if (< radius .25)

(princ "Радиус меньше .25")

(princ "Радиус не меньше .25")

)

Здесь используется условное выражение (< radius .25). Выражение Если_True - это (princ "Радиус меньше .25"), а выражением Если_False - (princ "Радиус не меньше .25"). Этот условный оператор эквивалентен следующему утверждению: Если радиус меньше, чем .25, печатать "Радиус меньше .25"< если нет - "Радиус не меньше .25".

Выражение Если_False можно опустить. Тогда VisualLISP выполнит выражение Если_True, если условное выражение истинно, а если оно ложно, сразу перейдет к выполнению остальной части программы.

Циклы обеспечивают возможность выполнения одного или нескольких операторов программы заданное количество раз. Один из способов организации цикла - использование оператора WHILE.

Для приостановки выполнения программы и ввода значений или указания точки на объекте в тело функции COMMAND можно включить функцию PAUSE. Например, выражение (command "circle" pause "3") делает паузу для того, чтобы пользователь определил центр, а затем создает окружность радиусом 3.

Включение в текст программы комментария. В начале программы включите комментарий с описанием ее функционального назначения. Это поможет другим пользователям вашей программу лучше понять ее логику, а вам самим - быстрее вспомнить собственный замысел несколько месяцев спустя. Строки комментария в VisualLISP-Программах начинаются с символа "точка с запятой"(;).

Комментарии также следует поместить и в тексте программы. Отсутствие комментариев может испортить даже самый лучший код. Большинство профессиональных программистов очень подробно комментируют и документируют свои программы.

Среда визуального программирования Delphi

Среда Delphi обеспечивает высокоэффективную работу программиста и является одной из популярных систем программирования/10/. Этим объясняется актуальность передачи расчетных параметров из программы созданной с помощью Delphi в AutoCAD. Рассмотрим варианты передачи расчетных данных в графический редактор AutoCAD.

Рассмотрим более подробно механизм передачи расчетных параметров в графический редактор AutoCAD. Текстовый файл name.txt формируется программой и представляет собой записанные в определенном порядке расчетные параметры. В конце файла могут быть указаны справочные данные, например, марка материала и масса инструмента и др.

Для осуществления связи между программой, написанной на языке Delphi и графической системой необходимо указать место нахождения последней. Для указывается полный путь к файлу acad.exe, после чего программа проверяет наличие запускающего файла в указанной директории. Для осуществления автоматической загрузки файла name.lsp, предусмотрено наличие файла с расширением .scr, в котором указанно имя lsp-файла, а так же название функции для прочерчивания инструмента. Файл acad.exe записывается со специальным ключом. Например: c:\program files\acad200\acad.exe /b name1.scr

В системе программирования VisualLISP предусмотрены специальные функции для считывания данных из текстового или какого-либо другого файла (atof (read-line f), где f—файловая переменная), после выполнения которых определенным переменным в программе VisualLISP присваиваются значения параметров, посчитанных в расчетной программе. Затем, командами, содержащимися в файле name.lsp, осуществляется автоматическое прочерчивание инструмента.

Ниже представлены основные процедуры и функции, используемые в программе:

  • (setq f (open "name.txt" "r")) – процедура, связывающая файловую переменную f с файлом обмена данных .txt.

  • (command "limits" "0,0" "420,300" ^c) – процедура, устанавливающая пределы чертежа. В дальнейшем команды, указываемые в кавычках, означают стандартные процедедуры ACAD’а, вызываемые Auto LISP’ом.

  • (setq a (atof(read-line f))) – процедура присваивания переменной а, значения первой строки текстового файла, причем функция atof переводит строковую переменную в переменную типа real.

  • (close f) – стандартная процедура, означающая конец работы с файлом.

  • (command "zoom" "180,180" "210,210" ^C) – процедура, увеличивающая окно с координатами, указанными в кавычках (без данного увеленичения не проставляется радиус дуги)

  • (setq pt2 (list x2 y2 )) – процедура, присваивающая списковой переменной pt2 два значения х2 и у2.

  • (command "line" pt0 pt1 ^c) – процедура рисования отрезка от точки pt0, к точке pt1.

  • (command "arc" pt1 pt2 pt3 ^c) – процедура вычерчивания дуги по трем точкам.

  • (command "linetype" "set" "center2" ^c)– процедура ACAD’а, устанавливающая новый тип линии -- "center2". (для линии центра вида сверху).

  • (setq ll( distance pd1 pd2 ) ) – функция, возвращающая в переменную ll расстояние от точки pd1 до точки pd2.

  • (command "dimlinear" pd1 pd9 pdi4 ^c) – процедура проставления вертикального или горизонтального размера от точки pd1, к точке pd9. Выноска размера устанавливается в точку pdi4.

  • (command "dimaligned" pt0 pt1 pdi1 ^c) – процедура проставления размера под углом базовой линии.

  • (command "dimradius" pt2 pdi2 ^c) – процедура проставления радиуса. Выноска осуществляется в точку pdi2.

  • (command "dimangular" "" pt0 pt4 pt1 ^c) – процедура проставления размера угла (по трем точкам pt0 pt4 pt1, в точку pt13).

  • (command "text" "366,10" "5" "0" "ВГТУ АМ971" ^c)– процедура вставления текста ВГТУ АМ971 размером 5 мм в точку с координатами 366,10.

  • (command "zoom" "e" ^c) – увеличение всего чертежа.

  • (command "erase" pause "all" "" ) – процедура удаления чертежа, после нажатия пользователем любой кнопки.

В программе можно использовать арифметические функции:

  • (setq xq3 (- x5 10 )) – переменной xq3 присваивается значение разности переменной х5 и 10.

  • (setq xc1 (+ a 15 )), (setq pt16 (list (+( - x4 (/ l 1.2))5) (+ b 7)))– то же самое – сложение, деление и вложенные операции.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]