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

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

        {

            if (findPairById(pairId1) != null)

            {

                Link link = new Link(sLinkId, pairId1,pairId2, findPairById(pairId1).mPos,length, angle);

                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).LinkedPairIds.Contains(pairId))

                    {

                        links.Add(mLinkList.ElementAt(i));

                    }

                }

                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).LinkedPairIds.Contains(pairId))

                    {

                        links.Add(linkList.ElementAt(i));

                    }

                }

                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).mHoldedPairId == pairId)

                {

                    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.ElementAt(i).mHoldedPairId) != null)

                {

                    findPairById(mHolderList.ElementAt(i).mHoldedPairId).isHolded = false;

                }

            }

            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);

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