Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Теоретическая часть. В данной лабораторной работе предлагается выполнить поршень

Читайте также:
  1. Best Windows Apps 2013. Часть 1. Или приводим чистую операционную систему в рабочее состояние.
  2. I. Общая часть (титульный лист)
  3. I. Общая часть.
  4. II. Практическая часть.
  5. II.Основная часть
  6. PAZ Position - дисплей стереофонического позиционирования (нижняя часть плагина PAZ Analyzer)
  7. Активная часть

 

В данной лабораторной работе предлагается выполнить поршень, представленный на рисунке 5 с некоторыми упрощениями: на текущем этапе из детали исключаются фаски и отверстия. Таким образом, деталь приобретает вид, показанный на рисунке 12

 

Рисунок 12 - Упрощенная модель поршня

 

Для создания рассматриваемой модели необходимо выполнить операцию «Вращение» для эскиза, представленного на рисунке 13 относительно оси Z.

 

Рисунок 13 - Эскиз для операции «Вращение»

 

Начало работы по созданию данной библиотеки аналогично лабораторной работе №1. Программный код приведен в полном объеме с подробными комментариями. Последовательность описания кода соответствует действительности. При корректном копировании программного кода из текущего описания в создаваемую билиотеку, будет получена работающая пользовательская подпрограмма.

При параметрическом 3D моделировании одним из первых шагов является создание двумерного профиля (эскиза).

Переменные необходимые для создания профиля:

 

SolidEdgePart.ProfileSets profileSets = null;

SolidEdgePart.ProfileSet profileSet = null;

SolidEdgePart.Profiles profiles = null;

SolidEdgePart.Profile profile = null;

 

Далее приведен пример создания профиля:

// создаем ссылку на коллекцию наборов профилей

profileSets = part.ProfileSets;

// создаем один набор профилей

profileSet = profileSets.Add();

// в наборе профилей создаем коллекцию профилей

profiles = profileSet.Profiles;

// создаем плоскость в документе Part (деталь)

refplanes = part.RefPlanes;

// создаем один профиль в плоскости

profile = profiles.Add(...);

 

С помощью метода Add можно создать профиль в конкретной плоскости. Например:

// создаем один профиль в плоскости XZ

profile = profiles.Add(refplanes.Item(3));

// создаем один профиль в плоскости параллельной плоскости XY

profile = profiles.Add(refplanes.AddParallelByDistance(

refplanes.Item(1), 0.025, SolidEdgePart. ReferenceElementConstants.igReverseNormalSide));

 

Solid Edge позволяет использовать различные двухмерные геометрические объекты. К таким объектам относят: дуга, b-сплайновая кривая, окружность, эллипс, эллиптическая дуга, линия.

После создания профиля необходимо объявить, что в нем будут использоваться какие-либо объекты 2D геометрии. Например:

 

// добавляем коллекцию линий в профиль

lines2d = profile.Lines2d;

// добавляем коллекцию дуг в профиль

arcs2d = profile.Arcs2d;

// добавляем коллекцию b-сплайновых кривых в профиль

BSplines2d = profile.BSplineCurves2d;

 

Объявление переменной для построения отрезка:

SolidEdgeFrameworkSupport.Lines2d lines2d = null;

Существует три метода для того, чтобы ее построить.

  1. AddBy2Points –задание двух точек.

 

lines2d.AddBy2Points (double x1, double y1, double x2, double y2)

Параметры:

· x1 и y1 – это координаты начала прямой;

· x2 и y2 – это координаты конца прямой.

  1. AddByPointAngleLength – создание линии, определяемой начальной точкой, углом и длинной.

 

lines2d.AddByPointAngleLength (double x, double y,

double Angle,

double Length)

Параметры:

· x и y – координата точки;

· Angle – определяет угол новой линии;

· Length – определяет длину линии.

  1. AddAsChamfer – создается линия, которая соединяет два пересекающихся объекта.

 

lines2d.AddAsChamfer (object Obj1, object Obj2,

double xDirection, double yDirection,

double SetBackA, double SetBackB)

Параметры:

- Obj1 и Obj2 – графические объекты для создания фаски;

- xDirection и yDirection – определяет X и Y координату соответственно, через которую пройдет линия фаски;

- SetBackA – определяет смещение от конца первого объекта;

- SetBackB – определяет смещение от конца первого объекта.

Приведем пример использования этих методов.

 

profileSets = part.ProfileSets;

profileSet = profileSets.Add();

profiles = profileSet.Profiles;

refplanes = part.RefPlanes;

profile = profiles.Add(refplanes.Item(3));

lines2d = profile.Lines2d;

 

