Построение параметрических изображений




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

(DISTANCE <точка1> <точка2>) – функция возвращает действительное число, равное расстоянию между < точкой1 > и <точкой2>.

(POLAR <точка> <угол> <расстояние>) – функция вычисляет координаты новой точки, находящейся от заданной <точки> на некотором <расстоянии> под <углом>, который задается в радианах и измеряется против часовой стрелки относительно координатной оси X.

(ANGLE <точка1> <точка2>) – функция вычисления угла в радианах, образованного вектором, направленным из <точки1> в <точку2>, и осью X. Этот угол измеряется против часовой стрелки.

(INTERS <точка1> <точка2> <точка3> <точка4> [<С>]) – функция вычисления точки пересечения двух отрезков, заданных <точкой1>, <точкой2> и <точкой3>, <точкой4>. Если признак <C> равен NIL, то будет определена точка пересечения линий бесконечной длины, наложенных на заданные отрезки. Если <С> имеет любое значение, отличное от NIL, или если аргумент <С> вообще отсутствует, то ищется точка пересечения только внутри отрезков. Если точка пересечения в этой ситуации не найдена, то функция INTERS возвращает NIL.

При получении параметрических изображений вначале выполняют расчет узловых точек данных изображений, которые в примере ниже имеют обозначения р1, р2,…. рn. Далее по расчетным узловым точкам необходимо построить в среде AutoCAD параметрические изображения видов, разрезов, сечений деталей и конструкций.

Пример. Написать программу на языке AutoLISP, выполняющую построение параметрического изображения (рис. 7.5).

Рисунок 7.5. Параметрическая модель изображения

 

(defun kontur ();функция построения параметрических изображений;

;расчет точек главного вида

(setq

x 50 y 50 l 100 l1 50 h1 25 h 50 d 20 u 0.78

p1 (list x y)

p2 (polar p1 0 l)

p3 (polar p2 1.57 h)

p4 (polar p3 3.14 5)

р5 (polar p1 u 5)

р6 (inters p1 p5 p3 p4 nil)

р7 (list (+ x l1) (+ y h1))

р8 (polar p1 4.71 10)

р9 (polar p1 4.71 20)

); окончание функции - setq

; формирование изображения главного вида

(command "line" p1 p2 p3 p6 p1 "" "circle" p7 (/ d 2))

; формирование изображения разреза

(command "рline" p10 p11 p12 p13 p10 "")

(command "рline" p14 p15 p16 p17 p14 "")

;нанесение изображения штриховки на разрезе

(command "hatch" "jis_wood" "10" "0" p10 р14 "")

(command "line" p15 p10 "" "line" p16 p13 "")

;нанесение размеров на чертеже

(command "dim" "horiz" P1 P2 P9 "" "horiz" P1 P7 P8 ""

"vertical" P3 P2 P19 ""

" vertical " p13 p16 p18 (strcat "%%c" (rtos d 2 0)) "exit")

); окончание функции – kontur

Функции работы со списками в языке AutoLISP

Имеются функции, позволяющие конструировать списки из данных, определенных ранее в программе.

(LIST <элемент>...) – функция формирует список из любого числа элементов (атомов или списков) и возвращает список.

(CONS <элемент> <список>) – функция добавляет <элемент> (атом или список) в качестве первого элемента к уже существующему списку и возвращает обновленный список.

(APPEND <список>...) – функция соединяет несколько списков в один общий список.

(REVERSE <список>) – функция возвращает список с элементами, расставленными в обратном порядке.

Пример

(SETQ A '(1.0 2.0))

(SETQ В '(С D Е))

(SETQ F (LIST А В)) создает в F список ((1.0 2.0)(С D Е)).

Выделение элементов списков

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

(CAR <список>) – функция возвращает первый элемент списка. Если список пуст, то возвращается NIL.

(CDR <список>) – функция возвращает новый список, отличающийся отсутствием первого элемента. Если список пуст, возвращается NIL. Если <список> представлен как точечная пара, то CDR возвращает второй элемент как атом, а не как список.

В AutoLISPе определены функции, обеспечивающие последовательное выполнение CAR и (или) CDR вплоть до четырех уровней вложенности: CAAR, CADR, CDDR, CADAR и т.д.

Пример

(CAAR X) эквивалентно записи (CAR (CAR X));

(CDAR X) эквивалентно записи (CDR (CAR X));

(CADAR X) эквивалентно записи (CAR (CDR (CAR X))) и т.п.

Функции типа CAR и CDR часто используются для выделения координат точек.

(LAST <список>) – функция возвращает последний элемент <списка>, который может быть атомом либо списком.

(MEMBER <элемент> <список>) – функция просматривает <список> и ищет в нем заданный <элемент>. Если <элемент> найден, то возвращается список от <элемента> до конца исходного <списка>. Иначе возвращается NIL.

(NTH <номер> <список>) –функция возвращает элемент <списка>, имеющий заданный <номер>. <Номер> должен иметь целое неотрицательное значение. Первый элемент списка имеет номер 0.

(ASSOC <элемент> <список>) – функция обеспечивает "ассоциативный поиск" в структурированном списке, т.е. в списке, элементы которого сами являются списками. Эти списки построены по схеме:

(< ключевой элемент > < значение >...)

Поиск проводится по совпадению <элемента>, заданного в функции ASSOC, с <ключевым элементом> в <списке>, заданного в ASSOC. Если поиск удался, то возвращается найденный список, иначе – NIL. Таким образом, осуществляется поиск данных по ключу в сложной структуре данных.

Пример

(SETQ DETAL '((КОД 123456) (КОДМ 001234) (М 1.45)));

(ASSOC 'КОДМ DETAL) возвращает (КОДМ 001234).

(SUBST <новый элемент> <старый элемент> <список>) – функция SUBST дополняет функцию ASSOC, позволяя заменять элементы в списке. Производится просмотр списка, и каждый найденный <старый элемент> заменяется на <новый элемент>. Возвращается обновленный список.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: