Читайте также: |
|
В данной лабораторной работе предлагается выполнить поршень, представленный на рисунке 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;
Существует три метода для того, чтобы ее построить.
lines2d.AddBy2Points (double x1, double y1, double x2, double y2)
Параметры:
· x1 и y1 – это координаты начала прямой;
· x2 и y2 – это координаты конца прямой.
lines2d.AddByPointAngleLength (double x, double y,
double Angle,
double Length)
Параметры:
· x и y – координата точки;
· Angle – определяет угол новой линии;
· Length – определяет длину линии.
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 | | | Выдавливание с удалением материала из модели |