Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000124.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
455.17 Кб
Скачать

Лабораторная работа №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. Выводы по лабораторной работе.