Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





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

 

(7.2)

 

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

 

, где (7.3)

 

x,y - координаты начальной точки,

- вектор параметров графа.

 

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

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

 
 

Рисунок 7.2 - Конструктивно однородные изделия.

 

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

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

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

 
 

Рисунок 7.3 - Базовые точки геометрических примитивов.

 

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

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

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

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

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

Конец

Несомненно, здесь нужен большой цикл типа WHILE, который мы уже рассматривали в такой роли.

 
 

Попробуем написать простейший параметризатор для детали, изображенной на рисунке 7.4.

Рисунок 7.4 - Заданная геометрия детали.

 

Сначала нужно определиться с координатами базовых точек. Поскольку проекция симметрична, достаточно найти координаты только двух точек А и В. Нижняя половина проекции отрисуется автоматически при помощи команды Автокада ЗЕРКАЛО.

Определим размерные параметры детали. Очевидно, их два: длина цилиндра и его диаметр.

Для сложных деталей возможны различные наборы размеров. подходящий набор выбирается из технологических соображений.

Для расчета необходимо задаться точкой привязки - опорной точкой, определяющей положение проекции на листе чертежа. Условимся считать опорной точкой левый конец осевой линии. Также, заглянув в ЕСКД, условимся, что осевая линия выходит за контур на 5мм.

Итак, на входе нашей функции:

координата Х точки привязки;

координата Y точки привязки;

длина цилиндра L;

диаметр цилиндра D.

Нужно найти:

координату X точки A (обозначим AX);

координату Y точки A (обозначим AY);

координату X точки B (обозначим BX);

координату Y точки B (обозначим BY).

Очевидно, что:

 

(7.4)

Будем считать, что наша функция отображения (назовем ее show) вызывается из некоторой головной функции и ей передаются параметры x, y, l, d (координаты точки привязки, длина и диаметр цилиндра соответственно). Результаты расчета нужно записывать в локальные переменные функции show. Соображения экономии памяти, а также хорошего стиля программирования приводят к тому, что нам хватит всего двух локальных переменных: в переменную tmp мы будем заносить текущие результаты расчетов, а в переменную lst - список рассчитанных координат. Этот список будет состоять из двух элементов (точки A и B), каждый из которых, в свою очередь, тоже будет списком их двух координат: X и Y: .

Пишем программу (легко сказать...):

 

  (DEFUN show (x y d l / tmp lst) ; x, y, s, l - параметры ; tmp, lst - локальные переменные ; координата x точки A записывается в переменную tmp (SETQ tmp (+ x 5)) ; в переменную lst записывается список координат ; точки A (SETQ lst (LIST tmp (+ y (/ d 2)))) ; координата x точки B записывается в переменную tmp (SETQ tmp (+ x 5 l)) ; в переменную tmp записывается список координат ; точки B (SETQ tmp (LIST tmp (+ y (/ d 2)))) ; в список lst добавляется точка B (SETQ lst (LIST lst tmp)) ); конец функции  

Листинг 7.1 - Функция расчета координат базовых точек.

Отрисовку будем выполнять в той же функции show.

... ; Удаляем все объекты (COMMAND "СОТРИ" "РАМКА" '(-10000 -10000) '(10000 10000) "") ; Рисуем осевую линию красным цветом (код 1) ; и штрих-пунктирно (тип линии CENTER) (COMMAND "ЦВЕТ" 1 "ТИПЛИН" "У" "CENTER" "") (COMMAND "ПЛИНИЯ" (LIST x y) (LIST (+ x l 10) y) "") ; Рисуем контур детали белым цветом (код 1) ; и сплошной линией (тип линии CONTINUOS) (COMMAND "ЦВЕТ" 7 "ТИПЛИН" "У" "CONTINUOUS" "") (COMMAND "ПЛИНИЯ" (LIST (+ x 5) y); левая точка пересечения осевой ; с контуром (CAR lst); точка A (CADR lst); точка B (LIST (+ x l 5) y); правая точка пересечения осевой с контуром ""); прерывание команды "ПЛИНИЯ" (COMMAND "ЗЕРКАЛО" (CAR lst); выбрали объект, указав точку А ""; прервали выбор объектов (LIST x y); первая точка осевой линии - ;точка пересечения контура с осевой слева (LIST (+ x 5) y); вторая точка осевой линии "Н"); старые объекты не удалять ; Проставляем длину (COMMAND "ЦВЕТ" 1) (COMMAND "РАЗМЕР1" "ГОР"; размер горизонтальный (CAR lst); начало первой выносной линии - точка А (CADR lst); начало второй выносной линии - точка В (POLAR (CAR lst) (/ PI 2) 30); размерная линия ; отстоит от контура на 30мм ""); размерный текст ставится автоматически ; Проставляем диаметр (COMMAND "РАЗМЕР1" "ВЕР" (CADR lst) (LIST (CAR (CADR lst)) (- (CADR (CADR lst)) d)) (POLAR (CADR lst) 0 30) ; "@" - знак диаметра в шрифте eskd.shx. ; После него выводим диаметр, преобразованный ; в текстовую строку (STRCAT "@" (RTOS d 2 2))) (COMMAND "ПОКАЖИ" "ВСЕ") ); конец функции

Листинг 7.2 - Функция расчета координат базовых точек и отрисовки.

 

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

Итак, функция ввода данных на входе не имеет параметров, а вот возвращать она должна несколько чисел. Единственный способ возвратить несколько значений - объединить их в список. Теперь мы можем написать функцию ввода данных для нашего примера (назовем ее getdim).

 

  (DEFUN getdim (/ l d) ; ввод длины и диаметра ; возвращаемый список: (диаметр длина) (INITGET 7); запрет пустого ввода и ввода чисел <=0 (SETQ l (GETREAL "\nВведите длину валика: ")) (INITGET 7) (SETQ d (GETREAL "\nВведите диаметр валика: ")) (LIST d l); возвращаемое значение ); конец функции getdim  

Листинг 7.3 - Функция ввода параметров.

 

Головная функция должна выполнять подготовительные операции (например, установку системных переменных Автокада для отрисовки размеров в соответствии с требованиями ЕСКД) и циклический вызов двух остальных функций: getdim и show. Для удобства перед именем головной функции можно добавить символы "C:". Тогда в Автокаде появится новая команда с именем вашей головной функции и можно будет не набирать скобки при ее вызове. В примере головная функция называется C:main, поэтому для ее вызова в командной строке Автокада достаточно набрать main.

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

 

(DEFUN C:main (/ l x y flag) ; Устанавливаем размерные переменные по ЕСКД ; Текст над размерной линией, а не в разрыве (SETVAR "DIMTAD" 1) ; Текст вне размерных линий параллелен линиям (SETVAR "DIMTOH" 0) ; Текст между размерными линиями горизонтален (SETVAR "DIMTIH" 0) ; Проведение линии между выносными, если текст сбоку (SETVAR "DIMTOFL" 1) ; Продолжение выносных линий за размерными, мм (SETVAR "DIMEXE" 1) ; Отключение генерации допусков (SETVAR "DIMTOL" 0) ; Размер стрелок (SETVAR "DIMASZ" 3) ; Продолжение выносных линий за размерную (SETVAR "DIMEXE" 3) (SETQ flag T) (WHILE flag (SETQ l (getdim) x 10 y 10) (show x y (CAR l) (CADR l)) (SETQ ans (GETSTRING "\nПовторить?<Д/Н>: ")) (SETQ flag (OR (= ans "Д") (= ans "д"))) ); конец WHILE (PRIN1) )

Листинг 7.4 - Головная функция.


Date: 2015-12-12; view: 360; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию