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