mirror of
https://github.com/QIDITECH/QIDIStudio.git
synced 2026-01-31 00:48:41 +03:00
fix some bug
This commit is contained in:
@@ -663,12 +663,16 @@ void Layer::make_ironing()
|
|||||||
return true;
|
return true;
|
||||||
if (this->angle > rhs.angle)
|
if (this->angle > rhs.angle)
|
||||||
return false;
|
return false;
|
||||||
|
if (this->inset < rhs.inset)
|
||||||
|
return true;
|
||||||
|
if (this->inset > rhs.inset)
|
||||||
|
return false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const IroningParams &rhs) const {
|
bool operator==(const IroningParams &rhs) const {
|
||||||
return this->extruder == rhs.extruder && this->just_infill == rhs.just_infill &&
|
return this->extruder == rhs.extruder && this->just_infill == rhs.just_infill &&
|
||||||
this->line_spacing == rhs.line_spacing && this->height == rhs.height && this->speed == rhs.speed && this->angle == rhs.angle && this->pattern == rhs.pattern;
|
this->line_spacing == rhs.line_spacing && this->height == rhs.height && this->speed == rhs.speed && this->angle == rhs.angle && this->pattern == rhs.pattern && this->inset == rhs.inset;
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerRegion *layerm = nullptr;
|
LayerRegion *layerm = nullptr;
|
||||||
@@ -712,6 +716,7 @@ void Layer::make_ironing()
|
|||||||
//TODO just_infill is currently not used.
|
//TODO just_infill is currently not used.
|
||||||
ironing_params.just_infill = false;
|
ironing_params.just_infill = false;
|
||||||
ironing_params.line_spacing = config.ironing_spacing;
|
ironing_params.line_spacing = config.ironing_spacing;
|
||||||
|
ironing_params.inset = config.ironing_inset;
|
||||||
ironing_params.height = default_layer_height * 0.01 * config.ironing_flow;
|
ironing_params.height = default_layer_height * 0.01 * config.ironing_flow;
|
||||||
ironing_params.speed = config.ironing_speed;
|
ironing_params.speed = config.ironing_speed;
|
||||||
ironing_params.angle = (int(config.ironing_direction.value+layerm->region().config().infill_direction.value)%180) * M_PI / 180.;
|
ironing_params.angle = (int(config.ironing_direction.value+layerm->region().config().infill_direction.value)%180) * M_PI / 180.;
|
||||||
@@ -802,7 +807,9 @@ void Layer::make_ironing()
|
|||||||
polys = union_safety_offset(polys);
|
polys = union_safety_offset(polys);
|
||||||
}
|
}
|
||||||
// Trim the top surfaces with half the nozzle diameter.
|
// Trim the top surfaces with half the nozzle diameter.
|
||||||
ironing_areas = intersection_ex(polys, offset(this->lslices, - float(scale_(0.5 * nozzle_dmr))));
|
//QDS: ironing inset
|
||||||
|
double ironing_areas_offset = ironing_params.inset == 0 ? float(scale_(0.5 * nozzle_dmr)) : scale_(ironing_params.inset);
|
||||||
|
ironing_areas = intersection_ex(polys, offset(this->lslices, - ironing_areas_offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the filler object.
|
// Create the filler object.
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ static Polylines generate_infill_layers(coordf_t z_height, double repeat_ratio,
|
|||||||
Polylines result;
|
Polylines result;
|
||||||
coordf_t trans_layer_size = grid_size * 0.4; // upper.
|
coordf_t trans_layer_size = grid_size * 0.4; // upper.
|
||||||
coordf_t repeat_layer_size = grid_size * repeat_ratio; // lower.
|
coordf_t repeat_layer_size = grid_size * repeat_ratio; // lower.
|
||||||
z_height += repeat_layer_size / 2 + trans_layer_size; // offset to improve first few layer strength and reduce the risk of warpping.
|
z_height += repeat_layer_size / 2 ; // offset to improve first few layer strength and reduce the risk of warpping.
|
||||||
coordf_t period = trans_layer_size + repeat_layer_size;
|
coordf_t period = trans_layer_size + repeat_layer_size;
|
||||||
coordf_t remains = z_height - std::floor(z_height / period) * period;
|
coordf_t remains = z_height - std::floor(z_height / period) * period;
|
||||||
coordf_t trans_z = remains - repeat_layer_size; // put repeat layer first.
|
coordf_t trans_z = remains - repeat_layer_size; // put repeat layer first.
|
||||||
|
|||||||
@@ -3697,6 +3697,17 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line)
|
|||||||
m_seams_detector.activate(true);
|
m_seams_detector.activate(true);
|
||||||
m_seams_detector.set_first_vertex(m_result.moves.back().position - m_extruder_offsets[m_extruder_id] - plate_offset);
|
m_seams_detector.set_first_vertex(m_result.moves.back().position - m_extruder_offsets[m_extruder_id] - plate_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//QDS: some layer may only has G3/G3, update right layer height
|
||||||
|
if (m_detect_layer_based_on_tag && !m_result.spiral_vase_layers.empty()) {
|
||||||
|
if (delta_pos[Z] >= 0.0 && type == EMoveType::Extrude && m_result.spiral_vase_layers.back().first == FLT_MAX) {
|
||||||
|
// replace layer height placeholder with correct value
|
||||||
|
m_result.spiral_vase_layers.back().first = static_cast<float>(m_end_position[Z]);
|
||||||
|
}
|
||||||
|
if (!m_result.moves.empty())
|
||||||
|
m_result.spiral_vase_layers.back().second.second = m_result.moves.size() - 1 - m_seams_count;
|
||||||
|
}
|
||||||
|
|
||||||
//QDS: store move
|
//QDS: store move
|
||||||
store_move_vertex(type, m_move_path_type);
|
store_move_vertex(type, m_move_path_type);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -182,6 +182,13 @@ PrinterTechnology BackgroundSlicingProcess::current_printer_technology() const
|
|||||||
//return m_print->technology();
|
//return m_print->technology();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//y49
|
||||||
|
std::string BackgroundSlicingProcess::output_filename_for_project()
|
||||||
|
{
|
||||||
|
std::string filename = m_print->output_filename("");
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
|
|
||||||
std::string BackgroundSlicingProcess::output_filepath_for_project(const boost::filesystem::path &project_path)
|
std::string BackgroundSlicingProcess::output_filepath_for_project(const boost::filesystem::path &project_path)
|
||||||
{
|
{
|
||||||
assert(m_print != nullptr);
|
assert(m_print != nullptr);
|
||||||
|
|||||||
@@ -125,6 +125,8 @@ public:
|
|||||||
// Take the project path (if provided), extract the name of the project, run it through the macro processor and save it next to the project file.
|
// Take the project path (if provided), extract the name of the project, run it through the macro processor and save it next to the project file.
|
||||||
// If the project_path is empty, just run output_filepath().
|
// If the project_path is empty, just run output_filepath().
|
||||||
std::string output_filepath_for_project(const boost::filesystem::path &project_path);
|
std::string output_filepath_for_project(const boost::filesystem::path &project_path);
|
||||||
|
//y49
|
||||||
|
std::string output_filename_for_project();
|
||||||
|
|
||||||
// Start the background processing. Returns false if the background processing was already running.
|
// Start the background processing. Returns false if the background processing was already running.
|
||||||
bool start();
|
bool start();
|
||||||
|
|||||||
@@ -718,6 +718,8 @@ void TextCtrl::BUILD() {
|
|||||||
temp->SetLabel(_L(m_opt.sidetext));
|
temp->SetLabel(_L(m_opt.sidetext));
|
||||||
auto text_ctrl = m_opt.multiline ? (wxTextCtrl *)temp : ((TextInput *) temp)->GetTextCtrl();
|
auto text_ctrl = m_opt.multiline ? (wxTextCtrl *)temp : ((TextInput *) temp)->GetTextCtrl();
|
||||||
text_ctrl->SetLabel(text_value);
|
text_ctrl->SetLabel(text_value);
|
||||||
|
//y49
|
||||||
|
temp->SetMinSize(size);
|
||||||
temp->SetSize(size);
|
temp->SetSize(size);
|
||||||
m_combine_side_text = !m_opt.multiline;
|
m_combine_side_text = !m_opt.multiline;
|
||||||
if (parent_is_custom_ctrl && m_opt.height < 0)
|
if (parent_is_custom_ctrl && m_opt.height < 0)
|
||||||
|
|||||||
@@ -251,18 +251,18 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
|||||||
|
|
||||||
// Set a wider width for a better alignment
|
// Set a wider width for a better alignment
|
||||||
Option option = m_optgroup->get_option("print_host");
|
Option option = m_optgroup->get_option("print_host");
|
||||||
// option.opt.width = Field::def_width_wider();
|
//y49
|
||||||
// 47
|
option.opt.width = Field::def_width_wider() * 2;
|
||||||
option.opt.width = 20;
|
|
||||||
Line host_line = m_optgroup->create_single_option_line(option);
|
Line host_line = m_optgroup->create_single_option_line(option);
|
||||||
|
|
||||||
host_line.append_widget(printhost_browse);
|
host_line.append_widget(printhost_browse);
|
||||||
host_line.append_widget(print_host_test);
|
host_line.append_widget(print_host_test);
|
||||||
m_optgroup->append_line(host_line);
|
m_optgroup->append_line(host_line);
|
||||||
|
|
||||||
//y47
|
//y49
|
||||||
option = m_optgroup->get_option("printhost_apikey");
|
option = m_optgroup->get_option("printhost_apikey");
|
||||||
option.opt.width = 20;
|
option.opt.width = Field::def_width_wider() * 2;
|
||||||
|
option.opt.full_width = 1;
|
||||||
m_optgroup->append_single_option_line(option);
|
m_optgroup->append_single_option_line(option);
|
||||||
|
|
||||||
m_optgroup->activate();
|
m_optgroup->activate();
|
||||||
|
|||||||
@@ -14076,6 +14076,12 @@ wxString Plater::get_project_filename(const wxString& extension) const
|
|||||||
return p->get_project_filename(extension);
|
return p->get_project_filename(extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//y49
|
||||||
|
wxString Plater::get_output_filename()
|
||||||
|
{
|
||||||
|
return from_u8((p->background_process.output_filename_for_project()));
|
||||||
|
}
|
||||||
|
|
||||||
wxString Plater::get_export_gcode_filename(const wxString & extension, bool only_filename, bool export_all) const
|
wxString Plater::get_export_gcode_filename(const wxString & extension, bool only_filename, bool export_all) const
|
||||||
{
|
{
|
||||||
return p->get_export_gcode_filename(extension, only_filename, export_all);
|
return p->get_export_gcode_filename(extension, only_filename, export_all);
|
||||||
|
|||||||
@@ -469,6 +469,9 @@ public:
|
|||||||
// QDS
|
// QDS
|
||||||
//void show_action_buttons(const bool is_ready_to_slice) const;
|
//void show_action_buttons(const bool is_ready_to_slice) const;
|
||||||
|
|
||||||
|
//y49
|
||||||
|
wxString get_output_filename();
|
||||||
|
|
||||||
wxString get_project_filename(const wxString& extension = wxEmptyString) const;
|
wxString get_project_filename(const wxString& extension = wxEmptyString) const;
|
||||||
wxString get_export_gcode_filename(const wxString& extension = wxEmptyString, bool only_filename = false, bool export_all = false) const;
|
wxString get_export_gcode_filename(const wxString& extension = wxEmptyString, bool only_filename = false, bool export_all = false) const;
|
||||||
void set_project_filename(const wxString& filename);
|
void set_project_filename(const wxString& filename);
|
||||||
|
|||||||
@@ -4055,7 +4055,9 @@ void SelectMachineDialog::set_default()
|
|||||||
//project name
|
//project name
|
||||||
m_rename_switch_panel->SetSelection(0);
|
m_rename_switch_panel->SetSelection(0);
|
||||||
|
|
||||||
wxString filename = m_plater->get_export_gcode_filename("", true, m_print_plate_idx == PLATE_ALL_IDX ? true : false);
|
//y49
|
||||||
|
wxString filename = m_plater->get_output_filename();
|
||||||
|
|
||||||
if (m_print_plate_idx == PLATE_ALL_IDX && filename.empty()) {
|
if (m_print_plate_idx == PLATE_ALL_IDX && filename.empty()) {
|
||||||
filename = _L("Untitled");
|
filename = _L("Untitled");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1470,7 +1470,8 @@ void SendMultiMachinePage::set_default_normal(const ThumbnailData& data)
|
|||||||
|
|
||||||
void SendMultiMachinePage::set_default()
|
void SendMultiMachinePage::set_default()
|
||||||
{
|
{
|
||||||
wxString filename = m_plater->get_export_gcode_filename("", true, m_print_plate_idx == PLATE_ALL_IDX ? true : false);
|
//y49
|
||||||
|
wxString filename = m_plater->get_output_filename();
|
||||||
if (m_print_plate_idx == PLATE_ALL_IDX && filename.empty()) {
|
if (m_print_plate_idx == PLATE_ALL_IDX && filename.empty()) {
|
||||||
filename = _L("Untitled");
|
filename = _L("Untitled");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user