Browse Source

More logs for the "empty fill pattern" 3mf save issue

supermerill 1 year ago
parent
commit
9b74886543
1 changed files with 44 additions and 23 deletions
  1. 44 23
      src/libslic3r/Format/3mf.cpp

+ 44 - 23
src/libslic3r/Format/3mf.cpp

@@ -3005,13 +3005,20 @@ namespace Slic3r {
                                     opt_tree.put("<xmlattr>.opt_key", opt_key);
                                 } else {
                                     std::ofstream log("ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt", std::ios_base::app);
-                                    log << "error in ranges, can't serialize " << opt_key << ": '" << value << "' " << (config.option(opt_key) != nullptr) << "\n";
-                                    if (config.option(opt_key) != nullptr) {
-                                        log << "type : " << config.option(opt_key)->type();
+                                    const ConfigOption *option = config.option(opt_key);
+                                    log << "error in ranges, can't serialize " << opt_key << ": '" << value << "' " << (option != nullptr) << "\n";
+                                    if (option != nullptr) {
+                                        log << "type : " << option->type();
+                                        log << ", flags : " << option->flags;
+                                        log << ", phony : " << option->is_phony();
+                                        log << ", serialized : '" << option->serialize() << "'";
                                         log << "\n";
                                     }
-                                    if (config.option(opt_key) != nullptr && config.option(opt_key)->type() == ConfigOptionType::coEnum) {
-                                        log << "enum : " << config.option(opt_key)->get_int();
+                                    log << "Keys in config:";
+                                    for(const std::string &k : config.keys()) log << " " << k;
+                                    log << "\n";
+                                    if (option != nullptr && option->type() == ConfigOptionType::coEnum) {
+                                        log << "enum : " << option->get_int();
                                         log << "\n";
                                         const ConfigOptionDef* def = nullptr;
                                         try {
@@ -3025,8 +3032,8 @@ namespace Slic3r {
                                             }
                                         }
                                     }
-                                    if (config.option(opt_key) != nullptr && config.option(opt_key)->type() == ConfigOptionType::coInt) {
-                                        log << "int : " << config.option(opt_key)->get_int();
+                                    if (option != nullptr && option->type() == ConfigOptionType::coInt) {
+                                        log << "int : " << option->get_int();
                                         log << "\n";
                                     }
                                     log.close();
@@ -3230,16 +3237,23 @@ namespace Slic3r {
                             stream << "  <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << OBJECT_TYPE << "\" " << KEY_ATTR << "=\"" << key << "\" " << VALUE_ATTR << "=\"" << value << "\"/>\n";
                         } else {
                             std::ofstream log("ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt", std::ios_base::app);
-                            log << "error in model, can't serialize " << key << ": '" << value << "' " << (obj->config.option(key) != nullptr) << "\n";
-                            if (obj->config.option(key) != nullptr) {
-                                log << "type : " << obj->config.option(key)->type();
+                            const ConfigOption *option = obj->config.option(key);
+                            log << "error in model, can't serialize " << key << ": '" << value << "' " << (option != nullptr) << "\n";
+                            if (option != nullptr) {
+                                log << "type : " << option->type();
+                                log << ", flags : " << option->flags;
+                                log << ", phony : " << option->is_phony();
+                                log << ", serialized : '" << option->serialize() << "'";
                                 log << "\n";
                             }
-                            if (obj->config.option(key) != nullptr && obj->config.option(key)->type() == ConfigOptionType::coEnum) {
+                            log << "Keys in obj:";
+                            for(const std::string &k : obj->config.keys()) log << " " << k;
+                            log << "\n";
+                            if (option != nullptr && option->type() == ConfigOptionType::coEnum) {
                                 try{
-                                    log << "raw_int_value : " << obj->config.option(key)->get_int() << "\n";
+                                    log << "raw_int_value : " << option->get_int() << "\n";
                                 } catch (std::exception ex) {}
-                                log << "enum : " << obj->config.option(key)->get_int();
+                                log << "enum : " << option->get_int();
                                 log << "\n";
                                 const ConfigOptionDef* def = nullptr;
                                 try {
@@ -3253,8 +3267,8 @@ namespace Slic3r {
                                     }
                                 }
                             }
-                            if (obj->config.option(key) != nullptr && obj->config.option(key)->type() == ConfigOptionType::coInt) {
-                                log << "int : " << obj->config.option(key)->get_int();
+                            if (option != nullptr && option->type() == ConfigOptionType::coInt) {
+                                log << "int : " << option->get_int();
                                 log << "\n";
                             }
                             log.close();
@@ -3338,16 +3352,23 @@ namespace Slic3r {
                                         stream << "  <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << key << "\" " << VALUE_ATTR << "=\"" << value << "\"/>\n";
                                     } else {
                                         std::ofstream log("ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt", std::ios_base::app);
-                                        log << "error in volume, can't serialize " << key << ": '" << value << "' " << ((volume->config.option(key) != nullptr)?"exist":"doesn't exist") << "\n";
-                                        if (volume->config.option(key) != nullptr) {
-                                            log << "type : " << volume->config.option(key)->type();
+                                        const ConfigOption *option = volume->config.option(key);
+                                        log << "error in volume, can't serialize " << key << ": '" << value << "' " << ((option != nullptr)?"exist":"doesn't exist") << "\n";
+                                        if (option != nullptr) {
+                                            log << "type : " << option->type();
+                                            log << ", flags : " << option->flags;
+                                            log << ", phony : " << option->is_phony();
+                                            log << ", serialized : '" << option->serialize() << "'";
                                             log << "\n";
                                         }
-                                        if (volume->config.option(key) != nullptr && volume->config.option(key)->type() == ConfigOptionType::coEnum) {
+                                        log << "Keys in volume:";
+                                        for(const std::string &k : volume->config.keys()) log << " " << k;
+                                        log << "\n";
+                                        if (option != nullptr && option->type() == ConfigOptionType::coEnum) {
                                             try{
-                                                log << "raw_int_value : " << volume->config.option(key)->get_int() << "\n";
+                                                log << "raw_int_value : " << option->get_int() << "\n";
                                             } catch (std::exception ex) {}
-                                            log << "enum : " << volume->config.option(key)->get_int();
+                                            log << "enum : " << option->get_int();
                                             log << "\n";
                                             const ConfigOptionDef* def = nullptr;
                                             try {
@@ -3361,8 +3382,8 @@ namespace Slic3r {
                                                 }
                                             }
                                         }
-                                        if (volume->config.option(key) != nullptr && volume->config.option(key)->type() == ConfigOptionType::coInt) {
-                                            log << "int : " << volume->config.option(key)->get_int();
+                                        if (option != nullptr && option->type() == ConfigOptionType::coInt) {
+                                            log << "int : " << option->get_int();
                                             log << "\n";
                                         }
                                         log.close();