Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/xs
diff options
context:
space:
mode:
authorEnrico Turri <enricoturri@seznam.cz>2018-05-07 17:13:58 +0300
committerEnrico Turri <enricoturri@seznam.cz>2018-05-07 17:13:58 +0300
commit8eb9ddc2eb6c3f98cf28125ddbee4d233fa58616 (patch)
treeae0b5812f4a7f64f12647206f3592ae9408c0029 /xs
parentc579ec7f5fe92e8cce773750a73086cbe8ef074a (diff)
Max count of auto assigned extruders when splitting object set as dependent of current printer
Diffstat (limited to 'xs')
-rw-r--r--xs/src/libslic3r/Model.cpp16
-rw-r--r--xs/src/libslic3r/Model.hpp10
-rw-r--r--xs/xsp/Model.xsp4
3 files changed, 15 insertions, 15 deletions
diff --git a/xs/src/libslic3r/Model.cpp b/xs/src/libslic3r/Model.cpp
index a43bf0221..755941144 100644
--- a/xs/src/libslic3r/Model.cpp
+++ b/xs/src/libslic3r/Model.cpp
@@ -404,7 +404,7 @@ bool Model::looks_like_multipart_object() const
return false;
}
-void Model::convert_multipart_object()
+void Model::convert_multipart_object(unsigned int max_extruders)
{
if (this->objects.empty())
return;
@@ -421,7 +421,7 @@ void Model::convert_multipart_object()
if (new_v != nullptr)
{
new_v->name = o->name;
- new_v->config.set_deserialize("extruder", get_auto_extruder_id_as_string());
+ new_v->config.set_deserialize("extruder", get_auto_extruder_id_as_string(max_extruders));
}
}
@@ -481,20 +481,20 @@ bool Model::fits_print_volume(const FullPrintConfig &config) const
return print_volume.contains(transformed_bounding_box());
}
-unsigned int Model::get_auto_extruder_id()
+unsigned int Model::get_auto_extruder_id(unsigned int max_extruders)
{
unsigned int id = s_auto_extruder_id;
- if (++s_auto_extruder_id > 4)
+ if (++s_auto_extruder_id > max_extruders)
reset_auto_extruder_id();
return id;
}
-std::string Model::get_auto_extruder_id_as_string()
+std::string Model::get_auto_extruder_id_as_string(unsigned int max_extruders)
{
char str_extruder[64];
- sprintf(str_extruder, "%ud", get_auto_extruder_id());
+ sprintf(str_extruder, "%ud", get_auto_extruder_id(max_extruders));
return str_extruder;
}
@@ -996,7 +996,7 @@ ModelMaterial* ModelVolume::assign_unique_material()
// Split this volume, append the result to the object owning this volume.
// Return the number of volumes created from this one.
// This is useful to assign different materials to different volumes of an object.
-size_t ModelVolume::split()
+size_t ModelVolume::split(unsigned int max_extruders)
{
TriangleMeshPtrs meshptrs = this->mesh.split();
if (meshptrs.size() <= 1) {
@@ -1019,7 +1019,7 @@ size_t ModelVolume::split()
char str_idx[64];
sprintf(str_idx, "_%d", idx + 1);
this->object->volumes[ivolume]->name = name + str_idx;
- this->object->volumes[ivolume]->config.set_deserialize("extruder", Model::get_auto_extruder_id_as_string());
+ this->object->volumes[ivolume]->config.set_deserialize("extruder", Model::get_auto_extruder_id_as_string(max_extruders));
delete mesh;
++ idx;
}
diff --git a/xs/src/libslic3r/Model.hpp b/xs/src/libslic3r/Model.hpp
index 0c0ffe776..4835028b9 100644
--- a/xs/src/libslic3r/Model.hpp
+++ b/xs/src/libslic3r/Model.hpp
@@ -173,8 +173,8 @@ public:
// Split this volume, append the result to the object owning this volume.
// Return the number of volumes created from this one.
// This is useful to assign different materials to different volumes of an object.
- size_t split();
-
+ size_t split(unsigned int max_extruders);
+
ModelMaterial* assign_unique_material();
private:
@@ -280,7 +280,7 @@ public:
void duplicate_objects_grid(size_t x, size_t y, coordf_t dist);
bool looks_like_multipart_object() const;
- void convert_multipart_object();
+ void convert_multipart_object(unsigned int max_extruders);
// Ensures that the min z of the model is not negative
void adjust_min_z();
@@ -291,8 +291,8 @@ public:
void print_info() const { for (const ModelObject *o : this->objects) o->print_info(); }
- static unsigned int get_auto_extruder_id();
- static std::string get_auto_extruder_id_as_string();
+ static unsigned int get_auto_extruder_id(unsigned int max_extruders);
+ static std::string get_auto_extruder_id_as_string(unsigned int max_extruders);
static void reset_auto_extruder_id();
};
diff --git a/xs/xsp/Model.xsp b/xs/xsp/Model.xsp
index 702839537..5b8318353 100644
--- a/xs/xsp/Model.xsp
+++ b/xs/xsp/Model.xsp
@@ -95,7 +95,7 @@
void duplicate_objects_grid(unsigned int x, unsigned int y, double dist);
bool looks_like_multipart_object() const;
- void convert_multipart_object();
+ void convert_multipart_object(unsigned int max_extruders);
void print_info() const;
@@ -346,7 +346,7 @@ ModelMaterial::attributes()
void set_modifier(bool modifier)
%code%{ THIS->modifier = modifier; %};
- size_t split();
+ size_t split(unsigned int max_extruders);
ModelMaterial* assign_unique_material();
};