Beispiel #1
0
        private IEnumerable <string[]> GetOperationDescriptions(NxOperationGroup operationGroup)
        {
            string chanellName = null;

            // заголовок для всех операций
            var list = new List <string[]>(7)
            {
                new[] { "У", "-", operationGroup.Name, operationGroup.Description, string.Empty, string.Empty, string.Empty }
            };


            // сортируем по номеру канала
            var nxOperations = operationGroup.NxOperations.OrderBy(op => op.ChanellNumber);

            // группируем операции по инструменту
            var operationsGroup = nxOperations.GroupBy(op => op.CUTTER_TAG);

            foreach (var operations in operationsGroup)
            {
                foreach (var oper in operations)
                {
                    //если коррекция включена, делаем проверку на правильную трассировку одного и того же инстр, входящего в массив
                    if (arrForCheckToolCorrection.Contains(oper.CUTTER_TYPE) && oper.getCutComParams())
                    // try
                    {
                        cutComParambuilder(oper);
                    }
                    // catch(NXException e)
                    //   {throw;}
                }

                var operation = operations.FirstOrDefault();
                if (operation == null)
                {
                    continue;
                }

                // довольно сложно будем добавлять признак первого или второго канала для станка
                var s = operation.ChanellNumber == 1 ? "Первый канал" : (operation.ChanellNumber == 2 ? "Второй канал" : null);
                if (chanellName != s)
                {
                    chanellName = s;
                    list.Add(new[] { string.Empty, "-", string.Empty, chanellName, string.Empty, string.Empty, string.Empty });
                }

                if (operation.CUTTER_TYPE == UFConstants.UF_CUTTER_TYPE_TURN ||
                    operation.CUTTER_TYPE == UFConstants.UF_CUTTER_TYPE_GROOVE ||
                    operation.CUTTER_TYPE == UFConstants.UF_CUTTER_TYPE_THREAD)
                {
                    toolMap = operation.getToolListRegister(); // инициализируем мапу если выполняются условия
                }


                // получим описание операции в зависипости от типа инструмента
                switch (operation.CUTTER_TYPE)
                {
                case UFConstants.UF_CUTTER_TYPE_MILL:
                case UFConstants.UF_CUTTER_TYPE_BARREL:
                case UFConstants.UF_CUTTER_TYPE_T:
                //----
                case 15:            //добавил условие для Switch тип режущего инструмента == 15
                    //----
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_MILL(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_DRILL:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_DRILLL(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_TURN:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_TURN(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_GROOVE:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_GROOVE(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_THREAD:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_THREAD(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_FORM:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_FORM(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_SOLID:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_SOLID(operations)); break;
                }

                // для всех инструментов
                list.AddRange(GetAdditionalOperationDescriptions(operation));

                // получим атрибуты инструмента
                list.AddRange(GetToolAttributes(operation));
            }
            return(list);
        }
Beispiel #2
0
        private IEnumerable <string[]> GetOperationDescriptions(NxOperationGroup operationGroup)
        {
            string chanellName = null;

            // заголовок для всех операций
            var list = new List <string[]>(7)
            {
                new[] { "У", "-", operationGroup.Name, operationGroup.Description, string.Empty, string.Empty, string.Empty }
            };

            // сортируем по номеру канала
            var nxOperations = operationGroup.NxOperations.OrderBy(op => op.ChanellNumber);

            // группируем операции по инструменту
            var operationsGroup = nxOperations.GroupBy(op => op.CUTTER_TAG);

            foreach (var operations in operationsGroup)
            {
                var operation = operations.FirstOrDefault();
                if (operation == null)
                {
                    continue;
                }

                // довольно сложно будем добавлять признак первого или второго канала для станка
                var s = operation.ChanellNumber == 1 ? "Первый канал" : (operation.ChanellNumber == 2 ? "Второй канал" : null);
                if (chanellName != s)
                {
                    chanellName = s;
                    list.Add(new[] { string.Empty, "-", string.Empty, chanellName, string.Empty, string.Empty, string.Empty });
                }

                // получим описание операции в зависипости от типа инструмента
                switch (operation.CUTTER_TYPE)
                {
                case UFConstants.UF_CUTTER_TYPE_MILL:
                case UFConstants.UF_CUTTER_TYPE_BARREL:
                case UFConstants.UF_CUTTER_TYPE_T:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_MILL(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_DRILL:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_DRILLL(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_TURN:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_TURN(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_GROOVE:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_GROOVE(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_THREAD:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_THREAD(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_FORM:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_FORM(operations)); break;

                case UFConstants.UF_CUTTER_TYPE_SOLID:
                    list.AddRange(GetDescription_UF_CUTTER_TYPE_SOLID(operations)); break;
                }

                // для всех инструментов
                list.AddRange(GetAdditionalOperationDescriptions(operation));

                // получим атрибуты инструмента
                list.AddRange(GetToolAttributes(operation));
            }
            return(list);
        }