Автор работы: Пользователь скрыл имя, 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
{
if (findPairById(pairId1) != null)
{
Link
link = new Link(sLinkId, pairId1,pairId2, findPairById(pairId1).mPos,
mLinkList.Add(link);
sLinkId++;
return true;
}
return false;
}
public bool addEmptyLink(int pairId1, int pairId2, float length)
{
if (findPairById(pairId1) != null)
{
Link link = new Link(sLinkId, pairId1, pairId2, length);
mLinkList.Add(link);
sLinkId++;
return true;
}
return false;
}
public List<Link> getLinksForPair(int pairId)
{
if (findPairById(pairId) != null)
{
List<Link> links = new List<Link>();
for (int i = 0; i < mLinkList.Count; i++)
{
if
(mLinkList.ElementAt(i).
{
links.Add(mLinkList.ElementAt(
}
}
return links;
}
return null;
}
public List<Link> getLinksForPairFromList(int pairId,List<Link> linkList)
{
if (findPairById(pairId) != null)
{
List<Link> links = new List<Link>();
for (int i = 0; i < linkList.Count; i++)
{
if
(linkList.ElementAt(i).
{
links.Add(linkList.ElementAt(
}
}
return links;
}
return null;
}
public void removePair(int pairId)
{
mPairs.Remove(pairId);
}
public void removeLink(int linkId)
{
for (int i = 0; i < mLinkList.Count; i++)
{
if (mLinkList.ElementAt(i).mId == linkId)
{
mLinkList.RemoveAt(i);
break;
}
}
}
public void removeHolderForPair(int pairId)
{
for (int i = 0; i < mHolderList.Count; i++)
{
if
(mHolderList.ElementAt(i).
{
mHolderList.RemoveAt(i);
break;
}
}
}
public void removeAllPairs()
{
mPairs.Clear();
}
public void removeAllLinks()
{
mLinkList.Clear();
}
public void removeAllHolders()
{
for (int i = 0; i < mHolderList.Count; i++)
{
if
(findPairById(mHolderList.
{
findPairById(mHolderList.
}
}
mHolderList.Clear();
}
public Vector3D getMiddlePoint(RRRGroup group)
{
Vector3D A = group.getPair1().Value.mPos;
Vector3D B = group.getPair2().Value.mPos;
Vector3D p = B-A;
Vector3D u1 = Vector3D.J;
Vector3D ep = Vector3D.Normalize(p);
float L1=group.mLink_1_Mid.mLength;
float L2 = group.mLink_Mid_2.mLength;
double angleBeta = Link.mAngleBeta;
double angleAlpha = (L1 * L1 - L2 * L2 + Vector3D.Length(p) * Vector3D.Length(p)) / (2 * L1 * Vector3D.Length(p));
float c1 = (float)Math.Cos(angleBeta);
float c2 = (float)Math.Cos(angleAlpha);
int id = group.getMidPair().Value.mId;
Vector3D e1 = CheisFormula.CheisFunc(u1, ep, c1, c2, 1);
Vector3D middlePoint = A + e1 * L1;
return middlePoint;
}
public void createTestMech(Vector3D pos1, Vector3D pos2, List<float> linkLengths,float angle1, float angle2, float fi)
{
removeAllPairs();
removeAllLinks();
removeAllHolders();
sPairId = 1;
sLinkId = 1;
//Add pairs
//Pairs with holders
addPair(pos1, Pair.TYPE_MAIN, true);
addPair(pos2, Pair.TYPE_ROTATE, true);