lines2d.AddBy2Points(0, 0, D2 / 2,0);

lines2d.AddBy2Points(D2 / 2, 0, D2 / 2,h);

lines2d.AddBy2Points(D2 / 2, h, D3 / 2,h);

lines2d.AddBy2Points(D3 / 2, h, D3 / 2,0);

lines2d.AddBy2Points(D3 / 2, 0, D5 / 2,0);

lines2d.AddBy2Points(D5 / 2, 0, D5 / 2,L - h3 - b);

lines2d.AddBy2Points(D5 / 2, L - h3 - b, D1 / 2,L-h3-b);

lines2d.AddBy2Points(D1 / 2, L - h3 - b, D1 / 2,L - h3);

lines2d.AddBy2Points(D1 / 2, L - h3, D / 2, L - h3);

lines2d.AddBy2Points(D / 2, L - h3, D / 2, h3);

lines2d.AddBy2Points(D / 2, h3, D1 / 2, h3);

lines2d.AddBy2Points(D1 / 2, h3, D1 / 2, h3 + b);

lines2d.AddBy2Points(D1 / 2, h3 + b, D5 / 2, h3 + b);

lines2d.AddBy2Points(D5 / 2, h3 + b, D5 / 2, L);

lines2d.AddBy2Points(D5 / 2, L, D3 / 2, L);

lines2d.AddBy2Points(D3 / 2, L, D3 / 2, L - h);

lines2d.AddBy2Points(D3 / 2, L - h, D2 / 2, L - h);

lines2d.AddBy2Points(D2 / 2, L - h, D2 / 2, L);

lines2d.AddBy2Points(D2 / 2, L, 0, L);

lines2d.AddBy2Points(0, L, 0, 0);

Тип переменных – массив вещественных чисел. Заполнение массивов осуществляется парами чисел, являющимися координатами точек в 2D пространстве; координаты указываются в порядке X, Y.

В последующем фрагменте программного кода задаются начальные и конечные точки отрезков.

 

relations2d = (SolidEdgeFrameworkSupport.Relations2d)

profile.Relations2d;

relation2d = relations2d.AddKeypoint(lines2d.Item(1),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(2),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(2),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(3),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(3),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(4), (int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(4),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(5),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(5),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(6),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(6),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(7),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(7),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(8),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(8),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(9),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(9),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(10),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(10),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(11),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(11),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(12),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(12),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(13),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(13),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(14),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(14),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(15),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(15),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(16),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(16),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(17),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(17),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(18),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(18),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(19),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(19),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(20),

(int)KeypointIndexConstants.igLineStart, true);

relation2d = relations2d.AddKeypoint(lines2d.Item(20),

(int)KeypointIndexConstants.igLineEnd, lines2d.Item(1),

(int)KeypointIndexConstants.igLineStart, true);

 

profile.End(

SolidEdgePart.ProfileValidationType.igProfileClosed);

profile.Visible = false;

 

Выходная информация, представляющая тэг каждого отрезка, записывается поэлементно в массив Item().

Перейдем непосредственно к вращению.

Команда операции вращения имеет вид:

 

model = models.AddFiniteRevolvedProtrusion (int NumberOfProfiles, ref Array ProfileArray, SolidEdgePart.RefAxis RefAxis,

SolidEdgePart.FeaturePropertyConstants ProfilePlanSide, double AngleofRevolution, [object KeyPointOrTangentFace = Type.Missing], [object KeyPointFlags = Type.Missing])

 

Параметры:

- RefAxis – определяет ось вращения;

- NumberOfProfiles – номер профиля, используемого для вращения

- AngleofRevolution – определяет угол вращения эскиза

- SolidEdgePart.FeaturePropertyConstants – определяет напрвление вращения

- AngleofRevolution – угол вращения в радианах.

Для выполнения данной команды необходимо объявить переменную для оси вращения:

 

SolidEdgePart.RefAxis RefAxis = null;

 

Рассмотрим на примере вращения описанного выше эскиза.

 

aProfiles = Array.CreateInstance(typeof(SolidEdgePart.Profile), 1);

aProfiles.SetValue(profile, 0);

models = part.Models;

model = models.AddFiniteRevolvedProtrusion(1,

ref aProfiles,

RefAxis,

SolidEdgePart.FeaturePropertyConstants.igLeft,

Math.PI * 2);

 

Строка

part.SaveAs(s);

сохраняет деталь.

 


Дата добавления: 2015-10-29; просмотров: 155 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Создание проекта для Solid Edge| Выдавливание с удалением материала из модели

mybiblioteka.su - 2015-2024 год. (0.018 сек.)