Fix of "MM incorrect extruder temperature"

https://github.com/prusa3d/Slic3r/issues/443

Change of the PlaceholderParser:
All vector configuration values stored into the PlaceholderParser
are expected to be addressed by the extruder ID, therefore
if a vector configuration value is addressed without an index,
a current extruder ID is used.

Also a small fix of fan handling: The fan speed is set to zero
at the start of the G-code if the cooling for the initial extruder
is disabled.
This commit is contained in:
bubnikv 2017-07-31 15:42:55 +02:00
parent 7181f5d163
commit 75c72bc59b
5 changed files with 80 additions and 69 deletions

View file

@ -7,17 +7,13 @@
#include <vector>
#include "PrintConfig.hpp"
namespace Slic3r {
typedef std::map<std::string, std::string> t_strstr_map;
typedef std::map<std::string, std::vector<std::string> > t_strstrs_map;
class PlaceholderParser
{
public:
t_strstr_map _single;
t_strstrs_map _multiple;
std::map<std::string, std::string> m_single;
std::map<std::string, std::vector<std::string>> m_multiple;
PlaceholderParser();
void update_timestamp();
@ -28,7 +24,7 @@ public:
void set(const std::string &key, unsigned int value);
void set(const std::string &key, double value);
void set(const std::string &key, std::vector<std::string> values);
std::string process(std::string str) const;
std::string process(std::string str, unsigned int current_extruder_id) const;
private:
bool find_and_replace(std::string &source, std::string const &find, std::string const &replace) const;