예제 #1
0
        public void Save()
        {
            var content = File.ReadAllText(path);

            var stripped = replacers
                           .CreateResult(content, (regex, result) => regex.Replace(result, string.Empty))
                           .Trim(Environment.NewLine.ToCharArray());

            var fans = string.Join(Environment.NewLine, Fans.Select(f => $@"xxx Pwm {f.Id}
name={f.Name}
active={f.Active.ToString().ToLower()}
min={f.Min}
max={f.Max}
variate={f.Variate.ToString().ToLower()}
logged={f.Logged.ToString().ToLower()}
xxx end
"));

            var controllers = string.Join(Environment.NewLine, Config.Select(fc => fc.Controller).Select(c => $@"xxx FanController {c.Id}
name={c.Name}
pwm={c.Fan.Id}
method={(int)c.Method}
enabled={c.Active.ToString().ToLower()}
xxx end
"));

            var temps = string.Join(Environment.NewLine, Config.SelectMany(fc => fc.Curves.SelectMany(c => c.Temps.Select(t => $@"xxx FanControllerTemp from FanController {fc.Controller.Id}
temp={t.Temp.Id}
MinTemp={t.MinTemp}
MaxTemp={t.MaxTemp}
hysteresis={t.Hysteresis}
ControlPoints={c.Curve.RenderOutput()}
xxx end
")))
                                    .ToList());

            File.WriteAllText(path, $@"{stripped}

{fans}
{controllers}
{temps}");
        }
 /// <summary>
 /// Creates a duplicate of the full object model
 /// </summary>
 /// <returns>A clone of this model</returns>
 public object Clone()
 {
     return(new MachineModel
     {
         Channels = (Channels)Channels.Clone(),
         Electronics = (Electronics)Electronics.Clone(),
         Fans = Fans.Select(fan => (Fan)fan.Clone()).ToList(),
         Heat = (Heat)Heat.Clone(),
         Job = (Job)Job.Clone(),
         MessageBox = (MessageBox)MessageBox.Clone(),
         Move = (Move)Move.Clone(),
         Network = (Network)Network.Clone(),
         Messages = Messages.Select(item => (Message)item.Clone()).ToList(),
         Scanner = (Scanner)Scanner.Clone(),
         Sensors = (Sensors)Sensors.Clone(),
         Spindles = Spindles.Select(spindle => (Spindle)spindle.Clone()).ToList(),
         State = (State)State.Clone(),
         Storages = Storages.Select(storage => (Storage)storage.Clone()).ToList(),
         Tools = Tools.Select(tool => (Tool)tool.Clone()).ToList()
     });
 }