- •Методические указания
- •230104 «Системы автоматизированного проектирования»
- •Часть 2
- •Лабораторная работа №4 Создание фасок и скруглений с помощью соответствующих операций средствами api Solid Edge на примере элементов пневматического цилиндра
- •1. Теоретическая часть
- •2. Практическая часть
- •2.1. Вопросы для самостоятельного контроля знаний
- •2.2. Задание на лабораторную работу
- •2.3. Содержание отчета по лабораторной работе
- •Лабораторная работа №5 Построение отверстий с помощью соответствующих операций средствами api Solid Edge на примере крышки пневматического цилиндра
- •1. Теоретическая часть
- •2. Практическая часть
- •2.1. Вопросы для самостоятельного контроля знаний
- •2.2. Задание на лабораторную работу
- •2.3. Содержание отчета по лабораторной работе
- •Лабораторная работа №6 Создание сборки конструкции с помощью соответствующих операций средствами api Solid Edge на примере элементов пневматического цилиндра
- •1. Теоретическая часть
- •2. Практическая часть
- •2.1. Вопросы для самоконтроля
- •2.2. Задания для выполнения лабораторной работы
- •2.3. Содержание отчета по лабораторной работе
- •230104 «Системы автоматизированного проектирования»
- •Часть 2
- •394026 Воронеж, Московский просп., 14
2. Практическая часть
2.1. Вопросы для самостоятельного контроля знаний
Что такое ребро, грань, поверхность?
В чем заключается особенность построения скруглений?
Какие способы задания фасок вы знаете?
2.2. Задание на лабораторную работу
Задание выдается преподавателем по вариантам.
2.3. Содержание отчета по лабораторной работе
Название и цель работы
Скриншоты с кратким описанием, соответствующие основным шагам выполненной работы
Скриншоты, демонстрирующие работоспосбоность созданной библиотеки
Листинг прграммы с комментариями на русском или английском языке
Скриншоты 3D модели, сформированной Вашей библиотекой
Выводы
Лабораторная работа №5 Построение отверстий с помощью соответствующих операций средствами api Solid Edge на примере крышки пневматического цилиндра
Цель работы: освоить методику построения отверстий с помощью соответствующих операций средствами API Solid Edge на примере крышки пневматического цилиндра
1. Теоретическая часть
Отверстия
Создание отверстия можно разделить на несколько этапов. Во-первых, определение плоскости профиля.
profileSets = part.ProfileSets;
profiles = profileSet.Profiles;
refplanes = part.RefPlanes;
HoleProf = profiles.Add();
После Add, как известно, указывается одна из базовых плоскостей или плоскость, совпадающая (параллельная) с одной из граней детали.
Во-вторых, размещение отверстия, то есть определение координаты его центра. Необходимо указать, что в созданном профиле будет использоваться геометрия, предназначенная для отверстия. Для этого в свойствах HoleProf устанавливаем значение Holes2d. Существует один метод для создания профиля отверстия: Add (double XCenter, double YCenter). В результате получаем следующую строку:
HoleProf.Holes2d.Add(X, Y);
В-третьих, объявление параметров отверстия. В связи с их большим количеством, можно создать следующие типы:
простое;
с резьбой;
коническое;
с цилиндрической зенковкой:
с конической зенковкой.
Коллекцию параметров отверстия можно представить следующим образом:
HoleData = part.HoleDataCollection.Add();
Для каждого типа отверстий существует свой набор аргументов, о которых будет рассказано позже.
И заключительным этапом является удаление материала. Для этого определим переменную отверстия Hole:
Hole = model.Holes.[];
Данная запись говорит о том, что в созданной модели создается отверстие. В квадратных скобках указывается метод, которым будет проделано отверстие. Рассмотрим их:
AddFinite – тип глубины отверстия: на ограниченное расстояние.
Holes.AddFinite (SolidEdgePart.Profile Profile,
SolidEdgePart.FeaturePropertyConstants ProfilePlanSide,
double FiniteDepth,
SolidEdgePart.HoleData Data).
Параметры:
FiniteDepth – определяет глубину;
Data – указывает на набор параметров отверстия.
AddThoughAll – создает отверстие насквозь. Для этого метода необходимо указать профиль Profile, на котором базируется отверстие; направление удаления материала ProfilePlanSide и указать на коллекцию параметров Data.
AddFromTo – от одной плоскости до другой.
Holes.AddFromTo (SolidEdgePart.Profile Profile,
object FromFaceOrRefPlane,
object ToFaceOrRefPlane,
SolidEdgePart.HoleData Data).
FromFaceOrRefPlane определяет грань или базовую плоскость, являющуюся начальной плоскостью (“От”). ToFaceOrRefPlane – конечную плоскость (“До”).
Коллекция параметров отверстия
Вернемся к объявлению коллекции: HoleData = part.HoleDataCollection.Add().
В методе Add для объекта HoleDataCollection присутствует 21 аргумент, причем обязательными при объявлении являются только два.
HoleType – член набора FeaturePropertyConstants (далее будет сокращаться, как FPC) определяет тип создаваемого отверстия. Варианты:
igRegularHole – простое,
igCounterboreHole – с цилиндрической зенковкой,
igCountersinkHole – с конической зенковкой,
igCounterdrillHole – с цилиндрической зенковкой и конусом.
HoleDiameter – диаметр отверстия.
Значение следующих параметров выбирают в зависимости от типа.
CounterboreDiameter – диаметр цилиндрической зенковки;
CounterboreDepth – глубина цилиндрической зенковки;
CountersinkDiameter – диаметр конической зенковки;
CountersinkAngle – угол конической зенковки;
BottomAngle – определяет создание конического дна. При создании отверстий ограниченной глубины доступен режим построения отверстия с коническим V-образным дном. Можно задать угол (в градусах) в вершине конуса. Дно отверстия плоское по умолчанию;
TreatmentType – член постоянного набора FPC определяющий тип обработки отверстия:
igTappedHole – с цилиндрической трубной резьбой,
igTaperedHole – коническое отверстие,
igNone – никакой;
TaperMethod – член набора FPC определяет метод, использующийся при вычислении конического отверстия:
igTaperByAngle – через угол;
igTaperByRatio – по коэффициенту R/L (радиус/длину),
igTaperByRLRatio – по отношению R:L.
Значение первых двух вариантов необходимо определить в аргументе Taper, а последнего – в TaperLValue и TaperRValue.
Taper – определяет конус для отверстия. Если в TaperMethod был выбран параметр igTaperByAngle, то Taper определяется через угол в градусах. Если выбран метод igTaperByRatio, то Taper – это отношение значений;
ThreadMinorDiameter – определяет внутренний диаметр резьбы;
ThreadDepthMethod – член набора FPC определяет глубину резьбы:
igFinite – на определенное расстояние,
igThroughAll – на всю глубину.
ThreadDepth – определяет глубину резьбы. Если выбран метод igFinite, указывается глубина. При igThroughAll можно установить значение Missing.Value;
VBottomDimType – член набора FPC указывает, должна ли глубина отверстия при коническом дне измеряться до основания или вершины конуса:
igVBottomDimToFlat – до основания,
igVBottomDimToV – до вершины конуса.
По умолчанию стоит igVBottomDimToFlat.
TaperDimType – член набора FPC устанавливает начало уклона. Варианты:
igTaperDimAtBottom – от верха отверстия,
igTaperDimAtTop – от низа отверстия.
При выборе последнего параметра значение коэффициент (R/L), отношение (R:L) или угол должно иметь отрицательное значение. По умолчанию стоит igTaperDimAtBottom.
CounterboreProfileLocationType – член набора FPC задает начало цилиндрической зенковки:
igCounterboreProfileIsAtTop – от верха отверстия,
igCounterboreProlileIsAtBottom – от низа отверстия.
По умолчанию стоит igCounterboreProlileIsAtTop.
TaperLValue – определяет глубину конического отверстия. Необходимо для задания соотношения между длиной (глубиной) и радиусом;
TaperRValue – определяет радиус конического отверстия. Необходимо для задания соотношения между длиной (глубиной) и радиусом;
ThreadExternalDiameter – наружный диаметр для резьбы;
ThreadDescription – описание резьбы. Данный аргумент является строковой переменной;
IgnoreSavedDefaultValues – игнорирование сохранения значений по умолчанию.
Приведем несколько примеров с использованием команды “Отверстие”. За основу взят параллелепипед, построенный с плоскости XZ и выдавленный на глубину 5 мм.
Пример 1. Начнем с простого отверстия без резьбы. Для этого необходимо задать тип отверстия igRegularHole и указать диаметр (в нашем случае 13 мм). Профиль созданного отверстия будет так же расположен в плоскости XZ и имеет координату (0.03, 0.025). При создании самого отверстия используется метод AddFinite, то есть выдавливание на определенное расстояние (3 мм).
// объявление переменных
SolidEdgePart.HoleData HoleData = null;
SolidEdgePart.Hole Hole= null;
SolidEdgePart.Profile HoleProf = null;
// . . .
// построение параллелепипеда
// . . .
// профиль, в котором рисуем отверстия
profileSets = part.ProfileSets;
profiles = profileSet.Profiles;
refplanes = part.RefPlanes;
HoleProf = profiles.Add(refplanes.Item(3));
HoleProf.Holes2d.Add(0.03, 0.025);
HoleProf.Visible = false;
//объявление параметров
HoleData = part.HoleDataCollection.Add(
HoleType: SolidEdgePart.FeaturePropertyConstants.igRegularHole,
HoleDiameter: 0.013);
// сам вырез отверстия
Hole = model.Holes.AddFinite(
HoleProf,
SolidEdgePart.FeaturePropertyConstants.igLeft,
0.03,
HoleData).
Рисунок 4 – Простое отверстие
Пример 2. Возьмем отверстие с конической зенковкой. Построим его так же без резьбы, но воспользуемся параметром BottomAngle, то есть отверстие имеет коническое дно.
HoleData = part.HoleDataCollection.Add(
HoleType: SolidEdgePart.FeaturePropertyConstants.igCountersinkHole,
HoleDiameter: 0.009,
CountersinkDiameter: 0.015,
CountersinkAngle: 60,
BottomAngle: 70,
TreatmentType: FeaturePropertyConstants.igNone,
VBottomDimType: FeaturePropertyConstants.igVBottomDimToV);
Рассмотрим данное описание отверстия. igCountersinkHole показывает, что взято отверстие с конической зенковкой и диаметром 9 мм. 15 мм – диаметр, а 60 – угол конической зенковки. 70 показывает угол разворота конуса для дна отверстия. igNone указывает, что нет никакой обработки. И igVBottomDimToV определяет, что в длину отверстия входит коническое дно.
Рисунок 5 – Отверстие с конической зенковкой и коническим дном
Пример 3. Теперь построим само коническое отверстие, но удалять материал уже будем насквозь.
HoleData = part.HoleDataCollection.Add(
HoleType: SolidEdgePart.FeaturePropertyConstants.igRegularHole,
HoleDiameter: 0.01,
TreatmentType: FeaturePropertyConstants.igTaperedHole,
TaperMethod: FeaturePropertyConstants.igTaperByRLRatio,
TaperDimType: FeaturePropertyConstants.igTaperDimAtBottom,
TaperLValue: 0.04,
TaperRValue: 0.01)
Hole = model.Holes.AddThroughAll(HoleProf,
SolidEdgePart.FeaturePropertyConstants.igLeft,
HoleData);
Итак, мы выбрали простое отверстие igRegularHole с диаметром 10 мм и указали тип обработки – коническое отверстие. Конус будем строить с помощью задания отношения R:L. Показываем начало уклона: igTaperDimAtBottom. И завершающим этапом является определение радиуса (0.01) и глубины (0.04) отверстия.
Рисунок 6 – Коническое отверстие насквозь
Пример 4. Построим отверстие типа igCounterdrillHole, то есть с цилиндрической зенковкой и конусом. Для его задания необходимы такие значения как: диаметр (20 мм) и глубина (15 мм) цилиндрической зенковки и угол конуса (80°). Удаление насквозь.
HoleData = part.HoleDataCollection.Add(
HoleType: SolidEdgePart.FeaturePropertyConstants.igCounterdrillHole,
HoleDiameter: 0.009,
CounterboreDiameter: 0.02,
CounterboreDepth: 0.015,
CountersinkAngle: 80);
Рисунок 7 – Отверстие с цилиндрической зенковкой и конусом
Пример 5. Построим отверстие типа igCounterboreHole, то есть с цилиндрической зенковкой, диаметром 10 мм и нанесем резьбу M10 на глубину 30 мм. Диаметр зенковки равен 20 мм, а глубина 10 мм. Материал удалим насквозь. Значение внутреннего и внешнего диаметров берется из файла Holes.txt, который можно найти: C:\Program Files\Solid\Edge\Program\Holes.txt.
HoleData = part.HoleDataCollection.Add(
HoleType: SolidEdgePart.FeaturePropertyConstants.igCounterboreHole,
HoleDiameter: 0.01,
CounterboreDiameter: 0.02,
CounterboreDepth: 0.01,
TreatmentType: SolidEdgePart.FeaturePropertyConstants.igTappedHole,
ThreadMinorDiameter: 8.376/1000.0,
ThreadDepthMethod: SolidEdgePart.FeaturePropertyConstants.igFinite,
ThreadDepth: 0.03,
ThreadExternalDiameter: 8.16/1000.0,
ThreadDescription: "M10");
Рисунок 8 – Отверстие с конической зенковкой и резьбой М10
Рассмотрим практическое построение отверстий на примере крышки пневматического цилиндра
/*Отверстия*/
HoleData = part.HoleDataCollection.Add(SolidEdgePart.FeaturePropertyConstants.igRegularHole, d3);
profileSets = part.ProfileSets;
profileSet = profileSets.Add();
profiles = profileSet.Profiles;
refplanes = part.RefPlanes;
HoleProf = profiles.Add(refplanes.Item(3));
HoleProf.Holes2d.Add((B - A) / 2, (B - A) / 2);
HoleProf.End(SolidEdgePart.ProfileValidationType.igProfileClosed);
HoleProf.Visible = false;
Hol = model.Holes.AddThroughAll(/*профиль*/HoleProf,
/*направление выреза*/ SolidEdgePart.FeaturePropertyConstants.igLeft,
/*параметры*/ HoleData);
HoleData = part.HoleDataCollection.Add(SolidEdgePart.FeaturePropertyConstants.igRegularHole, d3);
profileSets = part.ProfileSets;
profileSet = profileSets.Add();
profiles = profileSet.Profiles;
refplanes = part.RefPlanes;
HoleProf = profiles.Add(refplanes.Item(3));
HoleProf.Holes2d.Add((B - A) / 2, B - (B - A) / 2);
HoleProf.End(SolidEdgePart.ProfileValidationType.igProfileClosed);
HoleProf.Visible = false;
Hol = model.Holes.AddThroughAll(/*профиль*/HoleProf,
/*направление выреза*/ SolidEdgePart.FeaturePropertyConstants.igLeft,
/*параметры*/ HoleData);
HoleData = part.HoleDataCollection.Add(SolidEdgePart.FeaturePropertyConstants.igRegularHole, d3);
profileSets = part.ProfileSets;
profileSet = profileSets.Add();
profiles = profileSet.Profiles;
refplanes = part.RefPlanes;
HoleProf = profiles.Add(refplanes.Item(3));
HoleProf.Holes2d.Add(B - (B - A) / 2, B - (B - A) / 2);
HoleProf.End(SolidEdgePart.ProfileValidationType.igProfileClosed);
HoleProf.Visible = false;
Hol = model.Holes.AddThroughAll(/*профиль*/HoleProf,
/*направление выреза*/ SolidEdgePart.FeaturePropertyConstants.igLeft,
/*параметры*/ HoleData);
HoleData = part.HoleDataCollection.Add(SolidEdgePart.FeaturePropertyConstants.igRegularHole, d3);
profileSets = part.ProfileSets;
profileSet = profileSets.Add();
profiles = profileSet.Profiles;
refplanes = part.RefPlanes;
HoleProf = profiles.Add(refplanes.Item(3));
HoleProf.Holes2d.Add(B - (B - A) / 2, (B - A) / 2);
HoleProf.End(SolidEdgePart.ProfileValidationType.igProfileClosed);
HoleProf.Visible = false;
Hol = model.Holes.AddThroughAll(/*профиль*/HoleProf,
/*направление выреза*/ SolidEdgePart.FeaturePropertyConstants.igLeft,
/*параметры*/ HoleData);
Рисунок 9 – Результат построени 4 простых отверстий
Построение конического отверстия
profileSet = part.ProfileSets.Add();
profiles = profileSet.Profiles;
refplanes = part.RefPlanes;
HoleData = part.HoleDataCollection.Add(
HoleType: SolidEdgePart.FeaturePropertyConstants.igRegularHole,
HoleDiameter: 2 * d3,
TreatmentType: FeaturePropertyConstants.igTaperedHole,
TaperMethod: FeaturePropertyConstants.igTaperByAngle,
TaperDimType: FeaturePropertyConstants.igTaperDimAtBottom,
Taper: 30);
HoleProf = profiles.Add(refplanes.Item(3));
HoleProf.Holes2d.Add(B / 2, B / 2);
HoleProf.Visible = false;
Hol = model.Holes.AddFinite(HoleProf, SolidEdgePart.FeaturePropertyConstants.igLeft, h / 2, HoleData);
Рисунок 10 – Результат построения конического отверстия
Следующим шагом рассмотрим построение отверстия с резьбой
HoleData = part.HoleDataCollection.Add(
SolidEdgePart.FeaturePropertyConstants.igRegularHole, ds1, BottomAngle: 120, TreatmentType: FeaturePropertyConstants.igTappedHole,
ThreadMinorDiameter: 6.647 / 1000.0,
ThreadDepthMethod: FeaturePropertyConstants.igFinite,
ThreadDepth: k, VBottomDimType: FeaturePropertyConstants.igVBottomDimToFlat,
ThreadExternalDiameter: 6.466 / 1000.0,
ThreadDescription: "M8");
profileSets = part.ProfileSets;
profileSet = profileSets.Add();
profiles = profileSet.Profiles;
refplanes = part.RefPlanes;
HoleProf = profiles.Add(refplanes.Item(1));
HoleProf.Holes2d.Add(B / 2, h1 - m);
HoleProf.End(SolidEdgePart.ProfileValidationType.igProfileClosed);
HoleProf.Visible = false;
Hol = model.Holes.AddFinite(HoleProf, SolidEdgePart.FeaturePropertyConstants.igRight, k, HoleData);
Рисунок 11 – Построение резьбового отверстия