diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index a16b754a4..36f4016b2 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -1288,18 +1288,8 @@ void Transformation::Flags::set(bool dont_translate, bool dont_rotate, bool dont } Transformation::Transformation() -#if !ENABLE_VOLUMES_CENTERING_FIXES - : m_offset(Vec3d::Zero()) - , m_rotation(Vec3d::Zero()) - , m_scaling_factor(Vec3d::Ones()) - , m_mirror(Vec3d::Ones()) - , m_matrix(Transform3d::Identity()) - , m_dirty(false) -#endif // !ENABLE_VOLUMES_CENTERING_FIXES { -#if ENABLE_VOLUMES_CENTERING_FIXES reset(); -#endif // ENABLE_VOLUMES_CENTERING_FIXES } Transformation::Transformation(const Transform3d& transform) @@ -1420,7 +1410,6 @@ void Transformation::set_from_transform(const Transform3d& transform) // std::cout << "something went wrong in extracting data from matrix" << std::endl; } -#if ENABLE_VOLUMES_CENTERING_FIXES void Transformation::reset() { m_offset = Vec3d::Zero(); @@ -1430,7 +1419,6 @@ void Transformation::reset() m_matrix = Transform3d::Identity(); m_dirty = false; } -#endif // ENABLE_VOLUMES_CENTERING_FIXES const Transform3d& Transformation::get_matrix(bool dont_translate, bool dont_rotate, bool dont_scale, bool dont_mirror) const { diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index 7b5abd2e5..033c24a84 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -253,9 +253,7 @@ public: void set_from_transform(const Transform3d& transform); -#if ENABLE_VOLUMES_CENTERING_FIXES void reset(); -#endif // ENABLE_VOLUMES_CENTERING_FIXES const Transform3d& get_matrix(bool dont_translate = false, bool dont_rotate = false, bool dont_scale = false, bool dont_mirror = false) const; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 27335df7b..1d80f6995 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -503,9 +503,7 @@ void Model::convert_multipart_object(unsigned int max_extruders) { new_v->name = o->name; new_v->config.set_deserialize("extruder", get_auto_extruder_id_as_string(max_extruders)); -#if ENABLE_VOLUMES_CENTERING_FIXES new_v->translate(-o->origin_translation); -#endif // ENABLE_VOLUMES_CENTERING_FIXES } } @@ -681,9 +679,7 @@ ModelVolume* ModelObject::add_volume(const TriangleMesh &mesh) { ModelVolume* v = new ModelVolume(this, mesh); this->volumes.push_back(v); -#if ENABLE_VOLUMES_CENTERING_FIXES v->center_geometry(); -#endif // ENABLE_VOLUMES_CENTERING_FIXES this->invalidate_bounding_box(); return v; } @@ -692,9 +688,7 @@ ModelVolume* ModelObject::add_volume(TriangleMesh &&mesh) { ModelVolume* v = new ModelVolume(this, std::move(mesh)); this->volumes.push_back(v); -#if ENABLE_VOLUMES_CENTERING_FIXES v->center_geometry(); -#endif // ENABLE_VOLUMES_CENTERING_FIXES this->invalidate_bounding_box(); return v; } @@ -703,9 +697,7 @@ ModelVolume* ModelObject::add_volume(const ModelVolume &other) { ModelVolume* v = new ModelVolume(this, other); this->volumes.push_back(v); -#if ENABLE_VOLUMES_CENTERING_FIXES v->center_geometry(); -#endif // ENABLE_VOLUMES_CENTERING_FIXES this->invalidate_bounding_box(); return v; } @@ -714,9 +706,7 @@ ModelVolume* ModelObject::add_volume(const ModelVolume &other, TriangleMesh &&me { ModelVolume* v = new ModelVolume(this, other, std::move(mesh)); this->volumes.push_back(v); -#if ENABLE_VOLUMES_CENTERING_FIXES v->center_geometry(); -#endif // ENABLE_VOLUMES_CENTERING_FIXES this->invalidate_bounding_box(); return v; } @@ -727,7 +717,6 @@ void ModelObject::delete_volume(size_t idx) delete *i; this->volumes.erase(i); -#if ENABLE_VOLUMES_CENTERING_FIXES if (this->volumes.size() == 1) { // only one volume left @@ -743,24 +732,6 @@ void ModelObject::delete_volume(size_t idx) v->set_transformation(t); v->set_new_unique_id(); } -#else - if (this->volumes.size() == 1) - { - // only one volume left - // center it and update the instances accordingly - // rationale: the volume may be shifted with respect to the object center and this may lead to wrong rotation and scaling - // when modifying the instance matrix of the derived GLVolume - ModelVolume* v = this->volumes.front(); - v->center_geometry(); - const Vec3d& vol_offset = v->get_offset(); - for (ModelInstance* inst : this->instances) - { - inst->set_offset(inst->get_offset() + inst->get_matrix(true) * vol_offset); - } - v->set_offset(Vec3d::Zero()); - v->set_new_unique_id(); - } -#endif // ENABLE_VOLUMES_CENTERING_FIXES this->invalidate_bounding_box(); } @@ -1007,22 +978,11 @@ Polygon ModelObject::convex_hull_2d(const Transform3d &trafo_instance) const return hull; } -#if ENABLE_VOLUMES_CENTERING_FIXES void ModelObject::center_around_origin(bool include_modifiers) -#else -void ModelObject::center_around_origin() -#endif // ENABLE_VOLUMES_CENTERING_FIXES { // calculate the displacements needed to // center this object around the origin -#if ENABLE_VOLUMES_CENTERING_FIXES BoundingBoxf3 bb = include_modifiers ? full_raw_mesh_bounding_box() : raw_mesh_bounding_box(); -#else - BoundingBoxf3 bb; - for (ModelVolume *v : this->volumes) - if (v->is_model_part()) - bb.merge(v->mesh.bounding_box()); -#endif // ENABLE_VOLUMES_CENTERING_FIXES // Shift is the vector from the center of the bounding box to the origin Vec3d shift = -bb.center(); @@ -1309,9 +1269,6 @@ void ModelObject::split(ModelObjectPtrs* new_objects) for (const ModelInstance *model_instance : this->instances) new_object->add_instance(*model_instance); ModelVolume* new_vol = new_object->add_volume(*volume, std::move(*mesh)); -#if !ENABLE_VOLUMES_CENTERING_FIXES - new_vol->center_geometry(); -#endif // !ENABLE_VOLUMES_CENTERING_FIXES for (ModelInstance* model_instance : new_object->instances) { @@ -1605,7 +1562,6 @@ bool ModelVolume::is_splittable() const void ModelVolume::center_geometry() { -#if ENABLE_VOLUMES_CENTERING_FIXES Vec3d shift = mesh.bounding_box().center(); if (!shift.isApprox(Vec3d::Zero())) { @@ -1613,12 +1569,6 @@ void ModelVolume::center_geometry() m_convex_hull.translate(-(float)shift(0), -(float)shift(1), -(float)shift(2)); translate(shift); } -#else - Vec3d shift = -mesh.bounding_box().center(); - mesh.translate((float)shift(0), (float)shift(1), (float)shift(2)); - m_convex_hull.translate((float)shift(0), (float)shift(1), (float)shift(2)); - translate(-shift); -#endif // ENABLE_VOLUMES_CENTERING_FIXES } void ModelVolume::calculate_convex_hull() diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index a11c50300..41bf5bd4b 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -243,11 +243,8 @@ public: // This method is used by the auto arrange function. Polygon convex_hull_2d(const Transform3d &trafo_instance) const; -#if ENABLE_VOLUMES_CENTERING_FIXES void center_around_origin(bool include_modifiers = true); -#else - void center_around_origin(); -#endif // ENABLE_VOLUMES_CENTERING_FIXES + void ensure_on_bed(); void translate_instances(const Vec3d& vector); void translate_instance(size_t instance_idx, const Vec3d& vector); diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 45f04b1df..6dc560465 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -37,8 +37,6 @@ #define ENABLE_NEW_EULER_ANGLES (1 && ENABLE_1_42_0_ALPHA4) // Modified initial default placement of generic subparts #define ENABLE_GENERIC_SUBPARTS_PLACEMENT (1 && ENABLE_1_42_0_ALPHA4) -// Bunch of fixes related to volumes centering -#define ENABLE_VOLUMES_CENTERING_FIXES (1 && ENABLE_1_42_0_ALPHA4) //==================== diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index bc6d6213a..7081c1e13 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1457,9 +1457,6 @@ void ObjectList::load_part( ModelObject* model_object, delta = model_object->origin_translation - object->origin_translation; } for (auto volume : object->volumes) { -#if !ENABLE_VOLUMES_CENTERING_FIXES - volume->center_geometry(); -#endif // !ENABLE_VOLUMES_CENTERING_FIXES volume->translate(delta); auto new_volume = model_object->add_volume(*volume); new_volume->set_type(type); @@ -1585,9 +1582,6 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode #if !ENABLE_GENERIC_SUBPARTS_PLACEMENT new_volume->set_offset(Vec3d(0.0, 0.0, model_object.origin_translation(2) - mesh.stl.stats.min(2))); #endif // !ENABLE_GENERIC_SUBPARTS_PLACEMENT -#if !ENABLE_VOLUMES_CENTERING_FIXES - new_volume->center_geometry(); -#endif // !ENABLE_VOLUMES_CENTERING_FIXES #if ENABLE_GENERIC_SUBPARTS_PLACEMENT if (instance_idx != -1) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 3c7378a8f..ee49b91ec 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1251,9 +1251,7 @@ struct Plater::priv static const std::regex pattern_3mf; static const std::regex pattern_zip_amf; static const std::regex pattern_any_amf; -#if ENABLE_VOLUMES_CENTERING_FIXES static const std::regex pattern_prusa; -#endif // ENABLE_VOLUMES_CENTERING_FIXES priv(Plater *q, MainFrame *main_frame); @@ -1387,9 +1385,7 @@ const std::regex Plater::priv::pattern_bundle(".*[.](amf|amf[.]xml|zip[.]amf|3mf const std::regex Plater::priv::pattern_3mf(".*3mf", std::regex::icase); const std::regex Plater::priv::pattern_zip_amf(".*[.]zip[.]amf", std::regex::icase); const std::regex Plater::priv::pattern_any_amf(".*[.](amf|amf[.]xml|zip[.]amf)", std::regex::icase); -#if ENABLE_VOLUMES_CENTERING_FIXES const std::regex Plater::priv::pattern_prusa(".*prusa", std::regex::icase); -#endif // ENABLE_VOLUMES_CENTERING_FIXES Plater::priv::priv(Plater *q, MainFrame *main_frame) : q(q) @@ -1644,9 +1640,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ const bool type_3mf = std::regex_match(path.string(), pattern_3mf); const bool type_zip_amf = !type_3mf && std::regex_match(path.string(), pattern_zip_amf); const bool type_any_amf = !type_3mf && std::regex_match(path.string(), pattern_any_amf); -#if ENABLE_VOLUMES_CENTERING_FIXES const bool type_prusa = std::regex_match(path.string(), pattern_prusa); -#endif // ENABLE_VOLUMES_CENTERING_FIXES Slic3r::Model model; try { @@ -1691,9 +1685,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ { // The model should now be initialized -#if ENABLE_VOLUMES_CENTERING_FIXES if (!type_3mf && !type_any_amf && !type_prusa) { -#endif // ENABLE_VOLUMES_CENTERING_FIXES if (model.looks_like_multipart_object()) { wxMessageDialog dlg(q, _(L( "This file contains several objects positioned at multiple heights. " @@ -1704,7 +1696,6 @@ std::vector Plater::priv::load_files(const std::vector& input_ model.convert_multipart_object(nozzle_dmrs->values.size()); } } -#if ENABLE_VOLUMES_CENTERING_FIXES } else if ((wxGetApp().get_mode() == comSimple) && (type_3mf || type_any_amf)) { @@ -1761,22 +1752,11 @@ std::vector Plater::priv::load_files(const std::vector& input_ return obj_idxs; } } -#endif // ENABLE_VOLUMES_CENTERING_FIXES -#if !ENABLE_VOLUMES_CENTERING_FIXES - if (type_3mf || type_any_amf) { -#endif // !ENABLE_VOLUMES_CENTERING_FIXES for (ModelObject* model_object : model.objects) { -#if ENABLE_VOLUMES_CENTERING_FIXES model_object->center_around_origin(false); -#else - model_object->center_around_origin(); -#endif // ENABLE_VOLUMES_CENTERING_FIXES model_object->ensure_on_bed(); } -#if !ENABLE_VOLUMES_CENTERING_FIXES - } -#endif // !ENABLE_VOLUMES_CENTERING_FIXES // check multi-part object adding for the SLA-printing if (printer_technology == ptSLA)