Автор работы: Пользователь скрыл имя, 29 Мая 2012 в 15:00, дипломная работа
Одной из ведущих отраслей современной техники является машиностроение. По уровню развития машиностроения судят о развитии производительных сил в целом.
Прогресс машиностроения в свою очередь определяется созданием новых
высокопроизводительных и надёжных машин. Решение этой важнейшей проблемы основывается на комплексном использовании результатов многих дисциплин и, в первую очередь, теории механизмов и машин.
Введение 4
1. Описание предметной области: теория механизмов и машин 5
1.1 Структура строения механизма 5
1.1.1 Общее понятие механизма 5
1.1.2 Звенья механизмов 5
1.1.3 Кинематические пары 7
1.1.4 Кинематические цепи 10
1.1.5 Виды механизмов и их структурные схемы 11
1.2Механизм и его подвижность 13
1.2.1 Структурная формула 13
1.2.2 Пассивные связи и лишние степени свободы 15
1.3 Закон образования механизмов по Ассуру 16
1.3.1.Сущность закона Ассура 16
1.3.2 Двухзвенные механизмы 17
1.3.3 Группы нулевой подвижности 17
2 Задачи кинематики механизмов и их решение 20
2.1 Теоретические основы и определения 20
2.1.1 Геометрическая модель звеньев и пар пространственного рычажного механизма 20
2.1.2 Геометрическая модель группы 22
2.1.3 Формула Чейза определения направления оси по 2-м углам 23
2.2 Решение прямой задачи о положениях механизма 24
2.2.1 Механизм как набор первичных механизмов и наслоение структурных групп 24
2.2.2 Определения величин, используемых при расчете положения группы 26
2.3 Аналитический подход к расчету положения структурной группы 28
2.3.1 Двухзвенная пространственная группа В-Сп-С 28
2.3.2 Двухзвенная плоская группа В-В-В 29
2.4 Алгоритм построения последовательности расчета положений структурных групп, составляющих механизм 30
3. Конструирование системы моделирования механизмов 31
3.1 Предварительные условия 31
3.1.1 Определение проблемы 31
3.1.2 Выработка требований к будущей программной системе 31
3.2 Проектирование архитектуры 32
3.3 Пользовательский интерфейс программы 34
3.3.1 Окно программы 34
3.3.2 Условные обозначения программы 34
Заключение 35
Литература 36
Приложение 1 37
GeomObject.cs 37
Holder.cs 37
Link.cs 38
Pair.cs 39
MechManager.cs 40
RRRGroup.cs 44
TestMech.cs 45
//Pairs w/o holders
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
addEmptyPair(Pair.TYPE_ROTATE, false);
//Add hodlers
addHolder(1);
addHolder(2);
//Add links
//Add links for main mech
addLink(1,3,linkLengths.
addLink(1,6, linkLengths.ElementAt(1), angle2+fi);
//Add others links
addEmptyLink(2, 4, linkLengths.ElementAt(2));
addEmptyLink(2, 5, linkLengths.ElementAt(3));
addEmptyLink(3, 4, linkLengths.ElementAt(4));
addEmptyLink(3, 7, linkLengths.ElementAt(5));
addEmptyLink(4, 5, linkLengths.ElementAt(6));
addEmptyLink(5, 8, linkLengths.ElementAt(7));
addEmptyLink(6, 7, linkLengths.ElementAt(8));
addEmptyLink(6, 8, linkLengths.ElementAt(9));
addEmptyLink(6, 9, linkLengths.ElementAt(10));
addEmptyLink(6, 10, linkLengths.ElementAt(11));
addEmptyLink(7, 11, linkLengths.ElementAt(12));
addEmptyLink(8, 10, linkLengths.ElementAt(13));
addEmptyLink(9, 13, linkLengths.ElementAt(14));
addEmptyLink(9, 10, linkLengths.ElementAt(15));
addEmptyLink(10, 11, linkLengths.ElementAt(16));
addEmptyLink(10, 12, linkLengths.ElementAt(17));
addEmptyLink(11, 12, linkLengths.ElementAt(18));
addEmptyLink(12, 13, linkLengths.ElementAt(19));
}
}
class RRRGroup
{
public static Vector3D bad = Pair.bad;
public Dictionary<Int32, Pair> mPairs;
public KeyValuePair<Int32, Pair> mPair1;
public KeyValuePair<Int32, Pair> mPairMid;
public KeyValuePair<Int32, Pair> mPair2;
public Link mLink_1_Mid=null;
public Link mLink_Mid_2=null;
public
RRRGroup(Dictionary<Int32,Pair
{
mPairs = new Dictionary<int, Pair>(pairs);
mPair1 = getPair1();
mPair2 = getPair2();
mPairMid = getMidPair();
List<Link>
links = new List<Link>(MechManager.
for (int i = 0; i < links.Count; i++)
{
if((mLink_1_Mid
== null)&&(links.ElementAt(i).
{
mLink_1_Mid = links.ElementAt(i);
}
if
((mLink_Mid_2 == null) && (links.ElementAt(i).
{
mLink_Mid_2 = links.ElementAt(i);
}
}
}
public KeyValuePair<Int32,Pair> getMidPair()
{
for (int i = 0; i < mPairs.Count; i++)
{
if
(mPairs.ElementAt(i).Value.
return mPairs.ElementAt(i);
}
return new KeyValuePair<Int32, Pair>(0,null);
}
public KeyValuePair<Int32, Pair> getPair1()
{
for (int i = 0; i < mPairs.Count; i++)
{
if
(!mPairs.ElementAt(i).Value.
return mPairs.ElementAt(i);
}
return new KeyValuePair<Int32, Pair>(0, null);
}
public KeyValuePair<Int32, Pair> getPair2()
{
for (int i = 0; i < mPairs.Count; i++)
{
if (mPairs.ElementAt(i).Key != mPair1.Key)
if
(!mPairs.ElementAt(i).Value.
return mPairs.ElementAt(i);
}
return new KeyValuePair<Int32, Pair>(0, null);
}
}
class TestMech:GeomObject
{
Dictionary<Int32, Pair> mMechPairs;
List<Link> mMechLinks;
RRRGroup mTriple;
List<Int32> mCalcPairs;
public MechManager Manager;
private bool calculated;
public TestMech()
{
Manager = MechManager.getInstance();
mMechPairs = Manager.mPairs;
mMechLinks = new List<Link>(MechManager.