Пример #1
0
        private void ElaborateAllargaturaBareno(ProgramOperation programPhase, Operazione operazione)
        {
            var opBarenatura = operazione.Lavorazione as IBarenoAble;

            if (opBarenatura == null)
            {
                throw new NullReferenceException();
            }

            var pntListBar = GetDrillPointList();

            var moveCollection = new MoveActionCollection();

            var iniZ = InizioZ;

            var endZ = InizioZ - opBarenatura.ProfonditaBareno;

            var fresa = operazione.Utensile as FresaCandela;

            var parametro = operazione.Utensile.ParametroUtensile as ParametroFresaCandela;

            var larghezzaPassata = parametro.GetLarghezzaPassata();

            var profPassata = parametro.GetProfonditaPassata();

            var diaAllargatura = opBarenatura.DiametroBarenatura - opBarenatura.MaterialePerFinitura;

            if (InizioZ <= endZ)
            {
                return;
            }
            if (fresa.Diametro > diaAllargatura)
            {
                return;
            }

            foreach (var point2D in pntListBar)
            {
                // Semplice)
                if (opBarenatura.ModalitaAllargatura == 0)
                {
                    var profile = Profile2D.CreateCircle(diaAllargatura / 2, point2D);

                    moveCollection.AddLinearMove(MoveType.Rapid, AxisAbilited.Xy, point2D.X,
                                                 point2D.Y, null, null);

                    MillProgrammingHelper.GetInternRoughing(moveCollection, profile, opBarenatura.ProfonditaBareno,
                                                            profPassata, larghezzaPassata, fresa.Diametro, 0, InizioZ, SicurezzaZ, 0, 0);

                    moveCollection.AddLinearMove(MoveType.Rapid, AxisAbilited.Xy, point2D.X,
                                                 point2D.Y, null, null);
                }

                // Interpolazione
                else if (opBarenatura.ModalitaAllargatura == 1)
                {
                    MillProgrammingHelper.GetRoughHelicalInterpolation(moveCollection, InizioZ, endZ, SicurezzaZ, point2D,
                                                                       diaAllargatura, fresa.Diametro, profPassata, larghezzaPassata);
                }
            }

            foreach (var a in moveCollection)
            {
                programPhase.AggiungiAzioneMovimento(a);
            }
        }
Пример #2
0
        protected override void CreateSpecificProgram(ProgramOperation programPhase, Operazione operazione)
        {
            /*
             * utensile e parametro lo prendo all'interno del cambio switch..
             */
            var fresa = operazione.Utensile as FresaCandela;

            var parametro = operazione.Utensile.ParametroUtensile as ParametroFresaCandela;

            if (fresa == null || parametro == null)
            {
                throw new NullReferenceException();
            }

            if (PatternDrilling == null)
            {
                return;
            }
            var diameter = DiametroMetricoFinale;

            var pntList = PatternDrilling.GetPointList();

            if (pntList == null || pntList.Count <= 0)
            {
                return;
            }

            var diaFresa = fresa.Diametro;


            var moveCollection = new MoveActionCollection();

            var workUp   = InizioLavorazioneZ;
            var workDown = InizioLavorazioneZ - ProfonditaLavorazione;

            foreach (var point2D in pntList)
            {
                switch (operazione.OperationType)
                {
                case LavorazioniEnumOperazioni.Smussatura:
                {
                    var profile = Profile2D.CreateCircle(DiametroMetricoFinale / 2, point2D);

                    MillProgrammingHelper.GetInternChamfer(moveCollection, profile, ProfonditaSvasatura, diaFresa, 0, false, InizioLavorazioneZ, SicurezzaZ);
                } break;

                case LavorazioniEnumOperazioni.FresaturaFilettare:
                {
                    var helicalRadius = (diameter - diaFresa) / 2;

                    if (FilettaturaSinistra && !FilettaturaEsterna)
                    {
                        //MillProgrammingHelper.GetInternThreadSx(moveCollection, );
                        MillProgrammingHelper.GetInternThreadSx(moveCollection, workUp, workDown, SicurezzaZ, point2D, PassoMetrico, DiametroMetricoFinale / 2, true);
                    }
                    else if (!FilettaturaSinistra && !FilettaturaEsterna)
                    {
                        MillProgrammingHelper.GetInternThreadDx(moveCollection, workUp, workDown, SicurezzaZ, point2D, PassoMetrico, DiametroMetricoFinale / 2, true);
                    }

                    else if (!FilettaturaSinistra && FilettaturaEsterna)
                    {
                        var extracorsa = diaFresa / 2 + ExtraCorsa;

                        MillProgrammingHelper.GetExternThreadDx(moveCollection, workUp, workDown, SicurezzaZ, point2D, PassoMetrico, DiametroMetricoFinale / 2, true, extracorsa);
                    }

                    else if (FilettaturaSinistra && FilettaturaEsterna)
                    {
                        var extracorsa = diaFresa / 2 + ExtraCorsa;

                        MillProgrammingHelper.GetExternThreadSx(moveCollection, workUp, workDown, SicurezzaZ, point2D, PassoMetrico, DiametroMetricoFinale / 2, true, extracorsa);
                    }
                }
                break;

                default:
                    throw  new Exception("FresaturaFilettatura.CreateSpecificProgram");
                    break;
                }
            }
            var mm = base.GetFinalProgram(moveCollection);

            foreach (var variable in mm)
            {
                programPhase.AggiungiAzioneMovimento(variable);
            }
        }