Beispiel #1
0
        public List <Point2D> GetDrillPointList()
        {
            if (PatternDrilling == null)
            {
                throw new NullReferenceException();
            }

            var pntList = PatternDrilling.GetPointList();

            return(pntList);
        }
Beispiel #2
0
        protected override List <IEntity3D> GetFinalPreview()
        {
            var rslt = new List <IEntity3D>();

            if (PatternDrilling != null)
            {
                var diameter = DiametroPreview;// fare proprieta comuine iun modo da personalizzare diametro per ogni lavorazione

                if (diameter == 0)
                {
                    diameter = 1;
                }

                var pntList = PatternDrilling.GetPointList();

                foreach (var point2D in pntList)
                {
                    var arc = new Arc3D {
                        Radius = diameter / 2, Center = new Point3D(point2D.X, point2D.Y, 0)
                    };

                    arc.Start = new Point3D(arc.Center);

                    arc.Start.X += arc.Radius;

                    arc.End = new Point3D(arc.Center);

                    arc.End.X += arc.Radius;

                    rslt.Add(arc);
                }
            }

            foreach (var entity2D in rslt)
            {
                entity2D.PlotStyle = EnumPlotStyle.Element;
            }

            return(rslt);
        }
        /// <summary>
        /// Ritorna anteprima della lavorazione
        /// </summary>
        /// <returns></returns>
        protected override List <IEntity3D> GetFinalPreview()
        {
            try
            {
                var rslt = new List <IEntity3D>();

                if (PatternDrilling != null)
                {
                    var diameter = DiametroMetricoFinale;

                    if (diameter == 0)
                    {
                        diameter = 1;
                    }

                    var pntList = PatternDrilling.GetPointList();

                    foreach (var point2D in pntList)
                    {
                        var arc = new Arc3D {
                            Radius = diameter / 2, Center = new Point3D(point2D.X, point2D.Y, 0)
                        };

                        arc.Start = new Point3D(arc.Center);

                        arc.Start.X += arc.Radius;

                        arc.End = new Point3D(arc.Center);

                        arc.End.X += arc.Radius;

                        rslt.Add(arc);
                    }

                    foreach (var entity3D in rslt)
                    {
                        entity3D.PlotStyle = EnumPlotStyle.Element;
                    }
                }

                return(rslt);
            }
            catch (Exception)
            {
                throw new Exception("FresaturaFilettatura.GetPreview");
            }

            return(null);

            //var cerchio = new Arc2D
            //{
            //    Center = new Point2D(CentroX, CentroY),
            //    Radius = Raggio,
            //    ClockWise = false,
            //    Start = { X = CentroX + Raggio },
            //    End = { X = CentroX + Raggio },
            //};


            //cerchio.Start.Y = CentroY;
            //cerchio.End.Y = CentroY;


            //var profile2D = new Profile2D();

            //profile2D.AddEntity(cerchio);

            //cerchio.PlotStyle = EnumPlotStyle.Element;
            //return profile2D;


            //try
            //{
            //    if (Pattern != null)
            //    {
            //        var preview = Pattern.GetClosedProfile().Source;

            //        return Entity3DHelper.Get3DProfile(preview).ToList();
            //    }

            //}
            //catch (Exception ex)
            //{
            //}

            return(null);
        }
        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);
            }
        }