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

ОСАПР / Лабораторный_практикум_ОСАПР

.pdf
Скачиваний:
34
Добавлен:
15.04.2015
Размер:
14.61 Mб
Скачать

23.Написать программу, которая создает локальный блок Отрезки, из горизонтальных отрезков. Если на чертеже нет таких примитивов, то нарисовать

24.Написать программу, которая создает автономный блок из прямоугольников, у которых длина, меньше ширины. Если на чертеже нет таких примитивов, то нарисовать

25.Написать программу, удаляющую все красные дуги, радиусы которых меньше заданного радиуса, указанного пользователем. Если на чертеже нет таких примитивов, то нарисовать

26.Написать программу, которая копирует каждый прямоугольник, увеличенный в два раза (голубой цвет) с базовой точкой пересечения вертикальной и горизонтальной осевой линии. . Если на чертеже нет таких примитивов, то нарисовать

27. Написать программу, которая делает две копии окружности: увеличенной в два раза (красный цвет) и уменьшенной в два раза (голубой цвет)с общим центром. . Если на чертеже нет таких примитивов, то нарисовать

28. Написать программу, которая выполняет штриховку ANSI32 всех прямоугольников. Масштаб штриховки рассчитывается программно. Если на чертеже нет таких примитивов, то нарисовать

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

Пример1. При необходимости быстро стереть все с заданного слоя будет полезна нижеприведенная программа.

(defun C:ERLAY ()

(SETQ a (GETSTRING “\nИмя слоя”) b (SSGET “X” (LIST (CONS 8 a)))

)

(COMMAND “_ERASE” b “”))

Пример2. Ниже приводится короткая программа, создающая из группы объектов единую полилинию.

