Merge branch 'main' into dev/p2s-pr

# Conflicts:
#	src/slic3r/GUI/DeviceErrorDialog.cpp
This commit is contained in:
Noisyfox
2025-11-09 12:35:32 +08:00
48 changed files with 3533 additions and 3528 deletions

View File

@@ -708,7 +708,7 @@ void PrintConfigDef::init_common_params()
def = this->add("preferred_orientation", coFloat);
def->label = L("Preferred orientation");
def->tooltip = L("Automatically orient stls on the Z axis upon initial import.");
def->tooltip = L("Automatically orient STL files on the Z axis upon initial import.");
def->sidetext = u8"°"; // degrees, don't need translation
def->max = 360;
def->min = -360;
@@ -1964,7 +1964,7 @@ void PrintConfigDef::init_fff_params()
"then the external perimeter and, finally, the first internal perimeter. "
"This option is recommended against the Outer/Inner option in most cases.\n\n"
"Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. "
"However, the z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface.\n\n ");
"However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface.");
def->enum_keys_map = &ConfigOptionEnum<WallSequence>::get_enum_values();
def->enum_values.push_back("inner wall/outer wall");
def->enum_values.push_back("outer wall/inner wall");
@@ -2290,14 +2290,16 @@ void PrintConfigDef::init_fff_params()
def->set_default_value(new ConfigOptionInts{1});
def = this->add("physical_extruder_map",coInts);
// internal use only, don't need translation
def->label = "Map the logical extruder to physical extruder";
def->tooltip = "Map the logical extruder to physical extruder.";
def->mode = comDevelop;
def->set_default_value(new ConfigOptionInts{0});
def = this->add("filament_map_mode", coEnum);
def->label = L("filament mapping mode");
def->tooltip = ("Filament mapping mode used as plate param.");
def = this->add("filament_map_mode", coEnum);
// internal use only, don't need translation
def->label = "filament mapping mode";
def->tooltip = "Filament mapping mode used as plate param.";
def->enum_keys_map = &ConfigOptionEnum<FilamentMapMode>::get_enum_values();
def->enum_values.push_back("Auto For Flush");
def->enum_values.push_back("Auto For Match");
@@ -2441,10 +2443,9 @@ void PrintConfigDef::init_fff_params()
def = this->add("filament_shrink", coPercents);
def->label = L("Shrinkage (XY)");
// xgettext:no-c-format, no-boost-format
def->tooltip = L("Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm)."
" The part will be scaled in xy to compensate."
" Only the filament used for the perimeter is taken into account."
"\nBe sure to allow enough space between objects, as this compensation is done after the checks.");
def->tooltip = L("Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm). "
"The part will be scaled in XY to compensate. Only the filament used for the perimeter is taken into account.\n"
"Be sure to allow enough space between objects, as this compensation is done after the checks.");
def->sidetext = "%";
def->ratio_over = "";
def->min = 50;
@@ -3288,7 +3289,7 @@ void PrintConfigDef::init_fff_params()
// BBS
def = this->add("precise_z_height", coBool);
def->label = L("Precise Z height");
def->tooltip = L("Enable this to get precise z height of object after slicing. "
def->tooltip = L("Enable this to get precise Z height of object after slicing. "
"It will get the precise object height by fine-tuning the layer heights of the last few layers. "
"Note that this is an experimental parameter.");
def->mode = comAdvanced;
@@ -4719,8 +4720,9 @@ void PrintConfigDef::init_fff_params()
def->set_default_value(new ConfigOptionEnumsGeneric{RetractLiftEnforceType ::rletAllSurfaces});
def = this->add("extruder_type", coEnums);
def->label = L("Type");
def->tooltip = ("This setting is only used for initial value of manual calibration of pressure advance. Bowden extruder usually has larger pa value. This setting doesn't influence normal slicing.");
// internal use only, don't need translation
def->label = "Type";
def->tooltip = "This setting is only used for initial value of manual calibration of pressure advance. Bowden extruder usually has larger PA value. This setting doesn't influence normal slicing.";
def->enum_keys_map = &ConfigOptionEnum<ExtruderType>::get_enum_values();
def->enum_values.push_back("Direct Drive");
def->enum_values.push_back("Bowden");
@@ -4731,8 +4733,9 @@ void PrintConfigDef::init_fff_params()
//BBS
def = this->add("nozzle_volume_type", coEnums);
def->label = L("Nozzle Volume Type");
def->tooltip = ("Nozzle volume type.");
// internal use only, don't need translation
def->label = "Nozzle Volume Type";
def->tooltip = "Nozzle volume type for extruders.";
def->enum_keys_map = &ConfigOptionEnum<NozzleVolumeType>::get_enum_values();
def->enum_values.push_back(L("Standard"));
def->enum_values.push_back(L("High Flow"));
@@ -4742,8 +4745,9 @@ void PrintConfigDef::init_fff_params()
def->set_default_value(new ConfigOptionEnumsGeneric{ NozzleVolumeType::nvtStandard });
def = this->add("default_nozzle_volume_type", coEnums);
def->label = L("Default Nozzle Volume Type.");
def->tooltip = ("Default Nozzle volume type for extruders in this printer.");
// internal use only, don't need translation
def->label = "Default Nozzle Volume Type.";
def->tooltip = "Default Nozzle volume type for extruders in this printer.";
def->enum_keys_map = &ConfigOptionEnum<NozzleVolumeType>::get_enum_values();
def->enum_values.push_back(L("Standard"));
def->enum_values.push_back(L("High Flow"));
@@ -4753,40 +4757,47 @@ void PrintConfigDef::init_fff_params()
def->set_default_value(new ConfigOptionEnumsGeneric{ NozzleVolumeType::nvtStandard });
def = this->add("extruder_variant_list", coStrings);
// internal use only, don't need translation
def->label = "Extruder variant list";
def->tooltip = "Extruder variant list.";
def->set_default_value(new ConfigOptionStrings { "Direct Drive Standard" });
def->cli = ConfigOptionDef::nocli;
def = this->add("extruder_ams_count", coStrings);
def->label = "Extruder ams count";
def->tooltip = "Ams counts of per extruder.";
// internal use only, don't need translation
def->label = "Extruder AMS count";
def->tooltip = "AMS counts per extruder.";
def->set_default_value(new ConfigOptionStrings { });
def = this->add("printer_extruder_id", coInts);
// internal use only, don't need translation
def->label = "Printer extruder id";
def->tooltip = "Printer extruder id.";
def->set_default_value(new ConfigOptionInts { 1 });
def->cli = ConfigOptionDef::nocli;
def = this->add("printer_extruder_variant", coStrings);
// internal use only, don't need translation
def->label = "Printer's extruder variant";
def->tooltip = "Printer's extruder variant.";
def->set_default_value(new ConfigOptionStrings { "Direct Drive Standard" });
def->cli = ConfigOptionDef::nocli;
def = this->add("master_extruder_id", coInt);
// internal use only, don't need translation
def->label = "Master extruder id";
def->tooltip = "Default extruder id to place filament.";
def->set_default_value(new ConfigOptionInt{ 1 });
def = this->add("print_extruder_id", coInts);
// internal use only, don't need translation
def->label = "Print extruder id";
def->tooltip = "Print extruder id.";
def->set_default_value(new ConfigOptionInts { 1 });
def->cli = ConfigOptionDef::nocli;
def = this->add("print_extruder_variant", coStrings);
// internal use only, don't need translation
def->label = "Print's extruder variant";
def->tooltip = "Print's extruder variant.";
def->set_default_value(new ConfigOptionStrings { "Direct Drive Standard" });
@@ -4799,12 +4810,14 @@ void PrintConfigDef::init_fff_params()
def->cli = ConfigOptionDef::nocli;*/
def = this->add("filament_extruder_variant", coStrings);
// internal use only, don't need translation
def->label = "Filament's extruder variant";
def->tooltip = "Filament's extruder variant.";
def->set_default_value(new ConfigOptionStrings { "Direct Drive Standard" });
def->cli = ConfigOptionDef::nocli;
def = this->add("filament_self_index", coInts);
// internal use only, don't need translation
def->label = "Filament self index";
def->tooltip = "Filament self index.";
def->set_default_value(new ConfigOptionInts { 1 });
@@ -5167,7 +5180,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("spiral_mode", coBool);
def->label = L("Spiral vase");
def->tooltip = L("Spiralize smooths out the z moves of the outer contour. "
def->tooltip = L("Spiralize smooths out the Z moves of the outer contour. "
"And turns a solid model into a single walled print with solid bottom layers. "
"The final generated model has no seam.");
def->mode = comSimple;
@@ -5382,7 +5395,7 @@ void PrintConfigDef::init_fff_params()
def->set_default_value(new ConfigOptionEnum<SupportType>(stNormalAuto));
def = this->add("support_object_xy_distance", coFloat);
def->label = L("Support/object xy distance");
def->label = L("Support/object XY distance");
def->category = L("Support");
def->tooltip = L("XY separation between an object and its support.");
def->sidetext = "mm"; // milimeters, don't need translation
@@ -5682,7 +5695,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("independent_support_layer_height", coBool);
def->label = L("Independent support layer height");
def->category = L("Support");
def->tooltip = L("Support layer uses layer height independent with object layer. This is to support customizing z-gap and save print time. "
def->tooltip = L("Support layer uses layer height independent with object layer. This is to support customizing Z-gap and save print time. "
"This option will be invalid when the prime tower is enabled.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(true));
@@ -9557,7 +9570,7 @@ CLIActionsConfigDef::CLIActionsConfigDef()
def = this->add("uptodate", coBool);
def->label = L("UpToDate");
def->tooltip = L("Update the configs values of 3mf to latest.");
def->tooltip = L("Update the config values of 3MF to latest.");
def->cli = "uptodate";
def->set_default_value(new ConfigOptionBool(false));
@@ -9575,7 +9588,7 @@ CLIActionsConfigDef::CLIActionsConfigDef()
def = this->add("min_save", coBool);
def->label = L("Minimum save");
def->tooltip = L("export 3mf with minimum size.");
def->tooltip = L("Export 3MF with minimum size.");
def->cli_params = "option";
def->set_default_value(new ConfigOptionBool(false));
@@ -9909,44 +9922,45 @@ CLIMiscConfigDef::CLIMiscConfigDef()
def->set_default_value(new ConfigOptionBool(false));
def = this->add("skip_modified_gcodes", coBool);
def->label = L("Skip modified G-code in 3mf");
def->tooltip = L("Skip the modified G-code in 3mf from Printer or filament Presets.");
def->label = L("Skip modified G-code in 3MF");
def->tooltip = L("Skip the modified G-code in 3MF from printer or filament presets.");
def->cli_params = "option";
def->set_default_value(new ConfigOptionBool(false));
def = this->add("makerlab_name", coString);
def->label = L("MakerLab name");
def->tooltip = L("MakerLab name to generate this 3mf.");
def->tooltip = L("MakerLab name to generate this 3MF.");
def->cli_params = "name";
def->set_default_value(new ConfigOptionString());
def = this->add("makerlab_version", coString);
def->label = L("MakerLab version");
def->tooltip = L("MakerLab version to generate this 3mf.");
def->tooltip = L("MakerLab version to generate this 3MF.");
def->cli_params = "version";
def->set_default_value(new ConfigOptionString());
def = this->add("metadata_name", coStrings);
def->label = L("metadata name list");
def->tooltip = L("metadata name list added into 3mf.");
def->label = L("Metadata name list");
def->tooltip = L("Metadata name list added into 3MF.");
def->cli_params = "\"name1;name2;...\"";
def->set_default_value(new ConfigOptionStrings());
def = this->add("metadata_value", coStrings);
def->label = L("metadata value list");
def->tooltip = L("metadata value list added into 3mf.");
def->label = L("Metadata value list");
def->tooltip = L("Metadata value list added into 3MF.");
def->cli_params = "\"value1;value2;...\"";
def->set_default_value(new ConfigOptionStrings());
def = this->add("allow_newer_file", coBool);
def->label = L("Allow 3mf with newer version to be sliced");
def->tooltip = L("Allow 3mf with newer version to be sliced.");
def->label = L("Allow 3MF with newer version to be sliced");
def->tooltip = L("Allow 3MF with newer version to be sliced.");
def->cli_params = "option";
def->set_default_value(new ConfigOptionBool(false));
def = this->add("allow_mix_temp", coBool);
// internal use only, don't need translation
def->label = "Allow filaments with high/low temperature to be printed together";
def->tooltip = "Allow filaments with high/low temperature to be printed together";
def->tooltip = "Allow filaments with high/low temperature to be printed together.";
def->cli_params = "option";
def->set_default_value(new ConfigOptionBool(false));
}
@@ -10134,7 +10148,7 @@ ObjectsInfoConfigDef::ObjectsInfoConfigDef()
def->label = L("Scale per object");
def->tooltip = L("Contains a string with the information about what scaling was applied to the individual objects. "
"Indexing of the objects is zero-based (first object has index 0).\n"
"Example: 'x:100% y:50% z:100'.");
"Example: 'x:100% y:50% z:100%'.");
def = this->add("input_filename_base", coString);
def->label = L("Input filename without extension");
@@ -10148,8 +10162,8 @@ DimensionsConfigDef::DimensionsConfigDef()
{
ConfigOptionDef* def;
const std::string point_tooltip = L("The vector has two elements: x and y coordinate of the point. Values in mm.");
const std::string bb_size_tooltip = L("The vector has two elements: x and y dimension of the bounding box. Values in mm.");
const std::string point_tooltip = L("The vector has two elements: X and Y coordinate of the point. Values in mm.");
const std::string bb_size_tooltip = L("The vector has two elements: X and Y dimension of the bounding box. Values in mm.");
def = this->add("first_layer_print_convex_hull", coPoints);
def->label = L("First layer convex hull");

View File

@@ -229,7 +229,7 @@ void BedShapePanel::build_panel(const Pointfs& default_pt, const std::string& cu
Line line{ "", "" };
line.full_width = 1;
line.widget = [this](wxWindow* parent) {
Button* shape_btn = new Button(parent, _L("Load shape from STL ..."));
Button* shape_btn = new Button(parent, _L("Load shape from STL..."));
shape_btn->SetStyle(ButtonStyle::Regular, ButtonType::Expanded);
wxSizer* shape_sizer = new wxBoxSizer(wxHORIZONTAL);

View File

@@ -175,10 +175,10 @@ void DeviceErrorDialog::init_button_list()
init_button(PROBLEM_SOLVED_RESUME, _L("Problem Solved and Resume"));
init_button(TURN_OFF_FIRE_ALARM, _L("Got it, Turn off the Fire Alarm."));
init_button(RETRY_PROBLEM_SOLVED, _L("Retry (problem solved)"));
init_button(CANCLE, _L("Cancle"));
init_button(CANCLE, _L("Cancel"));
init_button(STOP_DRYING, _L("Stop Drying"));
init_button(PROCEED, _L("Proceed"));
init_button(DBL_CHECK_CANCEL, _L("Cancle"));
init_button(DBL_CHECK_CANCEL, _L("Cancel"));
init_button(DBL_CHECK_DONE, _L("Done"));
init_button(DBL_CHECK_RETRY, _L("Retry"));
init_button(DBL_CHECK_RESUME, _L("Resume"));

View File

@@ -142,15 +142,15 @@ wxString Slic3r::get_stage_string(int stage)
case 35:
return _L("Pause (nozzle clog)");
case 36:
return _L("Measuring motion percision");
return _L("Measuring motion precision");
case 37:
return _L("Enhancing motion percision");
return _L("Enhancing motion precision");
case 38:
return _L("Measure motion accuracy");
case 39:
return _L("Nozzle offset calibration");
case 40:
return _L("high temperature auto bed levelling");
return _L("high temperature auto bed leveling");
case 41:
return _L("Auto Check: Quick Release Lever");
case 42:

View File

@@ -63,7 +63,7 @@ FilamentMapManualPanel::FilamentMapManualPanel(wxWindow *p
top_sizer->Add(drag_sizer, 0, wxALIGN_CENTER | wxEXPAND);
m_tips = new Label(this, _L("Tips: You can drag the filaments to reassign them to different nozzles."));
m_tips = new Label(this, _L("Tip: You can drag the filaments to reassign them to different nozzles."));
m_tips->SetFont(Label::Body_14);
m_tips->SetForegroundColour(TextNormalGreyColor);
top_sizer->AddSpacer(FromDIP(20));

View File

@@ -34,6 +34,7 @@
#include "DailyTips.hpp"
#include "FilamentMapDialog.hpp"
#include "slic3r/GUI/CameraUtils.hpp"
#include "slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp"
#include "slic3r/Utils/UndoRedo.hpp"
#include "slic3r/Utils/MacDarkMode.hpp"
@@ -4694,6 +4695,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
m_camera_movement = true;
m_mouse.drag.start_position_2D = pos;
m_mouse.drag.move_start_threshold_position_2D = pos;
}
}
else if ((evt.LeftUp() || evt.MiddleUp() || evt.RightUp()) ||
@@ -9376,12 +9378,18 @@ Vec3d GLCanvas3D::_mouse_to_3d(const Point& mouse_pos, float* z)
if (m_canvas == nullptr)
return Vec3d(DBL_MAX, DBL_MAX, DBL_MAX);
const Camera& camera = wxGetApp().plater()->get_camera();
if (z == nullptr) {
const SceneRaycaster::HitResult hit = m_scene_raycaster.hit(mouse_pos.cast<double>(), wxGetApp().plater()->get_camera(), nullptr);
const SceneRaycaster::HitResult hit = m_scene_raycaster.hit(mouse_pos.cast<double>(), camera, nullptr);
return hit.is_valid() ? hit.position.cast<double>() : _mouse_to_bed_3d(mouse_pos);
}
// Orca: Handling of the particular case, if we want to get the position for Z = 0
else if (is_approx(static_cast<double>(*z), 0.)) {
Vec2d position = CameraUtils::get_z0_position(camera, Vec2d(mouse_pos.x(), mouse_pos.y()));
return Vec3d(position.x(), position.y(), *z);
}
else {
const Camera& camera = wxGetApp().plater()->get_camera();
const Vec4i32 viewport(camera.get_viewport().data());
Vec3d out;
igl::unproject(Vec3d(mouse_pos.x(), viewport[3] - mouse_pos.y(), *z), camera.get_view_matrix().matrix(), camera.get_projection_matrix().matrix(), viewport, out);
@@ -10068,7 +10076,7 @@ void GLCanvas3D::_set_warning_notification(EWarning warning, bool state)
std::string objName2 = m_gcode_viewer.m_conflict_result.value()._objName2;
double height = m_gcode_viewer.m_conflict_result.value()._height;
int layer = m_gcode_viewer.m_conflict_result.value().layer;
text = (boost::format(_u8L("Conflicts of G-code paths have been found at layer %d, z = %.2lf mm. Please separate the conflicted objects farther (%s <-> %s).")) % layer %
text = (boost::format(_u8L("Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s).")) % layer %
height % objName1 % objName2)
.str();
prevConflictText = text;
@@ -10134,7 +10142,7 @@ void GLCanvas3D::_set_warning_notification(EWarning warning, bool state)
text += (boost::format(_u8L("Filament %s is placed in the %s, but the generated G-code path exceeds the printable range of the %s.")) %filaments %extruder_name %extruder_name).str();
}
else {
text += (boost::format(_u8L("Filaments %s is placed in the %s, but the generated G-code path exceeds the printable range of the %s.")) %filaments %extruder_name %extruder_name).str();
text += (boost::format(_u8L("Filaments %s are placed in the %s, but the generated G-code path exceeds the printable range of the %s.")) %filaments %extruder_name %extruder_name).str();
}
}
error = ErrorType::SLICING_LIMIT_ERROR;
@@ -10186,7 +10194,7 @@ void GLCanvas3D::_set_warning_notification(EWarning warning, bool state)
if (error_iter->second.size() == 1) {
text += (boost::format(_u8L("Filament %s is placed in the %s, but the generated G-code path exceeds the printable height of the %s.")) % filaments % extruder_name % extruder_name).str();
} else {
text += (boost::format(_u8L("Filaments %s is placed in the %s, but the generated G-code path exceeds the printable height of the %s.")) % filaments % extruder_name % extruder_name).str();
text += (boost::format(_u8L("Filaments %s are placed in the %s, but the generated G-code path exceeds the printable height of the %s.")) % filaments % extruder_name % extruder_name).str();
}
}
if (!text.empty()) {

View File

@@ -3783,7 +3783,7 @@ void GUI_App::load_project(wxWindow *parent, wxString& input_file) const
{
input_file.Clear();
wxFileDialog dialog(parent ? parent : GetTopWindow(),
_L("Choose one file (3mf):"),
_L("Choose one file (3MF):"),
app_config->get_last_dir(), "",
file_wildcards(FT_PROJECT), wxFD_OPEN | wxFD_FILE_MUST_EXIST);
@@ -3796,9 +3796,9 @@ void GUI_App::import_model(wxWindow *parent, wxArrayString& input_files) const
input_files.Clear();
wxFileDialog dialog(parent ? parent : GetTopWindow(),
#ifdef __APPLE__
_L("Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):"),
_L("Choose one or more files (3MF/STEP/STL/SVG/OBJ/AMF/USD*/ABC/PLY):"),
#else
_L("Choose one or more files (3mf/step/stl/svg/obj/amf):"),
_L("Choose one or more files (3MF/STEP/STL/SVG/OBJ/AMF):"),
#endif
from_u8(app_config->get_last_dir()), "",
file_wildcards(FT_MODEL), wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST);
@@ -3822,7 +3822,7 @@ void GUI_App::load_gcode(wxWindow* parent, wxString& input_file) const
{
input_file.Clear();
wxFileDialog dialog(parent ? parent : GetTopWindow(),
_L("Choose one file (gcode/3mf):"),
_L("Choose one file (GCODE/3MF):"),
app_config->get_last_dir(), "",
file_wildcards(FT_GCODE), wxFD_OPEN | wxFD_FILE_MUST_EXIST);

View File

@@ -2873,10 +2873,10 @@ void GLGizmoEmboss::draw_advanced()
m_imgui->disabled_end(); // allowe_surface_distance
// slider for Clock-wise angle in degress
// slider for Clockwise angle in degress
// stored angle is optional CCW and in radians
// Convert stored value to degress
// minus create clock-wise roation from CCW
// minus create clockwise roation from CCW
float angle = current_style.angle.value_or(0.f);
float angle_deg = static_cast<float>(-angle * 180 / M_PI);
float def_angle_deg_val =
@@ -2886,7 +2886,7 @@ void GLGizmoEmboss::draw_advanced()
&def_angle_deg_val : nullptr;
if (rev_slider(tr.rotation, angle_deg, def_angle_deg, _u8L("Undo rotation"),
limits.angle.min, limits.angle.max, u8"%.2f °",
_L("Rotate text Clock-wise."))) {
_L("Rotate text Clockwise."))) {
// convert back to radians and CCW
double angle_rad = -angle_deg * M_PI / 180.0;
Geometry::to_range_pi_pi(angle_rad);

View File

@@ -619,7 +619,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott
m_imgui->text(m_desc["height_range"] + ":");
ImGui::SameLine(height_max_width);
ImGui::PushItemWidth(sliders_width);
std::string format_str = std::string("%.2f") + I18N::translate_utf8("mm", "Heigh range," "Facet in [cursor z, cursor z + height] will be selected.");
std::string format_str = std::string("%.2f") + I18N::translate_utf8("mm", "Height range," "Facet in [cursor z, cursor z + height] will be selected.");
m_imgui->bbl_slider_float_style("##cursor_height", &m_cursor_height, CursorHeightMin, CursorHeightMax, format_str.data(), 1.0f, true);
ImGui::SameLine(drag_left_width + height_max_width);
ImGui::PushItemWidth(1.5 * slider_icon_width);

View File

@@ -1504,7 +1504,7 @@ void GLGizmoSVG::draw_filename(){
m_volume_shape.svg_file = svg_file_new; // clear data
}
} else if (ImGui::IsItemHovered()) {
tooltip = _u8L("Change to another .svg file");
tooltip = _u8L("Change to another SVG file.");
}
std::string forget_path = _u8L("Forget the file path");
@@ -1586,7 +1586,7 @@ void GLGizmoSVG::draw_filename(){
}
} else if (ImGui::IsItemHovered()) {
tooltip = _u8L("Save as '.svg' file");
tooltip = _u8L("Save as SVG file.");
}
//draw(get_icon(m_icons, IconType::save));
@@ -1885,13 +1885,13 @@ void GLGizmoSVG::draw_rotation()
ImGui::SameLine(m_gui_cfg->input_offset);
ImGui::SetNextItemWidth(m_gui_cfg->input_width);
// slider for Clock-wise angle in degress
// slider for Clockwise angle in degress
// stored angle is optional CCW and in radians
// Convert stored value to degress
// minus create clock-wise roation from CCW
// minus create clockwise roation from CCW
float angle = m_angle.value_or(0.f);
float angle_deg = static_cast<float>(-angle * 180 / M_PI);
if (m_imgui->slider_float("##angle", &angle_deg, limits.angle.min, limits.angle.max, u8"%.2f °", 1.f, false, _L("Rotate text Clock-wise."))){
if (m_imgui->slider_float("##angle", &angle_deg, limits.angle.min, limits.angle.max, u8"%.2f °", 1.f, false, _L("Rotate text Clockwise."))){
// convert back to radians and CCW
double angle_rad = -angle_deg * M_PI / 180.0;
Geometry::to_range_pi_pi(angle_rad);

View File

@@ -105,7 +105,7 @@ void OAuthJob::process(Ctl& ctl)
// Handle timeout
if (!received && ctl.was_canceled()) {
_data.result->error_message = _u8L("User cancelled.");
_data.result->error_message = _u8L("User canceled.");
} else {
// Wait a while to ensure the response has sent
std::this_thread::sleep_for(std::chrono::milliseconds(1500));

View File

@@ -2514,7 +2514,7 @@ void MainFrame::init_menubar_as_editor()
append_menu_item(export_menu, wxID_ANY, _L("Export all objects as STLs") + dots, _L("Export all objects as STLs"),
[this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(false, false, true); }, "menu_export_stl", nullptr,
[this](){return can_export_model(); }, this);
append_menu_item(export_menu, wxID_ANY, _L("Export Generic 3MF") + dots/* + "\t" + ctrl + "G"*/, _L("Export 3mf file without using some 3mf-extensions"),
append_menu_item(export_menu, wxID_ANY, _L("Export Generic 3MF") + dots/* + "\t" + ctrl + "G"*/, _L("Export 3MF file without using some 3mf-extensions."),
[this](wxCommandEvent&) { if (m_plater) m_plater->export_core_3mf(); }, "menu_export_sliced_file", nullptr,
[this](){return can_export_model(); }, this);
// BBS export .gcode.3mf

View File

@@ -83,7 +83,7 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent)
m_button_video = new ::Button(m_type_panel, _L("Video"), "", wxBORDER_NONE);
m_button_video->SetToolTip(_L("Switch to video files."));
m_button_model = new ::Button(m_type_panel, _L("Model"), "", wxBORDER_NONE);
m_button_video->SetToolTip(_L("Switch to 3mf model files."));
m_button_video->SetToolTip(_L("Switch to 3MF model files."));
for (auto b : {m_button_timelapse, m_button_video, m_button_model}) {
b->SetBackgroundColor(background);
b->SetCanFocus(false);

View File

@@ -548,7 +548,7 @@ void DeleteConfirmDialog::on_dpi_changed(const wxRect &suggested_rect) {}
Newer3mfVersionDialog::Newer3mfVersionDialog(wxWindow *parent, const Semver *file_version, const Semver *cloud_version, wxString new_keys)
: DPIDialog(parent ? parent : nullptr, wxID_ANY, wxString(SLIC3R_APP_FULL_NAME " - ") + _L("Newer 3mf version"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
: DPIDialog(parent ? parent : nullptr, wxID_ANY, wxString(SLIC3R_APP_FULL_NAME " - ") + _L("Newer 3MF version"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
, m_file_version(file_version)
, m_cloud_version(cloud_version)
, m_new_keys(new_keys)
@@ -584,15 +584,15 @@ wxBoxSizer *Newer3mfVersionDialog::get_msg_sizer()
wxBoxSizer * horizontal_sizer = new wxBoxSizer(wxHORIZONTAL);
wxString msg_str;
if (file_version_newer) {
text1 = new wxStaticText(this, wxID_ANY, _L("The 3mf file version is in Beta and it is newer than the current OrcaSlicer version."));
text1 = new wxStaticText(this, wxID_ANY, _L("The 3MF file version is in Beta and it is newer than the current OrcaSlicer version."));
wxStaticText * text2 = new wxStaticText(this, wxID_ANY, _L("If you would like to try Orca Slicer Beta, you may click to"));
wxHyperlinkCtrl *github_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Download Beta Version"), "https://github.com/bambulab/BambuStudio/releases");
horizontal_sizer->Add(text2, 0, wxEXPAND, 0);
horizontal_sizer->Add(github_link, 0, wxEXPAND | wxLEFT, 5);
} else {
text1 = new wxStaticText(this, wxID_ANY, _L("The 3mf file version is newer than the current Orca Slicer version."));
wxStaticText *text2 = new wxStaticText(this, wxID_ANY, _L("Update your Orca Slicer could enable all functionality in the 3mf file."));
text1 = new wxStaticText(this, wxID_ANY, _L("The 3MF file version is newer than the current OrcaSlicer version."));
wxStaticText *text2 = new wxStaticText(this, wxID_ANY, _L("Updating your OrcaSlicer could enable all functionality in the 3MF file."));
horizontal_sizer->Add(text2, 0, wxEXPAND, 0);
}
Semver app_version = *(Semver::parse(SLIC3R_VERSION));

View File

@@ -163,7 +163,7 @@ bool ObjColorDialog::Show(bool show) {
ObjColorDialog::ObjColorDialog(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, const std::vector<std::string> &extruder_colours)
: DPIDialog(parent ? parent : static_cast<wxWindow *>(wxGetApp().mainframe),
wxID_ANY,
_(L("Obj file Import color")),
_(L("OBJ file import color")),
wxDefaultPosition,
wxDefaultSize,
wxDEFAULT_DIALOG_STYLE /* | wxRESIZE_BORDER*/)
@@ -199,12 +199,12 @@ ObjColorDialog::ObjColorDialog(wxWindow *parent, Slic3r::ObjDialogInOut &in_out,
wxStaticText *error_mtl_title = new wxStaticText(this, wxID_ANY, _L("Some faces don't have color defined."));
if (!in_out.lost_material_name.empty()) {
error_mtl_title->SetLabel(_L("mtl file exist error,could not find the material:") + " " + in_out.lost_material_name + ".");
error_mtl_title->SetLabel(_L("MTL file exist error, could not find the material:") + " " + in_out.lost_material_name + ".");
}
error_mtl_title->SetFont(Label::Head_12);
error_mtl_sizer->Add(error_mtl_title, 0, wxALIGN_LEFT | wxBOTTOM | wxTOP, FromDIP(5));
wxStaticText *tip_title = new wxStaticText(this, wxID_ANY, _L("Please check obj or mtl file."));
wxStaticText *tip_title = new wxStaticText(this, wxID_ANY, _L("Please check OBJ or MTL file."));
tip_title->SetFont(Label::Head_12);
error_mtl_sizer->Add(tip_title, 0, wxALIGN_LEFT | wxBOTTOM | wxTOP, FromDIP(5));

View File

@@ -3159,7 +3159,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn)
wxGetApp().app_config ->set("ams_filament_ids", p->ams_list_device, ams_filament_ids);
if (!unknowns.empty()) {
MessageDialog dlg(this,
_L("There are some unknown or uncompatible filaments mapped to generic preset.\nPlease update Orca Slicer or restart Orca Slicer to check if there is an update to system presets.") + detail,
_L("There are some unknown or incompatible filaments mapped to generic preset.\nPlease update Orca Slicer or restart Orca Slicer to check if there is an update to system presets.") + detail,
_L("Sync filaments with AMS"), wxOK);
dlg.ShowModal();
}
@@ -5508,14 +5508,14 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
// do not reset the model config
load_config = false;
if(load_type != LoadType::LoadGeometry)
show_info(q, _L("The 3mf is not supported by OrcaSlicer, load geometry data only."), _L("Load 3mf"));
show_info(q, _L("The 3MF is not supported by OrcaSlicer, loading geometry data only."), _L("Load 3MF"));
}
// else if (load_config && (file_version.maj() != app_version.maj())) {
// // version mismatch, only load geometries
// load_config = false;
// if (!load_model) {
// // only load config case, return directly
// show_info(q, _L("The Config cannot be loaded."), _L("Load 3mf"));
// show_info(q, _L("The Config cannot be loaded."), _L("Load 3MF"));
// q->skip_thumbnail_invalid = false;
// return empty_result;
// }
@@ -5526,9 +5526,9 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
// q->select_plate(0);
// if (load_type != LoadType::LoadGeometry) {
// if (en_3mf_file_type == En3mfType::From_BBS)
// show_info(q, _L("The 3mf is generated by old Orca Slicer, load geometry data only."), _L("Load 3mf"));
// show_info(q, _L("The 3MF was generated by an old OrcaSlicer, loading geometry data only."), _L("Load 3MF"));
// else
// show_info(q, _L("The 3mf is not supported by OrcaSlicer, load geometry data only."), _L("Load 3mf"));
// show_info(q, _L("The 3MF is not supported by OrcaSlicer, loading geometry data only."), _L("Load 3MF"));
// }
// for (ModelObject *model_object : model.objects) {
// model_object->config.reset();
@@ -5562,7 +5562,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
} else if (load_config && (file_version > app_version)) {
if (config_substitutions.unrecogized_keys.size() > 0) {
wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, found following unrecognized keys:"),
wxString text = wxString::Format(_L("The 3MF file version %s is newer than %s's version %s, found the following unrecognized keys:"),
file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string());
text += "\n";
bool first = true;
@@ -5580,21 +5580,21 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
context += "\n\n";
// context += into_u8(append);
context += append;
show_info(q, context, _L("Newer 3mf version"));
show_info(q, context, _L("Newer 3MF version"));
}
else {
//if the minor version is not matched
if (file_version.min() != app_version.min()) {
wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software."),
wxString text = wxString::Format(_L("The 3MF file version %s is newer than %s's version %s, we suggest to upgrade your software."),
file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string());
text += "\n";
show_info(q, text, _L("Newer 3mf version"));
show_info(q, text, _L("Newer 3MF version"));
}
}
}
else if (load_config && config_loaded.empty()) {
load_config = false;
show_info(q, _L("The 3mf is generated by old OrcaSlicer, load geometry data only."), _L("Load 3mf"));
show_info(q, _L("The 3MF file was generated by an old OrcaSlicer version, loading geometry data only."), _L("Load 3MF"));
}
else if (!load_config) {
// reset config except color
@@ -5689,7 +5689,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format("%1%: %2%")%it->first %it->second;
//
NotificationManager *notify_manager = q->get_notification_manager();
std::string error_message = L("Invalid values found in the 3mf:");
std::string error_message = L("Invalid values found in the 3MF:");
error_message += "\n";
for (std::map<std::string, std::string>::iterator it=validity.begin(); it!=validity.end(); ++it)
error_message += "-" + it->first + ": " + it->second + "\n";
@@ -5780,8 +5780,8 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
for (std::set<std::string>::iterator it=modified_gcodes.begin(); it!=modified_gcodes.end(); ++it)
warning_message += "-" + *it + "\n";
warning_message += "\n";
//show_info(q, _L("The 3mf has the following modified G-code in filament or printer presets:") + warning_message + _L("Please confirm that all modified G-code is safe to prevent any damage to the machine!"), _L("Modified G-code"));
MessageDialog dlg(q, _L("The 3mf has the following modified G-code in filament or printer presets:") + warning_message + _L("Please confirm that all modified G-code is safe to prevent any damage to the machine!"), _L("Modified G-code"));
//show_info(q, _L("The 3MF has the following modified G-code in filament or printer presets:") + warning_message + _L("Please confirm that all modified G-code is safe to prevent any damage to the machine!"), _L("Modified G-code"));
MessageDialog dlg(q, _L("The 3MF has the following modified G-code in filament or printer presets:") + warning_message + _L("Please confirm that all modified G-code is safe to prevent any damage to the machine!"), _L("Modified G-code"));
dlg.show_dsa_button();
auto res = dlg.ShowModal();
if (dlg.get_checkbox_state())
@@ -5793,8 +5793,8 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
for (std::set<std::string>::iterator it=modified_gcodes.begin(); it!=modified_gcodes.end(); ++it)
warning_message += "-" + *it + "\n";
warning_message += "\n";
//show_info(q, _L("The 3mf has the following customized filament or printer presets:") + warning_message + _L("Please confirm that the G-code within these presets is safe to prevent any damage to the machine!"), _L("Customized Preset"));
MessageDialog dlg(q, _L("The 3mf has the following customized filament or printer presets:") + from_u8(warning_message)+ _L("Please confirm that the G-code within these presets is safe to prevent any damage to the machine!"), _L("Customized Preset"));
//show_info(q, _L("The 3MF has the following customized filament or printer presets:") + warning_message + _L("Please confirm that the G-code within these presets is safe to prevent any damage to the machine!"), _L("Customized Preset"));
MessageDialog dlg(q, _L("The 3MF has the following customized filament or printer presets:") + from_u8(warning_message)+ _L("Please confirm that the G-code within these presets is safe to prevent any damage to the machine!"), _L("Customized Preset"));
dlg.show_dsa_button();
auto res = dlg.ShowModal();
if (dlg.get_checkbox_state())
@@ -5982,7 +5982,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
if (!isUtf8StepFile) {
const auto no_warn = wxGetApp().app_config->get_bool("step_not_utf8_no_warn");
if (!no_warn) {
MessageDialog dlg(nullptr, _L("Name of components inside step file is not UTF8 format!") + "\n\n" + _L("The name may show garbage characters!"),
MessageDialog dlg(nullptr, _L("Name of components inside STEP file is not UTF8 format!") + "\n\n" + _L("The name may show garbage characters!"),
wxString(SLIC3R_APP_FULL_NAME " - ") + _L("Attention!"), wxOK | wxICON_INFORMATION);
dlg.show_dsa_button(_L("Remember my choice."));
dlg.ShowModal();
@@ -11410,7 +11410,7 @@ void Plater::import_model_id(wxString download_info)
int res = 0;
std::string http_body;
msg = _L("prepare 3mf file...");
msg = _L("prepare 3MF file...");
//gets the number of files with the same name
std::vector<wxString> vecFiles;

View File

@@ -1193,7 +1193,7 @@ void PreferencesDialog::create_items()
std::vector<wxString> projectLoadSettingsBehaviourOptions = {_L("Load All"), _L("Ask When Relevant"), _L("Always Ask"), _L("Load Geometry Only")};
std::vector<string> projectLoadSettingsConfigOptions = { OPTION_PROJECT_LOAD_BEHAVIOUR_LOAD_ALL, OPTION_PROJECT_LOAD_BEHAVIOUR_ASK_WHEN_RELEVANT, OPTION_PROJECT_LOAD_BEHAVIOUR_ALWAYS_ASK, OPTION_PROJECT_LOAD_BEHAVIOUR_LOAD_GEOMETRY };
auto item_project_load = create_item_combobox(_L("Load behaviour"), _L("Should printer/filament/process settings be loaded when opening a .3mf?"), SETTING_PROJECT_LOAD_BEHAVIOUR, projectLoadSettingsBehaviourOptions, projectLoadSettingsConfigOptions);
auto item_project_load = create_item_combobox(_L("Load behaviour"), _L("Should printer/filament/process settings be loaded when opening a 3MF file?"), SETTING_PROJECT_LOAD_BEHAVIOUR, projectLoadSettingsBehaviourOptions, projectLoadSettingsConfigOptions);
g_sizer->Add(item_project_load);
auto item_max_recent_count = create_item_input(_L("Maximum recent files"), "", _L("Maximum count of recent files"), "max_recent_count", [](wxString value) {
@@ -1359,13 +1359,13 @@ void PreferencesDialog::create_items()
//// ASSOCIATE > Extensions
g_sizer->Add(create_item_title(_L("Associate files to OrcaSlicer")), 1, wxEXPAND);
auto item_associate_3mf = create_item_checkbox(_L("Associate .3mf files to OrcaSlicer"), _L("If enabled, sets OrcaSlicer as default application to open .3mf files") , "associate_3mf");
auto item_associate_3mf = create_item_checkbox(_L("Associate 3MF files to OrcaSlicer"), _L("If enabled, sets OrcaSlicer as default application to open 3MF files.") , "associate_3mf");
g_sizer->Add(item_associate_3mf);
auto item_associate_stl = create_item_checkbox(_L("Associate .stl files to OrcaSlicer"), _L("If enabled, sets OrcaSlicer as default application to open .stl files") , "associate_stl");
auto item_associate_stl = create_item_checkbox(_L("Associate STL files to OrcaSlicer"), _L("If enabled, sets OrcaSlicer as default application to open STL files.") , "associate_stl");
g_sizer->Add(item_associate_stl);
auto item_associate_step = create_item_checkbox(_L("Associate .step/.stp files to OrcaSlicer"), _L("If enabled, sets OrcaSlicer as default application to open .step files"), "associate_step");
auto item_associate_step = create_item_checkbox(_L("Associate STEP files to OrcaSlicer"), _L("If enabled, sets OrcaSlicer as default application to open STEP files."), "associate_step");
g_sizer->Add(item_associate_step);
//// ASSOCIATE > WebLinks

View File

@@ -19,8 +19,8 @@ namespace GUI {
static wxString PUBLISH_STEP_STRING[STEP_COUNT] = {
_L("Slice all plate to obtain time and filament estimation"),
_L("Packing project data into 3mf file"),
_L("Uploading 3mf"),
_L("Packing project data into 3MF file"),
_L("Uploading 3MF"),
_L("Jump to model publish web page")
};
@@ -136,7 +136,7 @@ void PublishDialog::cancel()
{
m_was_cancelled = true;
m_btn_cancel->Enable(false);
m_text_progress->SetLabelText(_L("Publish was cancelled"));
m_text_progress->SetLabelText(_L("Publish was canceled"));
wxCloseEvent evt;
this->on_close(evt);
}

View File

@@ -965,7 +965,7 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e)
if (m_valid_type == Valid && new_dev_name.length() > 32)
{
info_line = _L("The name is not allowed to exceeds 32 characters.");
info_line = _L("The name is not allowed to exceed 32 characters.");
m_valid_type = NoValid;
}

View File

@@ -1299,7 +1299,7 @@ wxPanel* SendMultiMachinePage::create_page()
//m_table_head_sizer->Add(m_task_status, 0, wxALIGN_CENTER_VERTICAL, 0);
m_ams = new Button(m_table_head_panel, _L("Ams Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SINGLE_SIZE, false);
m_ams = new Button(m_table_head_panel, _L("AMS Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SINGLE_SIZE, false);
m_ams->SetBackgroundColor(head_bg);
m_ams->SetCornerRadius(0);
m_ams->SetFont(TABLE_HEAD_FONT);

View File

@@ -728,7 +728,7 @@ bool SendSystemInfoDialog::send_info(wxString& message)
if (job_done) // UI thread wants us to cancel.
cancel = true;
if (cancel)
//result = { Result::Cancelled, _L("Sending system info was cancelled.") };
//result = { Result::Cancelled, _L("Sending system info was canceled.") };
result = {Result::Cancelled, wxEmptyString};
})
.perform_sync();

View File

@@ -3532,14 +3532,14 @@ void StatusPanel::update_ams_control_state(std::string ams_id, std::string slot_
for (auto ext : obj->GetExtderSystem()->GetExtruders()) {
if (ext.GetSlotNow().ams_id == ams_id && ext.GetSlotNow().slot_id == slot_id)
{
load_error_info = _L("Current slot has alread been loaded");
load_error_info = _L("Current slot has already been loaded");
}
}
} else {
for (auto ext : obj->GetExtderSystem()->GetExtruders()) {
if (ext.GetSlotNow().ams_id == ams_id && ext.GetSlotNow().slot_id == slot_id)
{
load_error_info = _L("Current slot has alread been loaded");
load_error_info = _L("Current slot has already been loaded");
}
}

View File

@@ -1720,14 +1720,14 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value)
wxString msg_text;
if (!is_soluble_filament(interface_filament_id)) {
msg_text = _L("When using support material for the support interface, we recommend the following settings:\n"
"0 top Z distance, 0 interface spacing, interlaced rectilinear pattern and disable independent support layer height");
"0 top Z distance, 0 interface spacing, interlaced rectilinear pattern and disable independent support layer height.");
msg_text += "\n\n" + _L("Change these settings automatically?\n"
"Yes - Change these settings automatically\n"
"No - Do not change these settings for me");
} else {
msg_text = _L("When using soluble material for the support interface, We recommend the following settings:\n"
"0 top z distance, 0 interface spacing, interlaced rectilinear pattern, disable independent support layer height \n"
"and use soluble materials for both support interface and support base");
msg_text = _L("When using soluble material for the support interface, we recommend the following settings:\n"
"0 top Z distance, 0 interface spacing, interlaced rectilinear pattern, disable independent support layer height\n"
"and use soluble materials for both support interface and support base.");
msg_text += "\n\n" + _L("Change these settings automatically? \n"
"Yes - Change these settings automatically\n"
"No - Do not change these settings for me");

View File

@@ -784,7 +784,7 @@ void FanControlPopupNew::UpdatePartSubMode()
m_cooling_filter_switch_panel->Bind(EVT_FANCTRL_SWITCH, [this] (wxCommandEvent& evt)
{
if (m_obj && m_obj->is_in_printing()) {
MessageDialog msg_wingow(nullptr, _L("Enabling filtration during printing may reduce cooling and affect print qulity. Please choose carefully"), "", wxICON_WARNING | wxCANCEL | wxOK);
MessageDialog msg_wingow(nullptr, _L("Enabling filtration during printing may reduce cooling and affect print quality. Please choose carefully."), "", wxICON_WARNING | wxCANCEL | wxOK);
msg_wingow.SetButtonLabel(wxID_OK, _L("Change Anyway"));
if (msg_wingow.ShowModal() != wxID_OK) { return; }
}

View File

@@ -116,7 +116,7 @@ void FilamentLoad::SetFilamentStep(FilamentStep item_idx, FilamentStepType f_typ
}
}
wxString slot_info = L"Ams-";
wxString slot_info = L"AMS-";
slot_info = slot_info + std::to_string(m_ams_id);
slot_info = slot_info + L'-';
slot_info = slot_info + std::to_string(m_slot_id);

View File

@@ -53,7 +53,7 @@ extern "C"{
namespace Slic3r {
static std::string saving_failed_str = L("Saving objects into the 3mf failed.");
static std::string saving_failed_str = L("Saving objects into the 3MF failed.");
HMODULE s_hRuntimeObjectLibrary = nullptr;
FunctionRoInitialize s_RoInitialize = nullptr;
@@ -372,7 +372,7 @@ bool fix_model_by_win10_sdk_gui(ModelObject &model_object, int volume_idx, GUI::
mo->add_instance();
if (!Slic3r::store_3mf(path_src.string().c_str(), &model, nullptr, false, nullptr, false)) {
boost::filesystem::remove(path_src);
throw Slic3r::RuntimeError(L("Exporting 3mf file failed"));
throw Slic3r::RuntimeError(L("Exporting 3MF file failed"));
}
model.clear_objects();
model.clear_materials();
@@ -388,15 +388,15 @@ bool fix_model_by_win10_sdk_gui(ModelObject &model_object, int volume_idx, GUI::
bool loaded = Slic3r::load_3mf(path_dst.string().c_str(), config, config_substitutions, &model, false);
boost::filesystem::remove(path_dst);
if (! loaded)
throw Slic3r::RuntimeError(L("Import 3mf file failed"));
throw Slic3r::RuntimeError(L("Import 3MF file failed"));
if (model.objects.size() == 0)
throw Slic3r::RuntimeError(L("Repaired 3mf file does not contain any object"));
throw Slic3r::RuntimeError(L("Repaired 3MF file does not contain any object"));
if (model.objects.size() > 1)
throw Slic3r::RuntimeError(L("Repaired 3mf file contains more than one object"));
throw Slic3r::RuntimeError(L("Repaired 3MF file contains more than one object"));
if (model.objects.front()->volumes.size() == 0)
throw Slic3r::RuntimeError(L("Repaired 3mf file does not contain any volume"));
throw Slic3r::RuntimeError(L("Repaired 3MF file does not contain any volume"));
if (model.objects.front()->volumes.size() > 1)
throw Slic3r::RuntimeError(L("Repaired 3mf file contains more than one volume"));
throw Slic3r::RuntimeError(L("Repaired 3MF file contains more than one volume"));
meshes_repaired.emplace_back(std::move(model.objects.front()->volumes.front()->mesh()));
}
for (size_t i = 0; i < volumes.size(); ++ i) {