Пример программы построения параметризованного изображения
Рассмотрим пример программы на языке AutoLISP для получения семейства чертежей. [6]
Представленная программа позволяет получить чертеж вала с произвольным числом ступеней. Пользователь задает начальную точку, число ступеней и для каждой ступени – длину и диаметр. Программа рисует контур детали и проставляет длины ступеней от единой базы. Программа спрашивает о необходимости простановки диаметров и при утвердительном ответе пользователя проставляет их.
При составлении программы принимались следующие решения:
масштаб изображения 1:1;
базовая точка располагается в центре левого торца первой ступени вала так, что каждая следующая ступень рисуется справа от предыдущей;
чтобы не рисовать дважды границу двух ступеней, ступень вала изображается с учетом соотношения между ее диаметром и диаметром предыдущей ступени: если следующий диаметр меньше , то формируется линия по четырем точкам (функция ST1), иначе ‒ по шести точкам (функция ST2);
контур создается полилинией шириной 0.5, что позволяет получать на изображении различную толщину для контурных и прочих линий;
диаметры проставляются так, что размерная линия отстоит на 10 см от правой границы данной ступени, следовательно, при слишком малой длине ступени размерный текст может наложиться на линию контура;
в связи с этим пользователю предоставлена возможность выбора способа простановки диаметров: автоматически или «вручную» с помощью команд ACAD.
|
|
; Программа 12. Формирование изображения вала
; с заданным числом ступеней
(DEFUN ID ( ) ; Функция для ввода исходных данных
(SETQ d (GETDIST (STRCAT “\nВведите диаметр ступени” (ITОА i) “ d = “))
1 (GETDIST “\nВведите длину ступени 1= “))
);id
(DEFUN STO ( ) ;Функция для изображения первой
; ступени
(SETQ p1 (POLAR bp (/ PI 2) (/ d 2))
p2 (POLAR p1 01)
p3 (POLAR p2 (* 1.5 PI) d)
p4 (POLAR p3 PI 1)
pl (POLAR bp 0 1) ;pl - базовая точка для новой ступени
)
(COMMAND “PLINE” p1 “W” 0.5 0.5 p2 p3 p4 “ С ”)
(SETQ d0 d)
(SETQ sp (LIST (LIST p2 p3))); подготовка списка
; пар точек для простановки диаметров
);st0
(DEPUN ST1 ( ) ; Функция для изображения ступени
; с меньшим диаметром
(SETQ p1 (POLAR pl (/ PI 2) (/ d 2))
p2 (POLAR pi 01)
p3(POLAR p2(*1.5PI)d)
p4 (POLAR p3 PI 1)
pl (POLAR pl 01)
)
(COMMAND “PLINE” p1 “W” 05 05 p2 p3 p4” “)
(SETQ d0 d)
(SETQ sp (CONS (LIST p2 p3) sp)) ; дополнение
;списка точек
); sti
(DEFUN ST2 ( ) ; Функция для изображения ступени
; с большим диаметром
(SETQ p1 (POLAR pl (/ PI 2) (/ d0 2))
p2 (POLAR p1 (/ PI 2) (/ d 2))
p3 (POLAR p2 01)
p4 (POLAR p3(* 1.5 PI) d)
p5 (POLAR p4 PI 1)
p6 (POLAR pl (‘1.5 PI) (/ d0 2))
pl (POLAR pl 01)
)
(COMMAND “PLINE” p1 “W” 0.5 0.5 p2 p3 p4 p5p6” “)
(SETQ d0 d)
(SETQ sp (CONS (LIST p3 p4) sp))
); st2
(DEFUN RZM ( ) ; Функция для простановки размеров
;ступеней
(PROMPT “\nНужно ли проставлять диаметры? <да>”)
(IF ( = (READ-CHAR) 10) ; В случае ответа
; < Enter >, т.е. “Да”:
|
|
(FOREACH рр sp ; Цикл по элементам
; списка sp - парам точек
(SETQ pl (CARpp)
; Выделение первой точки
p2(CADRpp)
; Выделение второй точки
рЗ (LIST (- (CAR p1) 10) (CADR p1))
; Точка для размерной линии
)
( COMMAND “ DIML ” “ VER ” p 1 p 2 рЗ
“%%с< >”)
; Простановка диаметра
);foreach
);if
(SETQ pr (GETPOINT “\nУкажите точку для простановки первого размера”)
sp (REVERSE sp)
; Реверсирование списка точек
рр (NTH 0 sp)
; Выделение первой пары точек из списка
pl (CADR pp)
; Выделение второй (нижней) точки из пары
)
(COMMAND “DIM” “HOR” bp p1 pr” “)
;Простановка длины первой ступени
(SETQ sp (CDR sp)) ; Удаление первой пары точек
;из списка
(FOREACH рр sp ;Цикл по оставшемуся списку пар
(SETQ p1 (CADR рр ))
(COMMAND “BAS” р 1” “)
;Простановка длины ступени от базы
);foreach
(COMMAND)
; Завершение команды DIM - аналог Ctrl/C
);dia
(DEFUN C:VAL ( ) ; Головная функция - построение
;изображения вала
(SETVAR “CMDECHO” 0) ;Отмена эха команд
(SETVAR “BLIPMODE” 0)
;Отмена маркировки точек примитивов
(SETQ bp (GETPOINT “\nУкажите базовую точку”))
(INITGET 7)
;3апрет на ввод неположительных чисел и пробела
(SETQ n (GETINT “\nВведите число ступеней вала n = “))
(SETQ i 1) ; i - номер ступени
(ID) ; Ввод исходных данных для
; первой ступени
(STO) ; Изображение первой ступени
(WHILE ( < i n) ;Цикл по числу ступеней
(SETQ i (1+i))
(ID); Ввод исходных данных для i-й ступени
|
|
(IF(<d d0)
(ST1) ;Изображение ступени с меньшим диаметром
(ST2) ;Изображение ступени с большим диаметром
);if
); while
(RZM) ; Простановка размеров
(COMMAND “LINETYPE” “S” “CENTER” “” “LINE”
(POLAR bp PI 5) (POLAR pi 0 5) “”)
; Изображение осевой линии
(PRIN1) ;”Тихий выход” из программы
)
В этих методических указаниях описаны основные функции языка AutoLISP для AutoCAD. Знания этих функций достаточно для решения большинства практических задач: построения чертежей типовых деталей и узлов, расчетно-графических задач, работы с файлами, анализа и преобразования изображений, расширения системы команд графического редактора ACAD. Некоторые функции остались за рамками описания, в том числе функции, связанные с распределением оперативной памяти, отладкой программ и др.
Все возможности языка AutoLISP сохраняются в последних версиях системы AutoCAD. (см. [8, 9]). Помимо этого, начиная с версии 11 имеется возможность графического программирования с использованием языка С. Для выполнения программ, написанных на языке С, необходим интерпретатор AutoLISP.
Наряду с интерпретатором, разработан компилятор AutoLISP (поставляется отдельно от системы AutoCAD). Программа на AutoLISP, отлаженная в режиме интерпретации, может быть откомпилирована. Полученный в результате загрузочный модуль будет выполняться значительно быстрее и требовать меньше памяти.
|
|
Наряду с программированием на AutoLISP существует и другой способ получения модели семейства чертежей, отличающихся значениями размеров, ‒ метод параметризации. Этот метод реализован в таких системах, как PARACAD, SYNTHESIS, CUSP, p-Design, и других, работающих совместно с системой AutoCAD. Модель формируется с помощью системы параметризации в режиме графического редактирования, т.е. значительно удобнее и быстрее, чем программирование. Однако круг задач, решаемых с помощью системы параметризации, значительно уже, чем круг задач, для решения которых используется AutoLISP, и ограничен получением чертежей, различающихся только размерами. Например, чертеж вала с произвольным количеством ступеней, полученый с помощью программы 12, нельзя получить методом параметризации.
Возможности графического программирования продолжают развиваться (см. [10-12]).
Дата добавления: 2019-09-13; просмотров: 220; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!