internal override ProgramOperation GetOperationProgram(Operazione operazione) { /* * - init program * - toolChange ( poi in fase di calcolo programma vedo se saltarlo o meno ) * - settaggio feed. ( vedere meglio) * * -- calcolo programma ( questo è l'unica parte diversa ) * * - rototraslazione operazioni */ var preference = Singleton.Preference.GetPreference(MeasureUnit); var program = new ProgramOperation(0); ExtraCorsa = preference.TurningSecureDistance; //RapidSecureFeed = preference.TurningRapidSecureFeedSync; var changeToolAction = new CambiaUtensileAction(program, operazione); var rapidFeed = FaseDiLavoro.GetRapidFeed(); operazione.Utensile.ParametroUtensile.SetFeed(program, rapidFeed, 0, FeedType.Sync); CreateSpecificProgram(program, operazione); return(program); }
internal override ProgramOperation GetOperationProgram(Operazione operazione) { /* * - init program * - toolChange ( poi in fase di calcolo programma vedo se saltarlo o meno ) * - settaggio feed. ( vedere meglio) * * -- calcolo programma ( questo è l'unica parte diversa ) * * - rototraslazione operazioni */ // todo : tenere conto anche dell'asse c attivazione g112 per il tornio .. // Creo nuovo programma, tutte le lavorazioni ( hanno Z Sicurezza ) // anche perchè pensavo di settarla a livello di fase di lavoro.. var program = new ProgramOperation(SicurezzaZ); // Se cambio utensile è opzionale , oppure se è forzato non cambio utensile.. //var cambioUtensile = (operazione.ToolChangeOptional && operazione.ForceToolChange) || !operazione.ToolChangeOptional; var changeToolAction = new CambiaUtensileAction(program, operazione); changeToolAction.CutViewerToolInfo = CutViewerHelper.PrintTool(operazione.Utensile); // Ora setto avanzamenti comuni - Rapido - SecureFeed - Ecc.. // per ora setto cazzo .. dove lo posso prendere ?? var preference = Singleton.Preference.GetPreference(MeasureUnit); ExtraCorsa = preference.MillEntryExitSecureDistance; SecureFeed = preference.MillingRapidSecureFeedAsync; /* * L'idea per i feed e di cercare di inserirli tutti nel dizionario, se poi vengono usati ok, * altrimenti è lo stesso.. */ // Magari è piu corretto settarle nella classe base parametro.. var feed = operazione.Utensile.ParametroUtensile.GetFeed(FeedType.ASync); var plungeFeed = operazione.Utensile.ParametroUtensile.GetPlungeFeed(FeedType.ASync); /* * Non controllo più che i feed siano <= 0 , al limite nel prog ci sarà scritto F0 */ var rapidFeed = FaseDiLavoro.GetRapidFeed(); operazione.Utensile.ParametroUtensile.SetFeed(program, rapidFeed, SecureFeed, FeedType.ASync); //var feedDictionary = new Dictionary<MoveType, double> // { // {MoveType.Rapid, 10000}, // {MoveType.SecureRapidFeed, SecureFeed}, // {MoveType.Work, feed}, // {MoveType.Cw, feed}, // {MoveType.Ccw, feed}, // {MoveType.PlungeFeed, plungeFeed}, // }; //program.SetFeedDictionary(feedDictionary); /* * ora c'è richiamo il metodo specifico della lavorazione. * In ingresso prende il ProgramPhase. e Operazione. */ CreateSpecificProgram(program, operazione); /* * todo. * qui andrebbe il metodo per fare le rototraslazioni. * per ora lo lascio delegato alla lavorazione specifica * per via del problemi con ciclo di foratura.. */ return(program); }