mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-08-21 00:48:09 +00:00
Merge remote-tracking branch 'upstream/main' into local-fp
This commit is contained in:
23
.github/ISSUE_TEMPLATE/feature_request.md
vendored
23
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -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.
|
||||
66
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
66
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal 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
@@ -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": [""],
|
||||
|
||||
@@ -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": [""],
|
||||
|
||||
@@ -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": [""],
|
||||
|
||||
@@ -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": [""],
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_machine_common",
|
||||
"printer_model": "MK3S",
|
||||
"printer_variant": "0.25",
|
||||
"default_filament_profile": [
|
||||
"Prusa Generic PLA"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_machine_common",
|
||||
"printer_model": "MK3S",
|
||||
"printer_variant": "0.4",
|
||||
"default_filament_profile": [
|
||||
"Prusa Generic PLA"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_machine_common",
|
||||
"printer_model": "MK3S",
|
||||
"printer_variant": "0.6",
|
||||
"default_filament_profile": [
|
||||
"Prusa Generic PLA"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_machine_common",
|
||||
"printer_model": "MK3S",
|
||||
"printer_variant": "0.8",
|
||||
"default_filament_profile": [
|
||||
"Prusa Generic PLA"
|
||||
],
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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(); }
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user