Ejemplo n.º 1
0
        public string ExtruderTemperature(int extruderIndex)
        {
            if (extruderIndex >= printerSettings.MaterialSettingsKeys.Count)
            {
                // MaterialSettingsKeys is empty or lacks a value for the given extruder index
                //
                // If extruder index zero was requested, return the layer cascade temperature value, otherwise null
                return((extruderIndex == 0) ? printerSettings.GetValue("temperature") : null);
            }

            string materialKey = printerSettings.MaterialSettingsKeys[extruderIndex];

            if (extruderIndex == 0 && (string.IsNullOrEmpty(materialKey) || printerSettings.UserLayer.ContainsKey("temperature")))
            {
                // In the case where a user override exists or MaterialSettingsKeys is populated with multiple extruder
                // positions but position 0 is empty and thus unassigned, use layer cascade to resolve temp
                return(printerSettings.GetValue("temperature"));
            }

            // Otherwise, use the SettingsLayers that is bound to this extruder
            PrinterSettingsLayer layer = printerSettings.GetMaterialLayer(materialKey);

            string result = "0";

            layer?.TryGetValue("temperature", out result);
            return(result);
        }
Ejemplo n.º 2
0
        public double ExtruderTemperature(int extruderIndex)
        {
            if (extruderIndex == 0)
            {
                return(printerSettings.GetValue <double>(SettingsKey.temperature));
            }
            else
            {
                // Check if there is a material override for this extruder
                // Otherwise, use the SettingsLayers that is bound to this extruder
                if (extruderIndex < printerSettings.MaterialSettingsKeys.Count)
                {
                    string materialKey         = printerSettings.MaterialSettingsKeys[extruderIndex];
                    PrinterSettingsLayer layer = printerSettings.GetMaterialLayer(materialKey);

                    if (layer != null)
                    {
                        string result = "0";
                        if (layer.TryGetValue(SettingsKey.temperature, out result))
                        {
                            double value = 0;
                            if (double.TryParse(result, out value))
                            {
                                return(value);
                            }
                        }
                    }
                }

                // else return the normal settings cascade
                return(printerSettings.GetValue <double>(SettingsKey.temperature));
            }
        }