- •Методические указания
- •Лабораторная работа №1 Создание 3d модели
- •Лабораторная работа №2 Создание параметризированной 3d-модели
- •3. Содержание работы
- •Лабораторная работа №3 Создание чертежей детали по 3d модели
- •3. Содержание работы
- •Лабораторная работа №4 Создание сборочного чертежа
- •3. Содержание работы
- •Лабораторная работа №5 Спецификация
- •3. Содержание работы
- •Лабораторная работа №6 Проектирование прикладной библиотеки трехмерного моделирования гайки с буртиком для сапр Компас-3d
- •3. Содержание работы
- •Лабораторная работа №7 Проектирование прикладной библиотеки для сапр Компас-3d трехмерного моделирования прихвата передвижного
- •3. Содержание работы
- •Библиографический список
- •Методические указания
- •394026 Воронеж, Московский пр-т, 14
Лабораторная работа №7 Проектирование прикладной библиотеки для сапр Компас-3d трехмерного моделирования прихвата передвижного
1. Цель работы: ознакомиться с созданием прикладной библиотеки трехмерного моделирования ЭБ-модели детали.
2. Указание к выполнению лабораторных работ
К выполнению лабораторной работы следует приступить после выполнения лабораторной работы №6.
3. Содержание работы
Прихват ГОСТ 4735-69 является стандартной деталью, поэтому представляется целесообразным «зашить» данные о его геометрических параметрах непосредственно в тело программы, используя массив. Это существенно упрощает программный продукт, не уменьшая его функциональности для конкретного типа стандартных изделий.
3.1. Библиотека служит для получения трехмерной модели прихвата ГОСТ 473569, конструкция которой приведена на рис. 7.1. Реализованы следующий вариант получения гайки: все размеры, указанные на чертеже фиксированы и могут быть выбраны пользователем через диалоговое окно библиотеки. Для повышения степени автоматизации в тело программы введен массив (таблица 1), задающий геометрию элементов болта. Блок-схема создания модели представлена на рис. 7.2.
Библиотека параметров Прихват передвижной ГОСТ 4735-69 // ds диаметр стержня // L; длина прихвата // dr; диаметр резьбы // B; ширина прихвата // H; высота прихвата // a; расстояние между центрами от- верстия и паза // a1; расстояние между осями паза // b; ширина паза |
// b1; ширина между опорами // l; расстояние от торца прихвата до оси паза // l1; длина опоры // l2; длина опорной части // l3; расстояние от торца прихвата до центра выборки // h; высота опоры // h1; глубина паза // c; фаска опорной части // c1; фаска // r; радиус опоры |
Рис. 7.1. Чертеж детали
Таблица 7.1
Ds 1 |
L 2 |
Dr 3 |
B 4 |
H 5 |
A 6 |
a1 7 |
B 8 |
b1 9 |
l 10 |
l1 11 |
l2 12 |
h 13 |
h1 14 |
c 15 |
c1 16 |
С2 17 |
06 |
040 |
06 |
18 |
08 |
18 |
08 |
07 |
08 |
18 |
06 |
06 |
1.6 |
04 |
2 |
0.46 |
1.0 |
06 |
050 |
06 |
20 |
10 |
22 |
12 |
07 |
08 |
22 |
06 |
06 |
1.6 |
04 |
2 |
0.46 |
1.0 |
06 |
063 |
06 |
20 |
10 |
28 |
16 |
07 |
08 |
28 |
06 |
06 |
1.6 |
04 |
2 |
0.46 |
1.0 |
08 |
050 |
08 |
22 |
10 |
22 |
10 |
10 |
10 |
22 |
06 |
06 |
1.6 |
04 |
2 |
0.46 |
1.6 |
08 |
063 |
08 |
25 |
12 |
28 |
16 |
10 |
10 |
28 |
06 |
06 |
1.6 |
06 |
3 |
0.46 |
1.6 |
08 |
080 |
08 |
25 |
12 |
36 |
22 |
10 |
10 |
36 |
06 |
06 |
1.6 |
06 |
3 |
0.46 |
1.6 |
10 |
063 |
10 |
28 |
12 |
28 |
12 |
12 |
12 |
28 |
06 |
06 |
1.6 |
06 |
3 |
0.46 |
1.6 |
10 |
080 |
10 |
32 |
16 |
36 |
20 |
12 |
12 |
36 |
08 |
08 |
1.6 |
08 |
3 |
0.72 |
1.6 |
10 |
100 |
10 |
32 |
16 |
45 |
28 |
12 |
12 |
45 |
08 |
08 |
1.6 |
08 |
3 |
0.72 |
1.6 |
12 |
080 |
10 |
36 |
16 |
36 |
16 |
14 |
16 |
36 |
08 |
08 |
1.6 |
08 |
3 |
0.72 |
1.6 |
12 |
100 |
10 |
40 |
20 |
45 |
25 |
14 |
16 |
45 |
10 |
08 |
2 . 0 |
10 |
4 |
0.72 |
1.6 |
12 |
125 |
10 |
40 |
20 |
56 |
32 |
14 |
16 |
56 |
10 |
08 |
2 . 0 |
10 |
4 |
0.8 |
1.6 |
Окончание таблицы 7.1
16 |
100 |
12 |
45 |
20 |
45 |
20 |
18 |
20 |
45 |
10 |
08 |
2 . 0 |
10 |
4 |
0.8 |
1.6 |
16 |
125 |
12 |
50 |
25 |
56 |
32 |
18 |
20 |
56 |
12 |
10 |
2 . 0 |
12 |
4 |
0.8 |
1.6 |
16 |
160 |
12 |
50 |
25 |
75 |
40 |
18 |
20 |
70 |
12 |
10 |
2 . 0 |
12 |
4 |
1. 17 |
1.6 |
20 |
125 |
16 |
56 |
25 |
56 |
25 |
22 |
25 |
56 |
12 |
10 |
2 . 5 |
12 |
4 |
1. 17 |
2 . 0 |
20 |
160 |
16 |
63 |
32 |
75 |
40 |
22 |
25 |
70 |
16 |
10 |
2 . 5 |
12 |
4 |
1. 17 |
2 . 0 |
20 |
200 |
16 |
63 |
32 |
95 |
60 |
22 |
25 |
90 |
16 |
10 |
2 . 5 |
12 |
4 |
1. 67 |
2 . 0 |
24 |
160 |
20 |
70 |
32 |
75 |
32 |
26 |
32 |
70 |
16 |
10 |
2 . 5 |
12 |
4 |
1. 67 |
2 . 5 |
24 |
200 |
20 |
80 |
40 |
90 |
50 |
26 |
32 |
90 |
20 |
16 |
2 . 5 |
16 |
5 |
1. 67 |
2 . 5 |
24 |
250 |
20 |
80 |
40 |
115 |
70 |
26 |
32 |
115 |
20 |
16 |
2 . 5 |
16 |
25 |
2 . 09 |
2 . 5 |
30 |
200 |
24 |
90 |
40 |
90 |
50 |
32 |
40 |
90 |
20 |
16 |
2 . 5 |
16 |
5 |
2 . 09 |
3.0 |
30 |
250 |
24 |
90 |
40 |
115 |
70 |
32 |
40 |
110 |
20 |
16 |
2 . 5 |
20 |
5 |
2 . 09 |
3.0 |
Рис. 7.2. Блок-схема построения 3D-модели прихвата
3.2. Порядок создания библиотеки аналогичен рассмотренному ранее при создании библиотеки проектирования гайки, поэтому ряд пояснений пропущен. Файл проекта аналогичен разработанному для гайки и отличаемся лишь именем библиотеки.
library Prihvat_per;
Result := PChar('Прихват передвижной');
1. Создаем диалоговое окно библиотеки и настраиваем свойства созданной формы при помощи Object Inspector, размещаем на форме компоненты, необходимые для реализации интерфейса библиотеки. Форма с диалоговым окном рассматриваемого примера библиотеки приведена на рис. 7.3. Представленный интерфейс целиком создан при помощи стандартных компонент среды Borland Delphi. Пояснительные надписи являются компонентом TLabel, поля ввода - TEdit, кнопка "Построить" - TButton.
Рис. 7.3. Интерфейс
На панели располагаются компоненты TLabel, служащие пояснительной надписью, выпадающие списки TComboBox и кнопка типа TButton. TComboBox применяются для выбора из списка определенного значения размера. В библиотеке данный компонент используется для выбора типа прихвата по диаметру болта из встроенного массива. Рисунок прихвата на форме является компонентом Image вкладки Additional. Переходим в окно редактирования исходного текста модуля формы.
2. Подключаем в секции uses необходимые модули и файлы, в секции var описываем переменные, которые будут доступны для всех процедур модуля. В случае необходимости вводим дополнительные типы и классы.
3. Создаем процедуру построения трехмерной модели детали согласно введенным параметрам.
4. Создаем процедуру обработки событий формы. В приведенном примере следует обрабатывать событие нажатия кнопки "Построить". Пункты 3 и 4 являются основными, на них приходится большая часть программного кода. При разработке библиотеки будут использоваться операции вращения, выдавливания и создания фаски. Текст программного модуля библиотеки аналогичен тексту модуля библиотеки болтов, поэтому подробно будут описаны только отличающиеся процедуры и функции.
Как и ранее первой строкой (iPart:= ksPart(iDocument3D.GetPart (pNew_Part))) создаем новую трехмерную деталь.
Отличительная часть библиотеки массив размерностью 11х9, описывающий параметрические размеры гайки.
ds,L:REAL;
Mas:array[1..23,1..17] of real;
i,R:integer;
Элементы массива представляют собой координаты в точек эскизов. Для поиска соответствующего исполнения гайки в массиве применена функция
function FindIndex(ds,L:real):integer;
var i,R:integer;
begin
R:=1;
for i:=1 to 23 do
if((Mas[i,1]=ds) and (Mas[i,2]=L)) then R:=i;
FindIndex:=R;
end;
с последующим выполнением после перечисления элементов массива Mas[1...23, 1...17] или Mas[ij]:
i:= Findlndex(ds);
Принцип работы функции следующий: при вводе значения ds запускается поиск по строкам от 1-ой по 23-ю. Когда строка найдена из нее забираются все необходимые размеры, соответствующие выбранному ds. Из найденных значений формируются эскизы для прихвата (рис. 7.4):
iSketchDocument2D.ksLineSeg(-Mas[i,2]+Mas[i,10], -Mas[i,5], -Mas[i,2]+Mas[i,10], 0, 1); iSketchDocument2D.ksLineSeg(-Mas[i,2]+Mas[i,10], 0, Mas[i,10]-Mas[i,11]-Mas[i,12], 0, 1); iSketchDocument2D.ksLineSeg(Mas[i,10]-Mas[i,11]-Mas[i,12], 0, Mas[i,10]-Mas[i,11]-Mas[i,12], -Mas[i,13], 1);
iSketchDocument2D.ksLineSeg(Mas[i,10]-Mas[i,11]-Mas[i,12], -Mas[i,13], Mas[i,10]-Mas[i,11], -Mas[i,13], 1);
iSketchDocument2D.ksLineSeg(Mas[i,10]-Mas[i,11], -Mas[i,13], Mas[i,10]-Mas[i,11], -Mas[i,16], 1);
iSketchDocument2D.ksArcBy3Points(Mas[i, 10] -Mas [i, 11], -Mas[i,16], Mas[i,10]-Mas[i,11]/2, 0, Mas[i,10], -Mas[i,16], 1);
iSketchDocument2D.ksLineSeg(Mas [i,10], -Mas[i,16], Mas[i,10], -Mas[i,5]+0.58*Mas[i,14], 1); iSketchDocument2D.ksLineSeg(Mas[i,10], -Mas[i,5]+0.58*Mas[i,14], Mas[i,10]-Mas[i,14], -Mas[i,5], 1);
iSketchDocument2D.ksLineSeg(Mas[i,10]-Mas[i,14], -Mas[i,5], -Mas[i,2]+Mas[i,10], -Mas[i,5], 1);
Рис. 7.4. Эскиз
Далее следует базовая операция выдавливания в две стороны:
iBaseExtrusionEntity := ksEntity(iPart.NewEntity( o3d_baseExtrusion )); if iBaseExtrusionEntity <> nil then begin
// интерфейс свойств базовой операции выдавливания
iBaseExtrusionDef := ksBaseExtrusionDefinition(iBaseExtrusionEntity.GetDefinition); if iBaseExtrusionDef <> nil then begin
iBaseExtrusionDef.DirectionType := dtBoth; // направление выдавливания iBaseExtrusionDef.SetSideParam( false{обратное направление}, etBlind {строго на глубину}, Mas[i,4]/2, 0, false );
iBaseExtrusionDef.SetSideParam( true{прямое направление}, etBlind {строго на глубину}, Mas[i,4]/2, 0, false );
iBaseExtrusionDef.SetSketch( iSketchEntity ); // эскиз операции выдавливания iBaseExtrusionEntity.Create; // создать операцию
Далее следуют две операции создания вырезов выдавливанием. Программные коды представлены ниже. Введем новый эскиз. Результат выполнения операции представлен на рис. 7.5.
Рис. 7.5. Результат операции выдавливания
// введем новый эскиз 2
iSketch2Document2D.ksArcByAngle(0, 0, Mas[i,8]/2, 90, 270, 1, 1);
iSketch2Document2D.ksLineSeg(0, Mas[i,8]/2, Mas[i,7], Mas[i,8]/2, 1);
iSketch2Document2D.ksArcByAngle(Mas[i,7], 0, Mas[i,8]/2, 90, 270, -1, 1);
iSketch2Document2D.ksLineSeg(Mas[i,7], -Mas[i,8]/2, 0, -Mas[i,8]/2, 1);
iSketch2Def.EndEdit; // завершение редактирования эскиза
// введем новый эскиз 3
iSketch3Document2D.ksCircle( -Mas[i,6], 0, Mas[i,3]/2, 1 );
iSketch3Def.EndEdit; // завершение редактирования эскиза
Эскизы и результаты вырезания выдавливанием представлены на рис. 7.6 и рис. 7.7 соответственно.
Рис. 7.6 Эскиз и результат операции
Рис. 7.7 Эскиз и результат операции
Следующая операция создания выреза отличается тем, что предварительно создается смещенная плоскость и уже в ней - эскиз. Программный код представлен ниже.
// интерфейс свойств смещенной плоскости
iOffsetPlaneDef := ksPlaneOffsetDefinition(iOffsetPlaneEntity.GetDefinition);
if iOffsetPlaneDef <> nil then
begin
iOffsetPlaneDef.direction:=false;
iOffsetPlaneDef.Offset := Mas[i,10]; // расстояние от базовой плоскости
iOffsetPlaneDef.SetPlane( iPlaneEntity ); // базовая плоскость
iOffsetPlaneEntity.Name := 'Смещенная плоскость 1'; // имя для смещенной плоскости
iOffsetPlaneEntity.Hidden := true;
iOffsetPlaneEntity.Create; // создать смещенную плоскость
iSketch4Entity := ksEntity( iPart.NewEntity( o3d_sketch ));
if iSketch4Entity <> nil then
begin
// интерфейс свойств эскиза
iSketch4Def := ksSketchDefinition(iSketch4Entity.GetDefinition);
if iSketch4Def <> nil then
begin
iSketch4Def.SetPlane( iOffsetPlaneEntity ); // установим плоскость XOY базовой для эскиза
iSketch4Entity.Create; // создадим эскиз
// интерфейс редактора эскиза
iSketch4Document2D := ksDocument2D(iSketch4Def.BeginEdit);
if iSketch4Document2D <> nil then
begin
// введем новый эскиз
iSketch4Document2D.ksLineSeg(-Mas[i,13], Mas[i,9]/2, -Mas[i,13], -Mas[i,9]/2, 1);
iSketch4Document2D.ksLineSeg(-Mas[i,13], -Mas[i,9]/2, 0, -Mas[i,9]/2, 1);
iSketch4Document2D.ksLineSeg(0, -Mas[i,9]/2, 0, Mas[i,9]/2, 1);
iSketch4Document2D.ksLineSeg(0, Mas[i,9]/2, -Mas[i,13], Mas[i,9]/2, 1);
iSketchDef.EndEdit; // завершение редактирования эскиза
Далее следует вышерассмотренная операция выдавливания. Эскиз операции и результат создания выреза представлены на рис. 7.8.
Рис. 7.8 Эскиз и результат операции
Следующие блоки исходного текста модуля отвечает за создание фасок. Они аналогичны приведенному в библиотеке построения гайки. Результаты представлены на рис. 7.9 – 7.12.
Рис. 7.9. Создание фаски Рис. 7.10. Создание фаски
Рис. 7.11. Создание фаски Рис. 7.12. Создание фаски
3.3 Компиляция разработанной библиотеки осуществляется выбором команды Run из меню Run или нажатием клавиши F9. Результат сохраняется автоматически в папке с исходными файлами проекта. Готовая библиотека имеет расширение rtw, имя - Prihvat_per.rtw.
Подключение библиотеки к системе компас-3D V7 также аналогично рассмотренному выше.
4. Отчет о работе должен содержать:
1. Цель работы.
2. Краткие теоретические сведения.
3. Подробное описание всех шагов лабораторной работы.
4. Выводы по лабораторной работе.