(defun C:unline ( / a) (setq a (SSGET)

(IF (> (SSLENGTH a ) 1 )

(COMMAND “_pedit” a “_y” “_j” a “” “_x”)

)

)

191

Пример3. Стирается последний примитив (но его имя записывается в переменную secondlast); стирается примитив, ставший последним, т.е. бывший предпоследний; путем повторного применения функции ENTDEL по отношению к примитиву secondlast стертый последний элемент восстанавливается на экране

; Удаление предпоследнего элемента

(DEFUN C:ERASE2 ( )

(SETQ secondlast (ENTDEL (ENTLAST))) (ENTDEL (ENTLAST))

(ENTDEL secondlast)

)

Пример 4.В процессе работы с AutoCAD иногда удобно изменять свойства примитива, указанием на другой примитив. Программа изменения свойства примитива (слой) указанием на другой примитив.

(defun chlay () (setq a (ssget))

(setq lays (cdr (assoc 8

(entget (car (entsel "\nВыберите примитив для создания слоя ")))))) (setq n (sslength a))

(setq index 0) (repeat n

(setq ent (entget (ssname a index))) (setq index (1+ index))

(setq lay (assoc 8 ent)) (setq l (cons (car lay) lays)) (setq ent1 (subst l lay ent)) (entmod ent1)

)

)

Пример 5.

; ПРОГРАММА

;-------------------------------------------------------------------------------

(defun $get_arcs ( / i aa aa2 el_t rad cen st_a en_a) ; подбор примитивов - дуг

(setq aa (ssget "X" '((0 . "ARC") (8 . "1")) ))

192

;обработка окружностей - копирование на другой слой

(setq i 0)

;проверка простая - действия выполняются, если список аа существует

(if aa

(while (< i (sslength aa))

(setq aa5 (ssname aa i)) ; имя примитива

;копирование каждого элемента со сдвигом (5,5)

;можно было бы скопировать списком, но тогда

;сложнее менять цвет примитивов, и принадлежность слою

(command "_.copy" aa5 "" "0,0" "5,5")

;сохранение последнего элемента

(setq aa2 (entlast))

;взятие данных о нем

(setq el_t (entget aa2))

;замена информации о слое на новую

(setq el_t (subst (cons 8 "2") (assoc 8 el_t) el_t))

;замена/добавление информации о цвете

(if (assoc 62 el_t)

;если цвет указан - замена

(setq el_t (subst (cons 62 33) (assoc 62 el_t) el_t)) ; если цвет не указан - добавление

(setq el_t (append el_t (list (cons 62 33))))

)

;обновить базу

(entmod el_t)

;извлечение информации о параметрах дуги

(setq

rad (cdr (assoc 40 el_t)); радиус cen (cadr (assoc 10 el_t)); центр

st_a(cdr (assoc 50 el_t)); стартовый угол en_a(cdr (assoc 51 el_t));конечный угол

)

;вывод информации

(Prompt "\nРадиус:") (print rad) (Prompt "\nЦентр:") (print cen)

(Prompt "\nСтартовый угол дуги:") (print st_a) (Prompt "\nКонечный угол дуги:") (print en_a) (setq i(+ i 1))

193

)

(alert "Извините, но на чертеже нет элементов с такими параметрами")

)

)

Пример 6.

Рассмотрим еще один пример - программу, которая позволяет изменить высоту символов ранее введенного текста.

(defun chtext (/ a ts n index b1 b c d b2) (setq a (ssget)); выбор объектов

(setq ts (getreal "Введите новую высоту текста")) (setq n (sslength a))

(setq index 0)

(repeat n (setq b1 (entget (ssname a index))) (setq index (1+ index)) (setq b (assoc 0 b1)) (if (= "TEXT" (cdr b))

(progn

(setq c (assoc 40 b1)) (setq d (cons (car c) ts)) (setq b2 (subst d c b1)) (entmod b2))

)

)

)

Возможна следующая модернизация программы:

вместо: (setq a (ssget))

можно вставить: (setq a (ssget "X" ((0. "TEXT")))).

В этом случае, программа будет изменять высоту всех текстовых Так как теперь в наборе остались одни текстовые примитивы, таким образом, нет смысла извлекать имя примитива и делать проверку на его соответствие строке «TEXT».

(setq b (assoc 0 b1)) (if (= "TEXT" (cdr b)))

194

Лабораторная работа № 13 «AutoLISP. Разработка программыпараметризатора «Вал»»

Цель работы. Овладеть основами параметрического проектирования

Постановка задачи

1.Установить набор параметров s1, s2 , ..., sn , определяющих

параметрическую модель изделия. Задать точку привязки a.

2. Написать функцию ввода данных: вход - ничего, выход - список вида: ( a s1 ... sn ), где a, в свою очередь, список двух координат точки

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

3.Написать функцию отрисовки: вход – список ( a s1 ... sn ), выход -

ничего. Функция выполняет отрисовку чертежа детали. Перед отрисовкой экран необходимо очистить. Нужно устанавливать требуемые цвет и тип линий, а после отрисовки выполнить команду «Покажи Все». Должны быть проставлены все параметризируемые размеры.

4. Написать головную функцию. В ней в цикле выполняются следующие действия:

-инициализация (например, установка размерных переменных);

-вызов функции ввода данных и запоминание возвращаемого ей списка в локальной переменной;

-вызов функции отрисовки с передачей ей в качестве параметра списка, возвращенного функцией ввода данных;

- запрос пользователю: «Продолжить? <Да/Нет>» В зависимости от ответа либо прекратить выполнение программы (с «тихим выходом»), либо повторить ввод размеров, отрисовку

ит.д. (цикл);

5.Написать функцию вычисления массы детали: вход - список

(s1 ...sn ), выход - масса детали данных размеров в кг (плотность стали 7,85 г/см3). Выводить массу детали на экран после отрисовки.

Исходные данные

Варианты заданий представлены в таблице 13.1

195

Таблица 13.1 Варианты заданий

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

10

11

12

13

14

196

 

 

Продолжение таблицы

15

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

 

 

 

18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

20

 

 

 

 

 

 

 

 

 

Требования к отчету

6.Отчет должен содержать титульный лист с названием лабораторной работы.

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

8.Краткие теоретические сведения.

9.Листинг программы.

10.Результаты работы программы.

Вопросы для защиты

1.Какие изделия можно считать подлежащими параметризации?

2.Понятие варианта конструкции.

3.Сущность параметрического проектирования.

4.Алгоритм работы программы-параметризатора.

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

Главное предназначение системы AutoCAD - вовсе не рисование чертежей на компьютере, а создание на ее основе специализированной САПР определенного класса изделий.

Как же надо правильно использовать AutoCAD? Анализ работы конструкторско-технологических служб ряда промышленных

197

предприятий позволил установить, что одна из наиболее трудоемких проектных процедур в ходе КТПП - разработка конструкторской документации на ряд близких по конструкции деталей и/или сборочных единиц (ДСЕ), отличающихся в основном своими размерными параметрами или вариантами исполнения. Данная процедура является трудоемким и нетворческим процессом с низкой производительностью и высокой вероятностью внесения ошибок. Особенно часто требуется выпускать конструкторскую документацию на средства технологического оснащения (СТО) машиностроительного производства: тиски, кондукторы, прессформы и т.д., причем подготовка этой документации должна вестись опережающими темпами для обеспечения времени на изготовление СТО к моменту запуска изделия в производство.

Следует четко определить, какие изделия можно считать подлежащими параметризации. При рассмотрении 2D-проекций детали видно, что они могут быть разбиты на элементарные графические примитивы: отрезки и дуги (рисунок 13.1, а). Каждый примитив однозначно определяется координатами своих базовых точек: начальной и конечной точек отрезка, начальной, конечной точек и центра дуги. Тогда проекцию можно представить в виде графа, вершины которого соответствуют базовым точкам, а ребра - параметрическим связям между ними (рисунок 13.1, б).

 

1

2

 

1

2

 

 

8

 

 

8

5

6

7

5

6

7

 

9

 

9

4

3

4

3

Рисунок 13.1 - Проекция детали (а) и ее представление в виде графа

(б).

Каждая связь i-j, проходящая от i-й до j-й базовой точки есть вектор параметров

198

(

 

),

 

dij ,αij

(13.1)

где dij - расстояние от точки i до точки j;

αij - угол между прямой, проходящей через точки i и j и прямой, выбранной в качестве начала отсчета углов.

Введем следующее определение.

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

Использование графов дает возможность, задавшись произвольными координатами xi, yi i-й базовой точки, однозначно

определить координаты всех остальных базовых точек при обходе графа по формулам:

x j

= xi

+ dij cosαij

(13.2)

y j

= yi

 

+ dij sinαij

 

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

(x,y,

 

),

 

d

(13.3)

где x, y - координаты начальной точки; d - вектор параметров графа. Многие изделия представляются в виде вариантных чертежей,

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

199

понятие варианта конструкции, для чего следует разбить граф проекции на константную часть C и переменную часть V. Тогда достаточно потребовать соответствия графов только константных частей для их автоматизированного параметрического проектирования, а вариантные части, являющиеся уникальными, проектируются с применением универсальных САПР с последующим объединением частей C и V.

Очень часто конструктору приходится выпускать документацию на ряд изделий, которые отличаются только своими размерами (линейными или угловыми), а форма их остается неизменной. Яркий пример таких изделий - технологическая оснастка: кондукторы, мерительный инструмент, пресс-формы и др.

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

При параметрическом проектировании конструктор запускает программу, рассчитанную на определенный класс изделий, и вводит требуемые размеры. Программа отрисовывает на экране чертеж детали. Конструктор оценивает его и при необходимости вводит размеры снова до достижения требуемого результата. Одновременно может рассчитываться масса детали, что позволяет контролировать ее «на ходу», прямо в процессе проектирования.

Проекция изделия как векторное изображение состоит из множества базовых геометрических элементов - отрезков и дуг.

Положение этих элементов на плоскости определяется координатами их базовых точек. Для отрезка базовыми точками являются его начало и конец, а для дуги - начало, конец и центр (дугу можно задать и через другие параметры: радиус, угол, направление и т.д. AutoCAD поддерживает 18 способов задания дуги).

Таким образом, программа-параметризатор рабоает по следующему алгоритму:

1.Ввод исходных данных;

2.Отрисовка текущего варианта

3.Запрос пользователю: повторить?

4.Если да, то переход на п. 1

5.Конец.

200

Соседние файлы в папке ОСАПР