Пространственные механизмы

Автор работы: Пользователь скрыл имя, 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

Вложенные файлы: 1 файл

диплом.doc

— 1.73 Мб (Скачать файл)

 Источники информации в Интернете:

  1. http://tmm.spbstu.ru/index.html - “Теория механизмов и машин” портал для профессионалов и студентов и статьи из одноимённого журнала;
  2. http://wwwcdl.bmstu.ru/rk2/index_2.htm - Электронные лекции по теории механизмов и машин московского технического университета им. Баумана;
  3. http://www.mechstd.narod.ru – Сайт проекта "Mechanics Studio .NET".

 

Приложение 1

GeomObject.cs

 

    abstract class GeomObject

    {

        public GeomObject() { }

 

        abstract public void draw();

    }

Holder.cs

 

    class Holder:GeomObject

    {

        public Vector3D mPos;

        public int mHoldedPairId;

 

        public Holder(int id)

        {

            mHoldedPairId = id;

            Pair pair = MechManager.getInstance().findPairById(id);

            if (pair != null)

            {

                mPos = new Vector3D(pair.mPos);

            }

        }

 

        override public void draw()

        {

            Gl.glPushMatrix();

            {

                Gl.glTranslated(mPos.X, mPos.Y, mPos.Z - 2);

                Gl.glRotated(45, 0, 0, 1);

                if (mHoldedPairId == 1)

                {

                    Gl.glColor3d(0, 1, 1);

                }

                else

                {

                    Gl.glColor3d(0, 1, 0);

                }

                Glut.glutSolidCylinder(2, 0.2, 4, 4);

            }

            Gl.glPopMatrix();

 

            Gl.glPushMatrix();

            {

                Gl.glTranslated(mPos.X, mPos.Y + 1, mPos.Z - 2);

                Glut.glutSolidCylinder(0.1, 2.1, 20, 20);

            }

            Gl.glPopMatrix();

 

            Gl.glPushMatrix();

            {

                Gl.glTranslated(mPos.X, mPos.Y - 1, mPos.Z - 2);

                Glut.glutSolidCylinder(0.1, 2.1, 20, 20);

            }

            Gl.glPopMatrix();

        }

    }

Link.cs

 

class Link:GeomObject

    {

        public const float mAngleBeta = 90;

 

        public int mId;

        public HashSet<Int32> LinkedPairIds;

        public Vector3D mStart;

        public Vector3D mEnd;

        public float mLength;

        public float mNormalAngle;

 

        public Vector3D bad = new Vector3D(1000000f, 1000000f, 1000000f);

 

        public Link(int id,int pairId1,int pairId2,Vector3D pos, float length, float angle)

        {

            mId = id;

            LinkedPairIds = new HashSet<int>();

            LinkedPairIds.Add(pairId1);

            LinkedPairIds.Add(pairId2);

            mLength = length;

            mNormalAngle = angle;

            mStart = new Vector3D(pos);

            mEnd = new Vector3D(mStart.X + (float)Math.Cos(mNormalAngle * Math.PI / 180) * (float)Math.Sin(mAngleBeta * Math.PI / 180) * mLength, mStart.Y + (float)Math.Cos(mNormalAngle * Math.PI / 180) * (float)Math.Cos(mAngleBeta * Math.PI / 180) * mLength, mStart.Z - (float)Math.Sin(mNormalAngle * Math.PI / 180) * mLength);     

        }

 

        public Link(int id, int pairId1, int pairId2, float length)

        {

            mId = id;

            LinkedPairIds = new HashSet<int>();

            LinkedPairIds.Add(pairId1);

            LinkedPairIds.Add(pairId2);

            mLength = length;

            mStart = bad;

            mEnd = bad;

        }

 

        public bool isLinkedWith(List<int> list)

        {

            for (int i = 0; i < list.Count; i++)

            {

                if (LinkedPairIds.Contains(list.ElementAt(i)))

                {

                    return true;

                }

            }

            return false;

        }

 

        public int getSecondPairId(int id)

        {

            if (LinkedPairIds.First() == id)

                return LinkedPairIds.Last();

            else

                return LinkedPairIds.First();

        }

 

        override public void draw()

        {

            Vector3D A = new Vector3D(MechManager.getInstance().findPairById(LinkedPairIds.First()).mPos);

            Vector3D B = new Vector3D(MechManager.getInstance().findPairById(LinkedPairIds.Last()).mPos);

            Gl.glLineWidth(3.0f);

            Gl.glBegin(Gl.GL_LINES);

            {

                Gl.glColor3d(0, 0, 1);

                Gl.glVertex3f(A.X, A.Y, A.Z);

                Gl.glVertex3f(B.X, B.Y, B.Z);

Информация о работе Пространственные механизмы