Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbubnikv <bubnikv@gmail.com>2017-06-21 15:10:22 +0300
committerbubnikv <bubnikv@gmail.com>2017-06-21 15:10:22 +0300
commitb12e4689e8030bf89e0759e69ce8257649316157 (patch)
tree50ae9af00f2fe4bf9f703aedec12c1f4db8fd527
parent7ca02bda0f7ab911a97e435475e05f1b113246d1 (diff)
Fix of changing the order of volumes of a multi-volume part:
The 3D preview scene was not updated properly.
-rw-r--r--lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm2
-rw-r--r--xs/xsp/GUI_3DScene.xsp18
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm b/lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm
index 42836fb3c..a3aaae400 100644
--- a/lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm
+++ b/lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm
@@ -421,6 +421,7 @@ sub on_btn_move_up {
if ($itemData && $itemData->{type} eq 'volume') {
my $volume_id = $itemData->{volume_id};
if ($self->{model_object}->move_volume_up($volume_id)) {
+ $self->{canvas}->volumes->move_volume_up($volume_id);
$self->{parts_changed} = 1;
$self->reload_tree($volume_id - 1);
}
@@ -433,6 +434,7 @@ sub on_btn_move_down {
if ($itemData && $itemData->{type} eq 'volume') {
my $volume_id = $itemData->{volume_id};
if ($self->{model_object}->move_volume_down($volume_id)) {
+ $self->{canvas}->volumes->move_volume_down($volume_id);
$self->{parts_changed} = 1;
$self->reload_tree($volume_id + 1);
}
diff --git a/xs/xsp/GUI_3DScene.xsp b/xs/xsp/GUI_3DScene.xsp
index 29fa30115..2a963b16a 100644
--- a/xs/xsp/GUI_3DScene.xsp
+++ b/xs/xsp/GUI_3DScene.xsp
@@ -90,6 +90,24 @@
void render_legacy() const;
void finalize_geometry(bool use_VBOs);
void release_geometry();
+
+ bool move_volume_up(int idx)
+ %code%{
+ if (idx > 0 && idx < int(THIS->volumes.size())) {
+ std::swap(THIS->volumes[idx-1], THIS->volumes[idx]);
+ RETVAL = true;
+ } else
+ RETVAL = false;
+ %};
+ bool move_volume_down(int idx)
+ %code%{
+ if (idx >= 0 && idx + 1 < int(THIS->volumes.size())) {
+ std::swap(THIS->volumes[idx+1], THIS->volumes[idx]);
+ RETVAL = true;
+ } else
+ RETVAL = false;
+ %};
+
%{
SV*