mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-10 16:27:54 -06:00
ENH: Optimize and design the time-lapse wiper tower
Multiplex existing wipe tower and revert old time-lapse wipe tower code Change-Id: Ia1cba9808647ea900f691b2c5d5887077be12d89 (cherry picked from commit 61f41df572d11b7cc738c34f2624fd123cd9a6df)
This commit is contained in:
parent
a26c573b1b
commit
f745c5fea2
21 changed files with 172 additions and 183 deletions
|
@ -1103,8 +1103,12 @@ Vec3d PartPlate::estimate_wipe_tower_size(const double w, const double wipe_volu
|
|||
}
|
||||
wipe_tower_size(2) = max_height;
|
||||
|
||||
const DynamicPrintConfig &dconfig = wxGetApp().preset_bundle->prints.get_edited_preset().config;
|
||||
const ConfigOption* option = dconfig.option("timelapse_no_toolhead");
|
||||
bool timelapse_enabled = option ? option->getBool() : false;
|
||||
|
||||
double depth = wipe_volume * (plate_extruders.size() - 1) / (layer_height * w);
|
||||
if (depth > EPSILON) {
|
||||
if (timelapse_enabled || depth > EPSILON) {
|
||||
float min_wipe_tower_depth = 0.f;
|
||||
auto iter = WipeTower::min_depth_per_height.begin();
|
||||
while (iter != WipeTower::min_depth_per_height.end()) {
|
||||
|
@ -1142,26 +1146,6 @@ Vec3d PartPlate::estimate_wipe_tower_size(const double w, const double wipe_volu
|
|||
return wipe_tower_size;
|
||||
}
|
||||
|
||||
double PartPlate::estimate_timelapse_wipe_tower_height(int *highest_extruder_id) const
|
||||
{
|
||||
double max_height = 0;
|
||||
int highest_extruder = 0;
|
||||
|
||||
// auto m_model = wxGetApp().plater()->get_obj
|
||||
for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) {
|
||||
if (!contain_instance_totally(obj_idx, 0)) continue;
|
||||
if (m_model->objects[obj_idx]->is_timelapse_wipe_tower) continue;
|
||||
|
||||
BoundingBoxf3 bbox = m_model->objects[obj_idx]->bounding_box();
|
||||
if (bbox.size().z() > max_height) {
|
||||
max_height = bbox.size().z();
|
||||
highest_extruder = m_model->objects[obj_idx]->config.opt_int("extruder");
|
||||
}
|
||||
}
|
||||
if (highest_extruder_id) *highest_extruder_id = highest_extruder;
|
||||
return max_height;
|
||||
}
|
||||
|
||||
bool PartPlate::operator<(PartPlate& plate) const
|
||||
{
|
||||
int index = plate.get_index();
|
||||
|
@ -1636,33 +1620,6 @@ void PartPlate::move_instances_to(PartPlate& left_plate, PartPlate& right_plate,
|
|||
return;
|
||||
}
|
||||
|
||||
//can add timelapse object
|
||||
bool PartPlate::can_add_timelapse_object()
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
if (obj_to_instance_set.size() == 0)
|
||||
return false;
|
||||
|
||||
for (std::set<std::pair<int, int>>::iterator it = obj_to_instance_set.begin(); it != obj_to_instance_set.end(); ++it)
|
||||
{
|
||||
int obj_id = it->first;
|
||||
|
||||
if (obj_id >= m_model->objects.size())
|
||||
continue;
|
||||
|
||||
ModelObject* object = m_model->objects[obj_id];
|
||||
|
||||
if (object->is_timelapse_wipe_tower)
|
||||
{
|
||||
result = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void PartPlate::generate_logo_polygon(ExPolygon &logo_polygon)
|
||||
{
|
||||
if (m_shape.size() == 4)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue