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

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

            //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.ElementAt(0),angle1+fi);

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

        }

    }

RRRGroup.cs

 

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

        {

            mPairs = new Dictionary<int, Pair>(pairs);

            mPair1 = getPair1();

            mPair2 = getPair2();

            mPairMid = getMidPair();

            List<Link> links = new List<Link>(MechManager.getInstance().getLinksForPair(mPairMid.Key));

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

            {

                if((mLink_1_Mid == null)&&(links.ElementAt(i).LinkedPairIds.Contains(mPair1.Key)))

                {

                    mLink_1_Mid = links.ElementAt(i);

                }

                if ((mLink_Mid_2 == null) && (links.ElementAt(i).LinkedPairIds.Contains(mPair2.Key)))

                {

                    mLink_Mid_2 = links.ElementAt(i);

                }

            }

        }

 

        public KeyValuePair<Int32,Pair> getMidPair()

        {

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

            {

                if (mPairs.ElementAt(i).Value.mPos.Equals(bad))

                    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.mPos.Equals(bad))

                    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.mPos.Equals(bad))

                        return mPairs.ElementAt(i);

            }

            return new KeyValuePair<Int32, Pair>(0, null);

        }

 

    }

TestMech.cs

 

  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.getInstance().mLinkList);

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