Merge remote-tracking branch 'upstream/main' into local-fp

This commit is contained in:
Aidan Case
2024-02-21 21:03:08 -06:00
19 changed files with 706 additions and 274 deletions

View File

@@ -1,23 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Which printers will be beneficial to this feature**
E.g. Voron/Klipper based printer/etc...
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,66 @@
name: 🚀 Feature Request / Enhancement
description: Suggest an improvement to make Orca Slicer even better!
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this feature request!
If your idea is still at the formulation stage, or you're not sure it would
be useful to many users, you can raise it as a discussion topic under [Ideas](https://github.com/SoftFever/OrcaSlicer/discussions/categories/ideas)
or you can raise it on the [Discord server](https://discord.gg/P4VE9UY9gJ).
- type: checkboxes
attributes:
label: Is there an existing issue for this feature request?
description: |
Please search to see if an issue already exists for a feature, or perhaps one similar.
You can then comment and react so that we know know much interest there is in the feature request.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Is your feature request related to a problem?
description: A clear and concise description of what the problem is.
placeholder: I'm always frustrated when [...]
validations:
required: true
- type: dropdown
attributes:
label: Which printers will be beneficial to this feature?
description: Select affected printer firmware type.
multiple: true
options:
- Klipper
- Marlin
- Others
- All
validations:
required: true
- type: textarea
attributes:
label: Describe the solution you'd like
description: A clear and concise description of what you want to happen.
placeholder: It should do [...]
validations:
required: true
- type: textarea
attributes:
label: Describe alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've considered.
placeholder: |
1. [...]
2. [...]
3. [...]
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: |
Add any other context, diagrams, illustations or screenshots about the feature request here.
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
validations:
required: false

File diff suppressed because it is too large Load Diff

View File

@@ -6,6 +6,7 @@
"instantiation": "true",
"inherits": "fdm_creality_common",
"printer_model": "Creality Ender-3",
"printer_variant": "0.2",
"printer_structure": "i3",
"default_print_profile": "0.20mm Standard @Creality Ender3 0.2",
"thumbnails": [""],

View File

@@ -6,6 +6,7 @@
"instantiation": "true",
"inherits": "fdm_creality_common",
"printer_model": "Creality Ender-3",
"printer_variant": "0.4",
"printer_structure": "i3",
"default_print_profile": "0.20mm Standard @Creality Ender3",
"thumbnails": [""],

View File

@@ -6,6 +6,7 @@
"instantiation": "true",
"inherits": "fdm_creality_common",
"printer_model": "Creality Ender-3",
"printer_variant": "0.6",
"printer_structure": "i3",
"default_print_profile": "0.20mm Standard @Creality Ender3 0.6",
"thumbnails": [""],

View File

@@ -6,6 +6,7 @@
"instantiation": "true",
"inherits": "fdm_creality_common",
"printer_model": "Creality Ender-3",
"printer_variant": "0.8",
"printer_structure": "i3",
"default_print_profile": "0.20mm Standard @Creality Ender3 0.8",
"thumbnails": [""],

View File

@@ -1,26 +0,0 @@
{
"type": "machine",
"setting_id": "GM001",
"name": "Creality Ender-3 V2 0.4 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "fdm_creality_common",
"printer_model": "Creality Ender-3 V2",
"printer_structure": "i3",
"default_filament_profile": [
"Creality Generic PLA"
],
"default_print_profile": "0.20mm Standard @Creality Ender3V2",
"nozzle_diameter": [
"0.4"
],
"printable_area": [
"0x0",
"220x0",
"220x220",
"0x220"
],
"printable_height": "250",
"nozzle_type": "undefine",
"auxiliary_fan": "0"
}

View File

@@ -6,6 +6,7 @@
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "MK3S",
"printer_variant": "0.25",
"default_filament_profile": [
"Prusa Generic PLA"
],

View File

@@ -6,6 +6,7 @@
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "MK3S",
"printer_variant": "0.4",
"default_filament_profile": [
"Prusa Generic PLA"
],

View File

@@ -6,6 +6,7 @@
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "MK3S",
"printer_variant": "0.6",
"default_filament_profile": [
"Prusa Generic PLA"
],

View File

@@ -6,6 +6,7 @@
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "MK3S",
"printer_variant": "0.8",
"default_filament_profile": [
"Prusa Generic PLA"
],

View File

@@ -205,6 +205,13 @@ var LangText = {
t104: "Nombre del perfil",
t105: "Autor del perfil",
t106: "Descripción del perfil",
t107: "Modelos en línea",
t108: "Más",
t109: "Filamentos del sistema",
t110: "Filamentos personalizados",
t111: "Crear nuevo",
t112: "Unirse al programa",
t113: "Puede cambiar su elección en preferencias en cualquier momento.",
},
de_DE: {
t1: "Willkommen im Orca Slicer",

View File

@@ -157,7 +157,7 @@ static int run_script(const std::string &script, const std::string &gcode, std::
{
// Try to obtain user's default shell
const char *shell = ::getenv("SHELL");
if (shell == nullptr) { shell = "sh"; }
if (shell == nullptr) { shell = "/bin/sh"; }
// Quote and escape the gcode path argument
std::string command { script };

View File

@@ -418,7 +418,7 @@ Vec3d extract_euler_angles(const Transform3d& transform)
void rotation_from_two_vectors(Vec3d from, Vec3d to, Vec3d& rotation_axis, double& phi, Matrix3d* rotation_matrix)
{
const Matrix3d m = Transform3d(Eigen::Quaterniond().setFromTwoVectors(from, to)).matrix().block<3, 3>(0, 0);
const Matrix3d m = Eigen::Quaterniond().setFromTwoVectors(from, to).toRotationMatrix();
const Eigen::AngleAxisd aa(m);
rotation_axis = aa.axis();
phi = aa.angle();

View File

@@ -1298,10 +1298,9 @@ public:
// BBS
void rotate(Matrix3d rotation_matrix) {
auto R = m_transformation.get_rotation_matrix().matrix().block<3, 3>(0, 0);
auto R_new = rotation_matrix * R;
auto euler_angles = Geometry::extract_euler_angles(R_new);
set_rotation(euler_angles);
auto rotation = m_transformation.get_rotation_matrix();
rotation = rotation_matrix * rotation;
set_rotation(Geometry::Transformation(rotation).get_rotation());
}
Vec3d get_scaling_factor() const { return m_transformation.get_scaling_factor(); }

View File

@@ -1246,7 +1246,7 @@ void ObjectList::list_manipulation(const wxPoint& mouse_pos, bool evt_context_me
toggle_printable_state();
else if (col_num == colSupportPaint) {
ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)item.GetID();
if (node->HasSupportPainting()) {
if (node && node->HasSupportPainting()) {
GLGizmosManager& gizmos_mgr = wxGetApp().plater()->get_view3D_canvas3D()->get_gizmos_manager();
if (gizmos_mgr.get_current_type() != GLGizmosManager::EType::FdmSupports)
gizmos_mgr.open_gizmo(GLGizmosManager::EType::FdmSupports);
@@ -1257,7 +1257,7 @@ void ObjectList::list_manipulation(const wxPoint& mouse_pos, bool evt_context_me
else if (col_num == colColorPaint) {
if (wxGetApp().plater()->get_current_canvas3D()->get_canvas_type() != GLCanvas3D::CanvasAssembleView) {
ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)item.GetID();
if (node->HasColorPainting()) {
if (node && node->HasColorPainting()) {
GLGizmosManager& gizmos_mgr = wxGetApp().plater()->get_view3D_canvas3D()->get_gizmos_manager();
if (gizmos_mgr.get_current_type() != GLGizmosManager::EType::MmuSegmentation)
gizmos_mgr.open_gizmo(GLGizmosManager::EType::MmuSegmentation);
@@ -1269,13 +1269,15 @@ void ObjectList::list_manipulation(const wxPoint& mouse_pos, bool evt_context_me
else if (col_num == colSinking) {
Plater * plater = wxGetApp().plater();
GLCanvas3D *cnv = plater->canvas3D();
Plater::TakeSnapshot(plater, "Shift objects to bed");
int obj_idx, vol_idx;
get_selected_item_indexes(obj_idx, vol_idx, item);
(*m_objects)[obj_idx]->ensure_on_bed();
cnv->reload_scene(true, true);
update_info_items(obj_idx);
notify_instance_updated(obj_idx);
if (obj_idx != -1) {
Plater::TakeSnapshot(plater, "Shift objects to bed");
(*m_objects)[obj_idx]->ensure_on_bed();
cnv->reload_scene(true, true);
update_info_items(obj_idx);
notify_instance_updated(obj_idx);
}
}
else if (col_num == colEditing) {
//show_context_menu(evt_context_menu);

View File

@@ -266,11 +266,8 @@ void GizmoObjectManipulation::change_position_value(int axis, double value)
selection.setup_cache();
TransformationType trafo_type;
trafo_type.set_relative();
switch (m_coordinates_type)
{
case ECoordinatesType::Instance: { trafo_type.set_instance(); break; }
case ECoordinatesType::Local: { trafo_type.set_local(); break; }
default: { break; }
if (selection.requires_local_axes()) {
trafo_type.set_local();
}
selection.translate(position - m_cache.position, trafo_type);
m_glcanvas.do_move(L("Set Position"));

View File

@@ -10136,23 +10136,21 @@ bool Plater::open_3mf_file(const fs::path &file_path)
}
LoadType load_type = LoadType::Unknown;
if (!model().objects.empty()) {
bool show_drop_project_dialog = true;
if (show_drop_project_dialog) {
ProjectDropDialog dlg(filename);
if (dlg.ShowModal() == wxID_OK) {
int choice = dlg.get_action();
load_type = static_cast<LoadType>(choice);
wxGetApp().app_config->set("import_project_action", std::to_string(choice));
bool show_drop_project_dialog = true;
if (show_drop_project_dialog) {
ProjectDropDialog dlg(filename);
if (dlg.ShowModal() == wxID_OK) {
int choice = dlg.get_action();
load_type = static_cast<LoadType>(choice);
wxGetApp().app_config->set("import_project_action", std::to_string(choice));
// BBS: jump to plater panel
wxGetApp().mainframe->select_tab(MainFrame::tp3DEditor);
}
} else
load_type = static_cast<LoadType>(
std::clamp(std::stoi(wxGetApp().app_config->get("import_project_action")), static_cast<int>(LoadType::OpenProject), static_cast<int>(LoadType::LoadConfig)));
// BBS: jump to plater panel
wxGetApp().mainframe->select_tab(MainFrame::tp3DEditor);
}
} else
load_type = LoadType::OpenProject;
load_type = static_cast<LoadType>(
std::clamp(std::stoi(wxGetApp().app_config->get("import_project_action")), static_cast<int>(LoadType::OpenProject), static_cast<int>(LoadType::LoadConfig)));
if (load_type == LoadType::Unknown) return false;