Лекции и лабораторные работы по AutoCAD'у

         

Основы параметрического проектирования


Основы параметрического проектирования

В соответствии с общей идеологией системы Автокад главное ее предназначение - вовсе не рисование чертежей на компьютере (это приводит к падению производительности труда конструктора в 2..3 раза [2]), а создание на ее основе специализированной САПР определенного класса изделий. Такие САПР резко, в 15..20 раз повышают производительность.

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

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

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

Каждая связь i-j,

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

 

, где                                                    (7.1)


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

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

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

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

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

                                          (7.2)





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

, где                                                (7.3)

x,y

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

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

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

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





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

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

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


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

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

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

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



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

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

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

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

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

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

5.     Конец

Несомненно, здесь нужен большой цикл типа 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 - Головная функция .


Содержание раздела